devextreme
Version:
JavaScript/TypeScript Component Suite for Responsive Web Development
182 lines (180 loc) • 8.44 kB
JavaScript
/**
* 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("")
})
})
});