devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
228 lines (227 loc) • 10 kB
JavaScript
/**
* DevExtreme (cjs/__internal/scheduler/appointment_popup/customize_form_items.test.js)
* Version: 25.2.5
* Build date: Fri Feb 20 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 _m_customize_form_items = require("./m_customize_form_items");
const subjectGroup = {
name: "subjectGroup",
itemType: "group",
cssClass: "dx-scheduler-form-subject-group dx-scheduler-form-group-with-icon"
};
const dateGroup = {
name: "dateGroup",
itemType: "group",
cssClass: "dx-scheduler-form-date-range-group dx-scheduler-form-group-with-icon"
};
const repeatGroup = {
name: "repeatGroup",
itemType: "group",
cssClass: "dx-scheduler-form-repeat-group dx-scheduler-form-group-with-icon"
};
const resourcesGroup = {
name: "resourcesGroup",
itemType: "group",
cssClass: "dx-scheduler-form-resources-group dx-scheduler-form-group-with-icon"
};
const descriptionGroup = {
name: "descriptionGroup",
itemType: "group",
cssClass: "dx-scheduler-form-description-group dx-scheduler-form-group-with-icon"
};
const mainGroup = {
items: [subjectGroup, dateGroup, repeatGroup, resourcesGroup, descriptionGroup],
name: "mainGroup",
itemType: "group",
cssClass: "dx-scheduler-form-main-group",
colSpan: 1
};
const recurrenceGroup = {
name: "recurrenceGroup",
itemType: "group",
cssClass: "dx-scheduler-form-recurrence-group dx-scheduler-form-recurrence-hidden",
colSpan: 1
};
const mainTestCase = [mainGroup, recurrenceGroup];
(0, _globals.describe)("customizeFormItems", (() => {
(0, _globals.it)("should return original items when no customization provided", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase);
(0, _globals.expect)(result).toEqual(mainTestCase)
}));
(0, _globals.it)("should not mutate original data", (() => {
var _mainGroup$items, _mainGroup$items2;
const originalMainTestCase = JSON.parse(JSON.stringify(mainTestCase));
const originalMainGroup = JSON.parse(JSON.stringify(mainGroup));
const originalSubjectGroup = JSON.parse(JSON.stringify(subjectGroup));
(0, _globals.expect)(mainGroup.items).toBe(mainGroup.items);
(0, _m_customize_form_items.customizeFormItems)(mainTestCase, ["mainGroup"]);
(0, _m_customize_form_items.customizeFormItems)(mainTestCase, ["subjectGroup", "dateGroup"]);
(0, _m_customize_form_items.customizeFormItems)(mainTestCase, [{
name: "mainGroup",
items: []
}]);
(0, _m_customize_form_items.customizeFormItems)(mainTestCase, [{
name: "mainGroup",
items: ["subjectGroup"]
}]);
(0, _globals.expect)(mainTestCase).toEqual(originalMainTestCase);
(0, _globals.expect)(mainGroup).toEqual(originalMainGroup);
(0, _globals.expect)(subjectGroup).toEqual(originalSubjectGroup);
(0, _globals.expect)(mainGroup.items).toHaveLength(5);
(0, _globals.expect)(null === (_mainGroup$items = mainGroup.items) || void 0 === _mainGroup$items ? void 0 : _mainGroup$items[0]).toBe(subjectGroup);
(0, _globals.expect)(null === (_mainGroup$items2 = mainGroup.items) || void 0 === _mainGroup$items2 ? void 0 : _mainGroup$items2[1]).toBe(dateGroup)
}));
(0, _globals.it)("should show only mainGroup when specified by object", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, [{
name: "mainGroup"
}]);
(0, _globals.expect)(result).toEqual([mainGroup])
}));
(0, _globals.it)("should show only mainGroup when specified by string", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, ["mainGroup"]);
(0, _globals.expect)(result).toEqual([mainGroup])
}));
(0, _globals.it)("should extract specific items from parent group", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, ["subjectGroup", "dateGroup"]);
(0, _globals.expect)(result).toEqual([subjectGroup, dateGroup])
}));
(0, _globals.it)("should create empty mainGroup when items array is empty", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, [{
name: "mainGroup",
items: [],
visible: false
}]);
(0, _globals.expect)(result).toEqual([Object.assign({}, mainGroup, {
items: [],
visible: false
})])
}));
(0, _globals.it)("should change order of top-level groups", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, ["recurrenceGroup", "mainGroup"]);
(0, _globals.expect)(result).toEqual([recurrenceGroup, mainGroup])
}));
(0, _globals.it)("should extract item from group and change order", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, ["subjectGroup", "recurrenceGroup", "mainGroup"]);
const expectedMainGroup = Object.assign({}, mainGroup, {
items: [dateGroup, repeatGroup, resourcesGroup, descriptionGroup]
});
(0, _globals.expect)(result).toEqual([subjectGroup, recurrenceGroup, expectedMainGroup])
}));
(0, _globals.it)("should extract multiple items from parent group", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, ["subjectGroup", "repeatGroup", "mainGroup"]);
const expectedMainGroup = Object.assign({}, mainGroup, {
items: [dateGroup, resourcesGroup, descriptionGroup]
});
(0, _globals.expect)(result).toEqual([subjectGroup, repeatGroup, expectedMainGroup])
}));
(0, _globals.it)("should create custom form item when name not found", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, ["customItem"]);
(0, _globals.expect)(result).toEqual([{
name: "customItem",
itemType: "simple",
dataField: "customItem",
editorType: "dxTextBox"
}])
}));
(0, _globals.it)("should create custom group with children", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, [{
name: "customGroup",
itemType: "group",
items: ["child1", "child2"]
}]);
(0, _globals.expect)(result).toEqual([{
name: "customGroup",
itemType: "group",
items: [{
name: "child1",
itemType: "simple",
dataField: "child1",
editorType: "dxTextBox"
}, {
name: "child2",
itemType: "simple",
dataField: "child2",
editorType: "dxTextBox"
}]
}])
}));
(0, _globals.it)("should create custom group with visibility control", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, [{
name: "hiddenGroup",
itemType: "group",
visible: false,
items: ["field1"]
}]);
(0, _globals.expect)(result).toEqual([{
name: "hiddenGroup",
itemType: "group",
visible: false,
items: [{
name: "field1",
itemType: "simple",
dataField: "field1",
editorType: "dxTextBox"
}]
}])
}));
(0, _globals.it)("should customize mainGroup with specific items as array", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, [{
name: "mainGroup",
items: ["subjectGroup", "dateGroup"]
}]);
(0, _globals.expect)(result).toEqual([Object.assign({}, mainGroup, {
items: [subjectGroup, dateGroup]
})])
}));
(0, _globals.it)("should customize mainGroup with specific items as objects", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, [{
name: "mainGroup",
items: [{
name: "subjectGroup"
}, {
name: "dateGroup"
}]
}]);
(0, _globals.expect)(result).toEqual([Object.assign({}, mainGroup, {
items: [subjectGroup, dateGroup]
})])
}));
(0, _globals.it)("should create nested custom groups", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, [{
name: "mainGroup",
items: [{
name: "several",
itemType: "group",
items: ["subjectGroup"]
}, "dateGroup"]
}]);
(0, _globals.expect)(result).toEqual([Object.assign({}, mainGroup, {
items: [{
name: "several",
itemType: "group",
items: [subjectGroup]
}, dateGroup]
})])
}));
(0, _globals.it)("should set item visibility property", (() => {
const result = (0, _m_customize_form_items.customizeFormItems)(mainTestCase, [{
name: "mainGroup",
items: [{
name: "subjectGroup",
visible: false
}, {
name: "dateGroup"
}]
}]);
(0, _globals.expect)(result).toEqual([Object.assign({}, mainGroup, {
items: [Object.assign({}, subjectGroup, {
visible: false
}), dateGroup]
})])
}))
}));