UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

182 lines (180 loc) • 8.44 kB
/** * DevExtreme (cjs/__internal/scheduler/appointments_new/appointment/grid_appointment.test.js) * Version: 25.2.8 * Build date: Mon Jun 08 2026 * * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; var _globals = require("@jest/globals"); var _renderer = _interopRequireDefault(require("../../../../core/renderer")); var _fx = _interopRequireDefault(require("../../../common/core/animation/fx")); var _base_appointment_view = require("../__mock__/base_appointment_view"); var _const = require("../const"); var _grid_appointment = require("./grid_appointment"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const getProperties = appointmentData => { const baseProperties = (0, _base_appointment_view.getBaseAppointmentViewProperties)(appointmentData); return Object.assign({}, baseProperties, { geometry: { top: 0, left: 0, width: 0, height: 0 }, modifiers: { empty: false } }) }; const createGridAppointment = async properties => { const $element = (0, _renderer.default)(".root"); const instance = new _grid_appointment.GridAppointmentView($element, properties); await new Promise(process.nextTick); return instance }; const defaultAppointmentData = { title: "Test appointment", startDate: new Date(2024, 0, 1, 9, 0), endDate: new Date(2024, 0, 1, 10, 0) }; (0, _globals.describe)("GridAppointment", () => { (0, _globals.beforeEach)(() => { _fx.default.off = true; const $container = (0, _renderer.default)("<div>").addClass("container").appendTo(document.body); (0, _renderer.default)("<div>").addClass("root").appendTo($container) }); (0, _globals.afterEach)(() => { (0, _renderer.default)(".container").remove(); document.body.innerHTML = ""; _fx.default.off = false; _globals.jest.useRealTimers() }); (0, _globals.describe)("Classes", () => { (0, _globals.it)("should have container class", async () => { const instance = await createGridAppointment(getProperties(defaultAppointmentData)); (0, _globals.expect)(instance.$element().hasClass(_const.APPOINTMENT_CLASSES.CONTAINER)).toBe(true) }); _globals.it.each([true, false])("should have correct empty class for modifiers.empty = %o", async empty => { const instance = await createGridAppointment(Object.assign({}, getProperties(defaultAppointmentData), { modifiers: { empty: empty } })); (0, _globals.expect)(instance.$element().hasClass(_const.APPOINTMENT_TYPE_CLASSES.EMPTY)).toBe(empty) }); (0, _globals.it)("should have has-resource class when resource color is applied", async () => { const instance = await createGridAppointment(Object.assign({}, getProperties(defaultAppointmentData), { getResourceColor: () => Promise.resolve("red") })); (0, _globals.expect)(instance.$element().hasClass(_const.APPOINTMENT_TYPE_CLASSES.HAS_RESOURCE)).toBe(true) }) }); (0, _globals.describe)("Title", () => { _globals.it.each([{ text: "Test title", expected: "Test title" }, { text: void 0, expected: "(No subject)" }, { text: "", expected: "(No subject)" }])("should have correct title text for appointment text = %o", async _ref => { let { text: text, expected: expected } = _ref; const instance = await createGridAppointment(getProperties(Object.assign({}, defaultAppointmentData, { text: text }))); const $title = instance.$element().find(`.${_const.APPOINTMENT_CLASSES.TITLE}`); (0, _globals.expect)($title.text()).toBe(expected) }) }); (0, _globals.describe)("Date text", () => { (0, _globals.it)("should have correct date text", async () => { const instance = await createGridAppointment(getProperties(Object.assign({}, defaultAppointmentData, { startDate: new Date(2024, 0, 1, 9, 0), endDate: new Date(2024, 0, 1, 10, 0) }))); const $date = instance.$element().find(`.${_const.APPOINTMENT_CLASSES.DATE}`); (0, _globals.expect)($date.text()).toBe("9:00 AM - 10:00 AM") }) }); (0, _globals.describe)("Geometry", () => { (0, _globals.it)("should apply geometry on init", async () => { const instance = await createGridAppointment(Object.assign({}, getProperties(defaultAppointmentData), { geometry: { top: 10, left: 15, width: 100, height: 50 } })); const $element = instance.$element(); (0, _globals.expect)($element.css("top")).toBe("10px"); (0, _globals.expect)($element.css("left")).toBe("15px"); (0, _globals.expect)($element.css("width")).toBe("100px"); (0, _globals.expect)($element.css("height")).toBe("50px") }); (0, _globals.it)("should apply new geometry when resize() is called", async () => { const instance = await createGridAppointment(Object.assign({}, getProperties(defaultAppointmentData), { geometry: { top: 10, left: 15, width: 100, height: 50 } })); instance.resize({ top: 20, left: 25, width: 150, height: 70 }); const $element = instance.$element(); (0, _globals.expect)($element.css("top")).toBe("20px"); (0, _globals.expect)($element.css("left")).toBe("25px"); (0, _globals.expect)($element.css("width")).toBe("150px"); (0, _globals.expect)($element.css("height")).toBe("70px") }) }); (0, _globals.describe)("Recurrence", () => { _globals.it.each([true, false])("should have correct recurrence icon visibility for isRecurring = %o", async isRecurring => { const instance = await createGridAppointment(getProperties(Object.assign({}, defaultAppointmentData, { recurrenceRule: isRecurring ? "FREQ=DAILY" : void 0 }))); const $icon = instance.$element().find(`.${_const.APPOINTMENT_CLASSES.RECURRENCE_ICON}`); (0, _globals.expect)($icon.length).toBe(isRecurring ? 1 : 0) }) }); (0, _globals.describe)("All day", () => { _globals.it.each([true, false])("should have correct all day text visibility for allDay = %o", async allDay => { const instance = await createGridAppointment(getProperties(Object.assign({}, defaultAppointmentData, { allDay: allDay }))); const $allDayText = instance.$element().find(`.${_const.APPOINTMENT_CLASSES.ALL_DAY_TEXT}`); (0, _globals.expect)($allDayText.length).toBe(allDay ? 1 : 0) }) }); (0, _globals.describe)("Resources", () => { (0, _globals.it)("should apply resource color", async () => { const instance = await createGridAppointment(Object.assign({}, getProperties(defaultAppointmentData), { getResourceColor: () => Promise.resolve("red") })); (0, _globals.expect)(instance.$element().css("backgroundColor")).toBe("red") }); (0, _globals.it)("should not have background-color css when no resource", async () => { const instance = await createGridAppointment(Object.assign({}, getProperties(defaultAppointmentData), { getResourceColor: () => Promise.resolve(void 0) })); (0, _globals.expect)(instance.$element().css("backgroundColor")).toBe("") }) }) });