From 1a50a37455d22558275dcfa7132a15e7dda6ced3 Mon Sep 17 00:00:00 2001 From: "anna.shakhova" Date: Fri, 23 Jan 2026 16:37:58 +0100 Subject: [PATCH] GridCore: fix data controller odata test --- .../data_controller/data_controller.test.ts | 45 +++++++++++++++++-- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/packages/devextreme/js/__internal/grids/new/grid_core/data_controller/data_controller.test.ts b/packages/devextreme/js/__internal/grids/new/grid_core/data_controller/data_controller.test.ts index 3ca473caea03..675646dfc121 100644 --- a/packages/devextreme/js/__internal/grids/new/grid_core/data_controller/data_controller.test.ts +++ b/packages/devextreme/js/__internal/grids/new/grid_core/data_controller/data_controller.test.ts @@ -1,5 +1,9 @@ -import { describe, expect, it } from '@jest/globals'; +import { + describe, expect, it, jest, +} from '@jest/globals'; import { CustomStore } from '@js/common/data'; +import ajax from '@js/core/utils/ajax'; +import { Deferred } from '@js/core/utils/deferred'; import { getContext } from '../di.test_utils'; import type { Options } from '../options'; @@ -97,6 +101,21 @@ describe('DataController', () => { describe('regressions', () => { it('should work good with odata store', async () => { + const sendRequestSpy = jest.spyOn(ajax, 'sendRequest').mockImplementation(() => { + const response = { + d: { + results: [{ Product_ID: 1 }, { Product_ID: 2 }, { Product_ID: 3 }], + __count: 10, + }, + }; + + // @ts-expect-error + const deferred = new Deferred(); + deferred.resolve(response, 'success'); + + return deferred.promise(); + }); + const { dataController } = setup({ dataSource: { store: { @@ -122,18 +141,36 @@ describe('DataController', () => { }, }); - const getCurrentItemIds = () => dataController.items.value.map((item) => item.Product_ID); + const expectedFilter = 'Product_Current_Inventory gt 0'; + const expectedSelect = 'Product_ID,Product_Name,Product_Cost,Product_Sale_Price,Product_Retail_Price,Product_Current_Inventory'; await dataController.waitLoaded(); expect(dataController.pageIndex.value).toBe(0); - expect(getCurrentItemIds()).toEqual([1, 2, 4]); + expect(sendRequestSpy).toHaveBeenCalledTimes(1); + expect(sendRequestSpy).toHaveBeenLastCalledWith(expect.objectContaining({ + data: expect.objectContaining({ + $top: 3, + $filter: expectedFilter, + $select: expectedSelect, + }), + })); dataController.pageIndex.value = 1; await dataController.waitLoaded(); expect(dataController.pageIndex.value).toBe(1); - expect(getCurrentItemIds()).toEqual([5, 6, 7]); + expect(sendRequestSpy).toHaveBeenCalledTimes(2); + expect(sendRequestSpy).toHaveBeenLastCalledWith(expect.objectContaining({ + data: expect.objectContaining({ + $top: 3, + $skip: 3, + $filter: expectedFilter, + $select: expectedSelect, + }), + })); + + sendRequestSpy.mockRestore(); }); }); });