devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
122 lines (121 loc) • 4.5 kB
JavaScript
/**
* 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)
}))
}))
}));