Skip to content

Commit b209057

Browse files
authored
Test refactoring (#32336)
1 parent 7410958 commit b209057

File tree

7 files changed

+111
-271
lines changed

7 files changed

+111
-271
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { jest } from '@jest/globals';
2+
import fx from '@js/common/core/animation/fx';
3+
import type { dxElementWrapper } from '@js/core/renderer';
4+
import $ from '@js/core/renderer';
5+
import type { Properties as DataGridProperties } from '@js/ui/data_grid';
6+
import DataGrid from '@js/ui/data_grid';
7+
import { DataGridModel } from '@ts/grids/data_grid/__tests__/__mock__/model/data_grid';
8+
9+
export const SELECTORS = {
10+
gridContainer: '#gridContainer',
11+
};
12+
13+
export const GRID_CONTAINER_ID = 'gridContainer';
14+
15+
export const createDataGrid = async (
16+
options: DataGridProperties = {},
17+
): Promise<{
18+
$container: dxElementWrapper;
19+
component: DataGridModel;
20+
instance: DataGrid;
21+
}> => new Promise((resolve) => {
22+
const $container = $('<div>')
23+
.attr('id', GRID_CONTAINER_ID)
24+
.appendTo(document.body);
25+
26+
const dataGridOptions: DataGridProperties = {
27+
keyExpr: 'id',
28+
...options,
29+
};
30+
31+
const instance = new DataGrid($container.get(0) as HTMLDivElement, dataGridOptions);
32+
const component = new DataGridModel($container.get(0) as HTMLElement);
33+
34+
jest.runAllTimers();
35+
36+
resolve({
37+
$container,
38+
component,
39+
instance,
40+
});
41+
});
42+
43+
export const beforeTest = (): void => {
44+
fx.off = true;
45+
jest.useFakeTimers();
46+
};
47+
48+
export const afterTest = (): void => {
49+
const $container = $(SELECTORS.gridContainer);
50+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
51+
const dataGrid = ($container as any).dxDataGrid('instance') as DataGrid;
52+
53+
dataGrid?.dispose();
54+
$container.remove();
55+
jest.clearAllMocks();
56+
jest.useRealTimers();
57+
fx.off = false;
58+
};
59+
60+
export const flushAsync = async (): Promise<void> => {
61+
jest.runAllTimers();
62+
await Promise.resolve();
63+
};

packages/devextreme/js/__internal/grids/grid_core/__tests__/grid.integration.test.ts

Lines changed: 6 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,12 @@
11
import {
2-
afterEach, beforeEach, describe, expect, it, jest,
2+
afterEach, beforeEach, describe, expect, it,
33
} from '@jest/globals';
4-
import fx from '@js/common/core/animation/fx';
5-
import type { dxElementWrapper } from '@js/core/renderer';
6-
import $ from '@js/core/renderer';
7-
import type { Properties as DataGridProperties } from '@js/ui/data_grid';
8-
import DataGrid from '@js/ui/data_grid';
9-
import { DataGridModel } from '@ts/grids/data_grid/__tests__/__mock__/model/data_grid';
104

11-
const SELECTORS = {
12-
gridContainer: '#gridContainer',
13-
};
14-
15-
const GRID_CONTAINER_ID = 'gridContainer';
16-
17-
const createDataGrid = async (
18-
options: DataGridProperties = {},
19-
): Promise<{
20-
$container: dxElementWrapper;
21-
component: DataGridModel;
22-
instance: DataGrid;
23-
}> => new Promise((resolve) => {
24-
const $container = $('<div>')
25-
.attr('id', GRID_CONTAINER_ID)
26-
.appendTo(document.body);
27-
28-
const dataGridOptions: DataGridProperties = {
29-
keyExpr: 'id',
30-
...options,
31-
};
32-
33-
const instance = new DataGrid($container.get(0) as HTMLDivElement, dataGridOptions);
34-
const component = new DataGridModel($container.get(0) as HTMLElement);
35-
36-
jest.runAllTimers();
37-
38-
resolve({
39-
$container,
40-
component,
41-
instance,
42-
});
43-
});
44-
45-
const beforeTest = (): void => {
46-
fx.off = true;
47-
jest.useFakeTimers();
48-
};
49-
50-
const afterTest = (): void => {
51-
const $container = $(SELECTORS.gridContainer);
52-
const dataGrid = ($container as any).dxDataGrid('instance') as DataGrid;
53-
54-
dataGrid.dispose();
55-
$container.remove();
56-
jest.clearAllMocks();
57-
jest.useRealTimers();
58-
fx.off = false;
59-
};
5+
import {
6+
afterTest,
7+
beforeTest,
8+
createDataGrid,
9+
} from './__mock__/helpers/utils';
6010

6111
describe('Grid', () => {
6212
beforeEach(beforeTest);

packages/devextreme/js/__internal/grids/grid_core/column_chooser/__tests__/column_chooser.integration.test.ts

Lines changed: 10 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,20 @@
11
import {
22
afterEach, beforeEach, describe, expect, it, jest,
33
} from '@jest/globals';
4-
import type { dxElementWrapper } from '@js/core/renderer';
5-
import $ from '@js/core/renderer';
6-
import type { Properties as DataGridProperties } from '@js/ui/data_grid';
7-
import DataGrid from '@js/ui/data_grid';
84
import errors from '@js/ui/widget/ui.errors';
9-
import { DataGridModel } from '@ts/grids/data_grid/__tests__/__mock__/model/data_grid';
105

11-
const SELECTORS = {
12-
gridContainer: '#gridContainer',
13-
};
14-
15-
const GRID_CONTAINER_ID = 'gridContainer';
16-
17-
const createDataGrid = async (
18-
options: DataGridProperties = {},
19-
): Promise<{
20-
$container: dxElementWrapper;
21-
component: DataGridModel;
22-
instance: DataGrid;
23-
}> => new Promise((resolve) => {
24-
const $container = $('<div>')
25-
.attr('id', GRID_CONTAINER_ID)
26-
.appendTo(document.body);
27-
28-
const dataGridOptions: DataGridProperties = {
29-
keyExpr: 'id',
30-
...options,
31-
};
32-
33-
const instance = new DataGrid($container.get(0) as HTMLDivElement, dataGridOptions);
34-
const component = new DataGridModel($container.get(0) as HTMLElement);
35-
36-
jest.runAllTimers();
37-
38-
resolve({
39-
$container,
40-
component,
41-
instance,
42-
});
43-
});
44-
45-
const beforeTest = (): void => {
46-
jest.useFakeTimers();
47-
jest.spyOn(errors, 'log').mockImplementation(jest.fn());
48-
jest.spyOn(errors, 'Error').mockImplementation(() => ({}));
49-
};
50-
51-
const afterTest = (): void => {
52-
const $container = $(SELECTORS.gridContainer);
53-
const dataGrid = ($container as any).dxDataGrid('instance') as DataGrid;
54-
55-
dataGrid.dispose();
56-
$container.remove();
57-
jest.clearAllMocks();
58-
jest.useRealTimers();
59-
};
6+
import {
7+
afterTest,
8+
beforeTest,
9+
createDataGrid,
10+
} from '../../__tests__/__mock__/helpers/utils';
6011

6112
describe('Bugs', () => {
62-
beforeEach(beforeTest);
13+
beforeEach(() => {
14+
beforeTest();
15+
jest.spyOn(errors, 'log').mockImplementation(jest.fn());
16+
jest.spyOn(errors, 'Error').mockImplementation(() => ({}));
17+
});
6318
afterEach(afterTest);
6419

6520
describe('T1311329 - DataGrid - Column chooser hides a banded column on using search and recursive selection', () => {

packages/devextreme/js/__internal/grids/grid_core/columns_resizing_reordering/m_columns_resizing_reordering.integration.test.ts

Lines changed: 9 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -8,54 +8,22 @@ import {
88
} from '@js/common/core/events/drag';
99
import type { dxElementWrapper } from '@js/core/renderer';
1010
import $ from '@js/core/renderer';
11-
import type { Properties as DataGridProperties } from '@js/ui/data_grid';
12-
import DataGrid from '@js/ui/data_grid';
11+
import type DataGrid from '@js/ui/data_grid';
1312
import errors from '@js/ui/widget/ui.errors';
14-
import { DataGridModel } from '@ts/grids/data_grid/__tests__/__mock__/model/data_grid';
13+
import type { DataGridModel } from '@ts/grids/data_grid/__tests__/__mock__/model/data_grid';
1514

16-
const SELECTORS = {
17-
gridContainer: '#gridContainer',
18-
};
19-
20-
const GRID_CONTAINER_ID = 'gridContainer';
21-
22-
const createDataGrid = async (
23-
options: DataGridProperties = {},
24-
): Promise<{
25-
$container: dxElementWrapper;
26-
component: DataGridModel;
27-
instance: DataGrid;
28-
}> => new Promise((resolve) => {
29-
const $container = $('<div>')
30-
.attr('id', GRID_CONTAINER_ID)
31-
.appendTo(document.body);
32-
33-
const instance = new DataGrid($container.get(0) as HTMLDivElement, options);
34-
const component = new DataGridModel($container.get(0) as HTMLElement);
35-
36-
jest.runAllTimers();
37-
38-
resolve({
39-
$container,
40-
component,
41-
instance,
42-
});
43-
});
15+
import {
16+
afterTest as baseAfterTest,
17+
beforeTest as baseBeforeTest,
18+
createDataGrid,
19+
} from '../__tests__/__mock__/helpers/utils';
4420

4521
const beforeTest = (): void => {
46-
jest.useFakeTimers();
22+
baseBeforeTest();
4723
jest.spyOn(errors, 'log').mockImplementation(jest.fn());
4824
};
4925

50-
const afterTest = (): void => {
51-
const $container = $(SELECTORS.gridContainer);
52-
const dataGrid = ($container as any).dxDataGrid('instance') as DataGrid;
53-
54-
dataGrid.dispose();
55-
$container.remove();
56-
jest.clearAllMocks();
57-
jest.useRealTimers();
58-
};
26+
const afterTest = baseAfterTest;
5927

6028
describe('Performance optimization', () => {
6129
beforeEach(beforeTest);

packages/devextreme/js/__internal/grids/grid_core/editing/__tests__/m_editing.integration.test.ts

Lines changed: 7 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
import {
2-
afterEach, beforeEach, describe, expect, it, jest,
2+
afterEach, beforeEach, describe, expect, it,
33
} from '@jest/globals';
4-
import type { dxElementWrapper } from '@js/core/renderer';
5-
import $ from '@js/core/renderer';
6-
import type { Properties as DataGridProperties } from '@js/ui/data_grid';
7-
import DataGrid from '@js/ui/data_grid';
8-
import { DataGridModel } from '@ts/grids/data_grid/__tests__/__mock__/model/data_grid';
94

10-
const GRID_CONTAINER_ID = 'gridContainer';
11-
12-
const SELECTORS = {
13-
gridContainer: `#${GRID_CONTAINER_ID}`,
14-
};
5+
import {
6+
afterTest,
7+
beforeTest,
8+
createDataGrid,
9+
flushAsync,
10+
} from '../../__tests__/__mock__/helpers/utils';
1511

1612
const dataSource = [{
1713
ID: 1,
@@ -45,49 +41,6 @@ const dataSource = [{
4541
Address: '4 Westmoreland Pl.',
4642
}];
4743

48-
const flushAsync = async (): Promise<void> => {
49-
jest.runOnlyPendingTimers();
50-
await Promise.resolve();
51-
};
52-
53-
const createDataGrid = async (
54-
options: DataGridProperties = {},
55-
): Promise<{
56-
$container: dxElementWrapper;
57-
component: DataGridModel;
58-
instance: DataGrid;
59-
}> => new Promise((resolve) => {
60-
const $container = $('<div>')
61-
.attr('id', GRID_CONTAINER_ID)
62-
.appendTo(document.body);
63-
64-
const instance = new DataGrid($container.get(0) as HTMLDivElement, options);
65-
const component = new DataGridModel($container.get(0) as HTMLElement);
66-
67-
jest.runAllTimers();
68-
resolve({
69-
$container,
70-
component,
71-
instance,
72-
});
73-
});
74-
75-
const beforeTest = (): void => {
76-
jest.useFakeTimers();
77-
};
78-
79-
const afterTest = (): void => {
80-
const $container = $(SELECTORS.gridContainer);
81-
const dataGrid = (
82-
$container as dxElementWrapper & { dxDataGrid: (command: string) => DataGrid }
83-
).dxDataGrid('instance');
84-
85-
dataGrid.dispose();
86-
$container.remove();
87-
jest.clearAllMocks();
88-
jest.useRealTimers();
89-
};
90-
9144
describe('DataGrid editing', () => {
9245
beforeEach(beforeTest);
9346
afterEach(afterTest);

0 commit comments

Comments
 (0)