UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

143 lines (142 loc) 4.92 kB
/** * DevExtreme (esm/__internal/grids/new/grid_core/toolbar/controller.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 { signal } from "@preact/signals-core"; import { getContext } from "../di.test_utils"; import { OptionsControllerMock } from "../options_controller/options_controller.mock"; import { ToolbarController } from "./controller"; const setup = config => { const context = getContext(config ?? { toolbar: { visible: true } }); return { toolbarController: context.get(ToolbarController), optionsController: context.get(OptionsControllerMock) } }; describe("ToolbarController", (() => { describe("items", (() => { describe("when user items are specified", (() => { it("should contain processed toolbar items", (() => { const { toolbarController: toolbarController } = setup({ toolbar: { items: [{ location: "before" }] } }); expect(toolbarController.items.peek()).toStrictEqual([{ location: "before" }]) })) })); describe("when default items and user items are specified", (() => { it("should contain processed toolbar items", (() => { const { toolbarController: toolbarController } = setup({ toolbar: { items: ["searchPanel", { location: "before" }] } }); toolbarController.addDefaultItem(signal({ name: "searchPanel", location: "after" })); expect(toolbarController.items.peek()).toStrictEqual([{ name: "searchPanel", location: "after" }, { location: "before" }]) })) })) })); describe("addDefaultItem", (() => { it("should add new default item to items", (() => { const { toolbarController: toolbarController } = setup(); toolbarController.addDefaultItem(signal({ name: "searchPanel", location: "after" })); expect(toolbarController.items.peek()).toStrictEqual([{ name: "searchPanel", location: "after" }]) })); it("item should toggle default item when needUpdate changes", (() => { const { toolbarController: toolbarController } = setup(); const needRender = signal(true); toolbarController.addDefaultItem(signal({ name: "searchPanel", location: "after" }), needRender); expect(toolbarController.items.peek()).toStrictEqual([{ name: "searchPanel", location: "after" }]); needRender.value = false; expect(toolbarController.items.peek()).toStrictEqual([]); needRender.value = true; expect(toolbarController.items.peek()).toStrictEqual([{ name: "searchPanel", location: "after" }]) })); it("should add item with order specified in consts", (() => { const { toolbarController: toolbarController } = setup(); const needRender = signal(true); toolbarController.addDefaultItem(signal({ name: "addCardButton" }), needRender); toolbarController.addDefaultItem(signal({ name: "searchPanel" }), signal(true)); expect(toolbarController.items.peek()).toStrictEqual([{ name: "addCardButton" }, { name: "searchPanel" }]); needRender.value = false; expect(toolbarController.items.peek()).toStrictEqual([{ name: "searchPanel" }]); needRender.value = true; expect(toolbarController.items.peek()).toStrictEqual([{ name: "addCardButton" }, { name: "searchPanel" }]) })) })) }));