Skip to content

Commit 8b0de36

Browse files
authored
Migrate more test to use vitest-browser-react and browserUserEvent (#3633)
* Use `@vitest/browser` * Update grouping tests * Update `userEvent`
1 parent 50e9a30 commit 8b0de36

13 files changed

+234
-208
lines changed
Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,64 @@
11
import type { Column } from '../../../src';
22
import { cellClassname } from '../../../src/style/cell';
3-
import { getCells, setup } from '../utils';
3+
import { getCellsNew, setupNew } from '../utils';
44

55
interface Row {
66
id: number;
77
}
88

99
const rows: readonly Row[] = [{ id: 0 }, { id: 1 }];
1010

11-
test('cellClass is undefined', () => {
11+
test('cellClass is undefined', async () => {
1212
const columns: readonly Column<Row>[] = [
1313
{
1414
key: 'id',
1515
name: 'ID'
1616
}
1717
];
18-
setup({ columns, rows });
19-
const [cell1, cell2] = getCells();
20-
expect(cell1).toHaveClass(cellClassname, { exact: true });
21-
expect(cell2).toHaveClass(cellClassname, { exact: true });
18+
setupNew({ columns, rows });
19+
const [cell1, cell2] = getCellsNew();
20+
await expect.element(cell1).toHaveClass(cellClassname, { exact: true });
21+
await expect.element(cell2).toHaveClass(cellClassname, { exact: true });
2222
});
2323

24-
test('cellClass is a string', () => {
24+
test('cellClass is a string', async () => {
2525
const columns: readonly Column<Row>[] = [
2626
{
2727
key: 'id',
2828
name: 'ID',
2929
cellClass: 'my-cell'
3030
}
3131
];
32-
setup({ columns, rows });
33-
const [cell1, cell2] = getCells();
34-
expect(cell1).toHaveClass(`${cellClassname} my-cell`, { exact: true });
35-
expect(cell2).toHaveClass(`${cellClassname} my-cell`, { exact: true });
32+
setupNew({ columns, rows });
33+
const [cell1, cell2] = getCellsNew();
34+
await expect.element(cell1).toHaveClass(`${cellClassname} my-cell`, { exact: true });
35+
await expect.element(cell2).toHaveClass(`${cellClassname} my-cell`, { exact: true });
3636
});
3737

38-
test('cellClass returns a string', () => {
38+
test('cellClass returns a string', async () => {
3939
const columns: readonly Column<Row>[] = [
4040
{
4141
key: 'id',
4242
name: 'ID',
4343
cellClass: (row) => `my-cell-${row.id}`
4444
}
4545
];
46-
setup({ columns, rows });
47-
const [cell1, cell2] = getCells();
48-
expect(cell1).toHaveClass(`${cellClassname} my-cell-0`, { exact: true });
49-
expect(cell2).toHaveClass(`${cellClassname} my-cell-1`, { exact: true });
46+
setupNew({ columns, rows });
47+
const [cell1, cell2] = getCellsNew();
48+
await expect.element(cell1).toHaveClass(`${cellClassname} my-cell-0`, { exact: true });
49+
await expect.element(cell2).toHaveClass(`${cellClassname} my-cell-1`, { exact: true });
5050
});
5151

52-
test('cellClass returns undefined', () => {
52+
test('cellClass returns undefined', async () => {
5353
const columns: readonly Column<Row>[] = [
5454
{
5555
key: 'id',
5656
name: 'ID',
5757
cellClass: () => undefined
5858
}
5959
];
60-
setup({ columns, rows });
61-
const [cell1, cell2] = getCells();
62-
expect(cell1).toHaveClass(cellClassname, { exact: true });
63-
expect(cell2).toHaveClass(cellClassname, { exact: true });
60+
setupNew({ columns, rows });
61+
const [cell1, cell2] = getCellsNew();
62+
await expect.element(cell1).toHaveClass(cellClassname, { exact: true });
63+
await expect.element(cell2).toHaveClass(cellClassname, { exact: true });
6464
});

test/browser/column/colSpan.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import userEvent from '@testing-library/user-event';
1+
import { userEvent } from '@vitest/browser/context';
22

33
import type { Column } from '../../../src';
4-
import { getCellsAtRowIndex, getHeaderCells, setup, validateCellPosition } from '../utils';
4+
import { getCellsAtRowIndex, getHeaderCellsNew, setupNew, validateCellPosition } from '../utils';
55

66
describe('colSpan', () => {
77
function setupColSpanGrid(colCount = 15) {
@@ -34,13 +34,13 @@ describe('colSpan', () => {
3434
}
3535
});
3636
}
37-
setup({ columns, rows, bottomSummaryRows: [1, 2], topSummaryRows: [1, 2] });
37+
setupNew({ columns, rows, bottomSummaryRows: [1, 2], topSummaryRows: [1, 2] });
3838
}
3939

4040
it('should merges cells', () => {
4141
setupColSpanGrid();
4242
// header
43-
expect(getHeaderCells()).toHaveLength(13);
43+
expect(getHeaderCellsNew()).toHaveLength(13);
4444

4545
// top summary rows
4646
const topSummarryRow1 = getCellsAtRowIndex(0);
@@ -95,7 +95,7 @@ describe('colSpan', () => {
9595
it('should navigate between merged cells', async () => {
9696
setupColSpanGrid();
9797
// header row
98-
await userEvent.click(getHeaderCells()[7]);
98+
await userEvent.click(getHeaderCellsNew()[7]);
9999
validateCellPosition(7, 0);
100100
await userEvent.keyboard('{arrowright}');
101101
validateCellPosition(8, 0);
Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import { act } from 'react';
21
import { userEvent } from '@vitest/browser/context';
32

43
import type { Column } from '../../../src';
5-
import { getHeaderCells, setup } from '../utils';
4+
import { getHeaderCellsNew, setupNew } from '../utils';
65

76
const columns: readonly Column<never>[] = [
87
{
@@ -28,35 +27,25 @@ const columns: readonly Column<never>[] = [
2827

2928
test('draggable columns', async () => {
3029
const onColumnsReorder = vi.fn();
31-
setup({ columns, rows: [], onColumnsReorder });
32-
const [cell1, cell2, cell3, cell4] = getHeaderCells();
30+
setupNew({ columns, rows: [], onColumnsReorder });
31+
const [cell1, cell2, cell3, cell4] = getHeaderCellsNew();
3332

34-
expect(cell1).not.toHaveAttribute('draggable');
35-
expect(cell2).toHaveAttribute('draggable');
36-
expect(cell3).toHaveAttribute('draggable');
37-
expect(cell4).toHaveAttribute('draggable');
33+
await expect.element(cell1).not.toHaveAttribute('draggable');
34+
await expect.element(cell2).toHaveAttribute('draggable');
35+
await expect.element(cell3).toHaveAttribute('draggable');
36+
await expect.element(cell4).toHaveAttribute('draggable');
3837

3938
expect(onColumnsReorder).not.toHaveBeenCalled();
4039

41-
// eslint-disable-next-line testing-library/no-unnecessary-act
42-
await act(async () => {
43-
await userEvent.dragAndDrop(cell2, cell4);
44-
});
45-
40+
await userEvent.dragAndDrop(cell2, cell4);
4641
expect(onColumnsReorder).toHaveBeenCalledWith('col2', 'col4');
4742
onColumnsReorder.mockReset();
4843

4944
// should not call `onColumnsReorder` if drag and drop elements are the same
50-
// eslint-disable-next-line testing-library/no-unnecessary-act
51-
await act(async () => {
52-
await userEvent.dragAndDrop(cell2, cell2);
53-
});
45+
await userEvent.dragAndDrop(cell2, cell2);
5446
expect(onColumnsReorder).not.toHaveBeenCalled();
5547

5648
// should not drag a column if it is not specified as draggable
57-
// eslint-disable-next-line testing-library/no-unnecessary-act
58-
await act(async () => {
59-
await userEvent.dragAndDrop(cell1, cell2);
60-
});
49+
await userEvent.dragAndDrop(cell1, cell2);
6150
expect(onColumnsReorder).not.toHaveBeenCalled();
6251
});

test/browser/column/frozen.test.ts

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type { Column } from '../../../src';
22
import { cellClassname, cellFrozenClassname } from '../../../src/style/cell';
3-
import { getHeaderCells, setup } from '../utils';
3+
import { getHeaderCellsNew, setupNew } from '../utils';
44

5-
test('frozen column have a specific class, and are stable-sorted before non-frozen columns', () => {
5+
test('frozen column have a specific class, and are stable-sorted before non-frozen columns', async () => {
66
const columns: readonly Column<never>[] = [
77
{
88
key: 'col1',
@@ -25,16 +25,20 @@ test('frozen column have a specific class, and are stable-sorted before non-froz
2525
}
2626
];
2727

28-
setup({ columns, rows: [] });
29-
const [cell1, cell2, cell3, cell4] = getHeaderCells();
28+
setupNew({ columns, rows: [] });
29+
const [cell1, cell2, cell3, cell4] = getHeaderCellsNew();
3030

31-
expect(cell1).toHaveClass(`${cellClassname} ${cellFrozenClassname}`, { exact: true });
32-
expect(cell2).toHaveClass(`${cellClassname} ${cellFrozenClassname}`, { exact: true });
33-
expect(cell3).toHaveClass(cellClassname, { exact: true });
34-
expect(cell4).toHaveClass(cellClassname, { exact: true });
31+
await expect
32+
.element(cell1)
33+
.toHaveClass(`${cellClassname} ${cellFrozenClassname}`, { exact: true });
34+
await expect
35+
.element(cell2)
36+
.toHaveClass(`${cellClassname} ${cellFrozenClassname}`, { exact: true });
37+
await expect.element(cell3).toHaveClass(cellClassname, { exact: true });
38+
await expect.element(cell4).toHaveClass(cellClassname, { exact: true });
3539

36-
expect(cell1).toHaveTextContent('col1');
37-
expect(cell2).toHaveTextContent('col3');
38-
expect(cell3).toHaveTextContent('col2');
39-
expect(cell4).toHaveTextContent('col4');
40+
await expect.element(cell1).toHaveTextContent('col1');
41+
await expect.element(cell2).toHaveTextContent('col3');
42+
await expect.element(cell3).toHaveTextContent('col2');
43+
await expect.element(cell4).toHaveTextContent('col4');
4044
});

0 commit comments

Comments
 (0)