UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

122 lines (121 loc) 4.5 kB
/** * DevExtreme (esm/__internal/scheduler/utils/loader/loader.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 { DataSource } from "../../../data/data_source/m_data_source"; import CustomStore from "../../../data/m_custom_store"; import { Loader } from "./loader"; const data = ["one", "two"]; const transformedData = ["one_transformed", "two_transformed"]; class BaseLoader extends Loader { constructor(config) { super(config, { pageSize: 0 }); this.onInit() } onLoadTransform(items) { return items.map((item => `${item}_transformed`)) } onLoadError() {} onChange() {} } describe("resource loader", (() => { describe("Array", (() => { it("should unwrap resources on load and dispose datasource", (async () => { var _loader$dataSource; const loader = new BaseLoader({ dataSource: data }); await loader.load(); expect(loader.items).toEqual(transformedData); expect(loader.data).toEqual(data); loader.dispose(); expect(loader.items).toEqual([]); expect(loader.data).toEqual([]); expect(null === (_loader$dataSource = loader.dataSource) || void 0 === _loader$dataSource ? void 0 : _loader$dataSource.items()).toBe(void 0) })) })); describe("DataSource", (() => { it("should unwrap resources on load and shouldn't dispose external datasource", (async () => { var _loader$dataSource2; const dataSource = new DataSource({ store: new CustomStore({ load: () => data }) }); const loader = new BaseLoader({ dataSource: dataSource }); await loader.load(); expect(loader.items).toEqual(transformedData); expect(loader.data).toEqual(data); loader.dispose(); expect(loader.items).toEqual([]); expect(loader.data).toEqual([]); expect(null === (_loader$dataSource2 = loader.dataSource) || void 0 === _loader$dataSource2 ? void 0 : _loader$dataSource2.items()).toBe(data) })); it("should load resource data only once", (async () => { let loadCount = 0; const dataSource = new DataSource({ store: new CustomStore({ load: () => { loadCount += 1; return data } }) }); const loader = new BaseLoader({ dataSource: dataSource }); expect(loader.isLoaded()).toBe(false); await Promise.all([loader.load(), loader.load()]); await loader.load(); expect(loader.data).toEqual(data); expect(loader.items).toEqual(transformedData); expect(loader.isLoaded()).toBe(true); expect(loadCount).toBe(1) })); it("should fill items initially for loaded dataSource", (async () => { const dataSource = new DataSource({ store: new CustomStore({ load: () => data }) }); await dataSource.load(); const loader = new BaseLoader({ dataSource: dataSource }); expect(loader.isLoaded()).toBe(true); expect(loader.data).toEqual(data); expect(loader.items).toEqual(transformedData) })); it("should fill items for dataSource loaded externally", (async () => { const dataSource = new DataSource({ store: new CustomStore({ load: () => data }) }); const loader = new BaseLoader({ dataSource: dataSource }); await dataSource.load(); expect(loader.isLoaded()).toBe(true); expect(loader.data).toEqual(data); expect(loader.items).toEqual(transformedData) })) })) }));