UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

252 lines (251 loc) • 9.34 kB
/** * DevExtreme (esm/__internal/scheduler/utils/resource_manager/appointment_groups_utils.test.js) * Version: 25.1.3 * Build date: Wed Jun 25 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import { describe, expect, it } from "@jest/globals"; import { complexIdResourceMock, getResourceManagerMock, resourceIndexesMock, resourceItemsByIdMock } from "../../../scheduler/__mock__/resourceManager.mock"; import { getAppointmentGroupIndex, getAppointmentGroupValues, getAppointmentResources, getRawAppointmentGroupValues, getResourceItemById, getSafeGroupValues, groupAppointmentsByGroupLeafs, setAppointmentGroupValues } from "./appointment_groups_utils"; describe("appointment groups utils", (() => { describe("getResourceItemById", (() => { it("should return resource item by id", (() => { const manager = getResourceManagerMock(); expect(getResourceItemById(manager.resourceById.assigneeId, 1)).toEqual(manager.resourceById.assigneeId.items[0]) })); it("should return undefined for unreached item", (() => { const manager = getResourceManagerMock(complexIdResourceMock); expect(getResourceItemById(manager.resources[0], { _value: "guid-2" })).toEqual(manager.resources[0].items[1]) })); it("should return resource item by complex id", (() => { const manager = getResourceManagerMock(); expect(getResourceItemById(manager.resourceById.assigneeId, 10)).toEqual(void 0) })) })); describe("getAppointmentGroupValues", (() => { it("should return appointment group array values", (() => { const manager = getResourceManagerMock(); expect(getAppointmentGroupValues({ assigneeId: [1, 2], roomId: 3, nested: { priorityId: 1 } }, manager.resources)).toEqual({ assigneeId: [1, 2], roomId: [3], "nested.priorityId": [1] }) })) })); describe("getRawAppointmentGroupValues", (() => { it("should return appointment group initial values", (() => { const manager = getResourceManagerMock(); expect(getRawAppointmentGroupValues({ assigneeId: [1, 2], roomId: 3, nested: { priorityId: 1 } }, manager.resources)).toEqual({ assigneeId: [1, 2], roomId: 3, "nested.priorityId": 1 }) })) })); describe("getSafeGroupValues", (() => { it("should return appointment group array values", (() => { expect(getSafeGroupValues({ assigneeId: [1, 2], roomId: 3, "nested.priorityId": 1 })).toEqual({ assigneeId: [1, 2], roomId: [3], "nested.priorityId": [1] }) })) })); describe("getAppointmentResources", (() => { it("should return appointment resource texts in order as in appointment", (async () => { const manager = getResourceManagerMock(); await manager.loadGroupResources(resourceIndexesMock); expect(getAppointmentResources({ assigneeId: [4, 1, 2], roomId: [2], "nested.priorityId": [1] }, manager.resourceById)).toEqual([{ label: "Assignee", values: ["Sandra Johnson", "Samantha Bright", "John Heart"] }, { label: "Room", values: ["Room 3"] }, { label: "Priority", values: ["Low Priority"] }]) })); it("label can be undefined if not specified", (async () => { const manager = getResourceManagerMock([{ field: "roomId", dataSource: resourceItemsByIdMock.roomId, allowMultiple: true }]); await manager.loadGroupResources(resourceIndexesMock); expect(getAppointmentResources({ roomId: [2, 0] }, manager.resourceById)).toEqual([{ label: void 0, values: ["Room 3", "Room 1"] }]) })); it("should return appointment resource texts with complex ids", (async () => { const manager = getResourceManagerMock(complexIdResourceMock); await manager.loadGroupResources(["ownerId"]); expect(getAppointmentResources({ ownerId: [{ _value: "guid-2" }, { _value: "guid-3" }, { _value: "guid-1" }] }, manager.resourceById)).toEqual([{ label: void 0, values: ["two", "three", "one"] }]) })) })); describe("setAppointmentGroupValues", (() => { it("should set nothing", (() => { const appointment = { something: 1 }; const manager = getResourceManagerMock(); setAppointmentGroupValues(appointment, manager.resourceById, void 0); expect(appointment).toEqual(appointment) })); it("should set appointment group values", (() => { const appointment = {}; const manager = getResourceManagerMock(); setAppointmentGroupValues(appointment, manager.resourceById, { assigneeId: 1, roomId: 2, "nested.priorityId": 1 }); expect(appointment).toEqual({ assigneeId: [1], roomId: 2, nested: { priorityId: 1 } }) })) })); describe("getAppointmentGroupIndex", (() => { it("should return appointment group indexes", (async () => { const manager = getResourceManagerMock(); await manager.loadGroupResources(resourceIndexesMock); expect(getAppointmentGroupIndex({ assigneeId: [1, 2], roomId: [2], "nested.priorityId": [1] }, manager.groupsLeafs)).toEqual([2, 5]) })) })); describe("groupAppointmentsByGroupLeafs", (() => { it("should return appointment grouped by leafs (rare appointments)", (async () => { const appointments = [{ assigneeId: [1], nested: { priorityId: 1 } }]; const manager = getResourceManagerMock(); await manager.loadGroupResources(["assigneeId", "nested.priorityId"]); expect(groupAppointmentsByGroupLeafs(manager.resourceById, manager.groupsLeafs, appointments)).toEqual([ [appointments[0]], [], [], [], [], [], [], [] ]) })); it("should return appointment grouped by leafs", (async () => { const appointments = [{ assigneeId: [1, 2], nested: { priorityId: 1 } }, { assigneeId: [2], nested: { priorityId: 1 } }, { assigneeId: [3, 4], nested: { priorityId: 2 } }]; const manager = getResourceManagerMock(); await manager.loadGroupResources(["assigneeId", "nested.priorityId"]); expect(groupAppointmentsByGroupLeafs(manager.resourceById, manager.groupsLeafs, appointments)).toEqual([ [appointments[0]], [], [appointments[0], appointments[1]], [], [], [appointments[2]], [], [appointments[2]] ]) })); it("should return appointments for no grouping", (() => { const appointments = [{ assigneeId: [1, 2], nested: { priorityId: 1 } }, { assigneeId: [2], nested: { priorityId: 1 } }, { assigneeId: [3, 4], nested: { priorityId: 2 } }]; const manager = getResourceManagerMock(); expect(groupAppointmentsByGroupLeafs(manager.resourceById, manager.groupsLeafs, appointments)).toEqual([appointments]) })) })) }));