UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

160 lines (159 loc) 5.67 kB
/** * DevExtreme (esm/__internal/scheduler/view_model/preparation/utils/get_minimal_appointments.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/ */ import { describe, expect, it } from "@jest/globals"; import { mockAppointmentDataAccessor, mockUppercaseFieldExpressions } from "../../../__mock__/appointment_data_accessor.mock"; import { createTimeZoneCalculator } from "../../../r1/timezone_calculator"; import { AppointmentDataAccessor } from "../../../utils/data_accessor/appointment_data_accessor"; import { getMinimalAppointments } from "./get_minimal_appointments"; describe("getMinimalAppointments", () => { it("should prepare correct recurrence appointment", () => { const data = [{ startDate: new Date(2021, 9, 8), endDate: new Date(2021, 9, 9), recurrenceRule: "FREQ=WEEKLY" }]; const expectedResult = { allDay: false, source: { startDate: data[0].startDate.getTime(), endDate: data[0].endDate.getTime() }, hasRecurrenceRule: true, itemData: data[0], recurrenceException: void 0, recurrenceRule: "FREQ=WEEKLY", visible: true, disabled: false }; const result = getMinimalAppointments(data, { dataAccessors: mockAppointmentDataAccessor, timeZoneCalculator: createTimeZoneCalculator("") }); expect(result).toEqual([expectedResult]) }); [null, void 0, ""].forEach(recurrenceRule => { it(`should prepare correct data items if recurrenceRule=${recurrenceRule}`, () => { const data = [{ startDate: new Date(2021, 9, 8), endDate: new Date(2021, 9, 9), recurrenceRule: recurrenceRule }]; const expectedResult = { allDay: false, source: { startDate: data[0].startDate.getTime(), endDate: data[0].endDate.getTime() }, hasRecurrenceRule: false, itemData: data[0], recurrenceException: void 0, recurrenceRule: recurrenceRule, visible: true, disabled: false }; const result = getMinimalAppointments(data, { dataAccessors: mockAppointmentDataAccessor, timeZoneCalculator: createTimeZoneCalculator("") }); expect(result).toEqual([expectedResult]) }) }); [{ visible: null, expected: true }, { visible: void 0, expected: true }, { visible: true, expected: true }, { visible: false, expected: false }].forEach(_ref => { let { visible: visible, expected: expected } = _ref; it(`should correctly set visible if appointment visible is ${visible}`, () => { const data = [{ startDate: new Date(2021, 9, 8), endDate: new Date(2021, 9, 9), visible: visible }]; const result = getMinimalAppointments(data, { dataAccessors: mockAppointmentDataAccessor, timeZoneCalculator: createTimeZoneCalculator("") }); expect(result).toMatchObject([{ visible: expected }]) }) }); it("should return timezones of start date and end date if them exists", () => { const expectedTimezones = { startDateTimeZone: "Etc/GMT+10", endDateTimeZone: "Etc/GMT-10" }; const data = [Object.assign({ startDate: new Date(2021, 9, 8), endDate: new Date(2021, 9, 9) }, expectedTimezones)]; const result = getMinimalAppointments(data, { dataAccessors: mockAppointmentDataAccessor, timeZoneCalculator: createTimeZoneCalculator("") }); expect(result).toMatchObject([expectedTimezones]) }); it("should access appointment fields by accessor", () => { const data = [{ AllDay: true, StartDate: new Date(2021, 9, 8), EndDate: new Date(2021, 9, 9), RecurrenceRule: "FREQ=WEEKLY", RecurrenceException: "1324400000", StartDateTimeZone: "Etc/GMT+10", EndDateTimeZone: "Etc/GMT-10", Disabled: true, Visible: false }]; const result = getMinimalAppointments(data, { dataAccessors: new AppointmentDataAccessor(mockUppercaseFieldExpressions, true), timeZoneCalculator: createTimeZoneCalculator("") }); expect(result).toEqual([{ allDay: true, source: { startDate: data[0].StartDate.getTime(), endDate: data[0].EndDate.getTime() }, startDateTimeZone: "Etc/GMT+10", endDateTimeZone: "Etc/GMT-10", recurrenceRule: "FREQ=WEEKLY", recurrenceException: "1324400000", hasRecurrenceRule: true, visible: false, disabled: true, itemData: data[0] }]) }) });