Skip to content

Commit bcf4a3d

Browse files
authored
CardView - column chooser - add tests for multiple show/hide (DevExpress#30124)
1 parent f28a68b commit bcf4a3d

File tree

4 files changed

+116
-5
lines changed

4 files changed

+116
-5
lines changed
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
import CardView from 'devextreme-testcafe-models/cardView';
2+
import url from '../../../helpers/getPageUrl';
3+
import { createWidget } from '../../../helpers/createWidget';
4+
5+
fixture.disablePageReloads`CardView - ColumnChooser.Functional`
6+
.page(url(__dirname, '../../container.html'));
7+
8+
function testsFactory(testModel: {
9+
name: string;
10+
hideFirstColumn: (t: TestController, cardView: CardView) => Promise<void>;
11+
showFirstColumn: (t: TestController, cardView: CardView) => Promise<void>;
12+
assertFirstColumnVisible: (t: TestController, cardView: CardView) => Promise<void>;
13+
assertFirstColumnHidden: (t: TestController, cardView: CardView) => Promise<void>;
14+
config: any; // TODO: add typing
15+
}) {
16+
test(`column chooser in ${testModel.name} mode should work after multiple hide/show actions`, async (t) => {
17+
const cardView = new CardView('#container');
18+
19+
await cardView.apiShowColumnChooser();
20+
21+
await testModel.hideFirstColumn(t, cardView);
22+
await testModel.assertFirstColumnHidden(t, cardView);
23+
24+
await testModel.showFirstColumn(t, cardView);
25+
26+
await testModel.assertFirstColumnVisible(t, cardView);
27+
28+
await testModel.hideFirstColumn(t, cardView);
29+
await testModel.assertFirstColumnHidden(t, cardView);
30+
31+
await testModel.showFirstColumn(t, cardView);
32+
await testModel.assertFirstColumnVisible(t, cardView);
33+
}).before(async () => createWidget('dxCardView', {
34+
dataSource: [
35+
{ a: 1, b: 2, c: 3 },
36+
{ a: 1, b: 2, c: 3 },
37+
{ a: 1, b: 2, c: 3 },
38+
],
39+
columns: [
40+
'a', 'b', 'c',
41+
],
42+
...testModel.config,
43+
}));
44+
}
45+
46+
testsFactory({
47+
name: 'select',
48+
config: {
49+
columnChooser: {
50+
enabled: true,
51+
mode: 'select',
52+
},
53+
},
54+
async hideFirstColumn(t: TestController, cardView: CardView) {
55+
await t.click(
56+
cardView.getColumnChooser().getCheckbox(0),
57+
);
58+
},
59+
async showFirstColumn(t: TestController, cardView: CardView) {
60+
await t.click(
61+
cardView.getColumnChooser().getCheckbox(0),
62+
);
63+
},
64+
async assertFirstColumnVisible(t: TestController, cardView: CardView) {
65+
await t.expect(
66+
cardView.getColumnChooser().isCheckboxChecked(0),
67+
).ok();
68+
},
69+
async assertFirstColumnHidden(t: TestController, cardView: CardView) {
70+
await t.expect(
71+
cardView.getColumnChooser().isCheckboxChecked(0),
72+
).notOk();
73+
},
74+
});
75+
76+
testsFactory({
77+
name: 'dragAndDrop',
78+
config: {
79+
columnChooser: {
80+
enabled: true,
81+
mode: 'dragAndDrop',
82+
},
83+
},
84+
async hideFirstColumn(t: TestController, cardView: CardView) {
85+
await t.dragToElement(
86+
cardView.getHeaderPanel().getHeaderItem(0).element,
87+
cardView.getColumnChooser().content,
88+
);
89+
},
90+
async showFirstColumn(t: TestController, cardView: CardView) {
91+
await t.dragToElement(
92+
cardView.getColumnChooser().getColumn(0),
93+
cardView.getHeaderPanel().element,
94+
);
95+
},
96+
async assertFirstColumnVisible(t: TestController, cardView: CardView) {
97+
await t.expect(
98+
cardView.getHeaderPanel().getHeaderItem(0).element.textContent,
99+
).eql('A');
100+
},
101+
async assertFirstColumnHidden(t: TestController, cardView: CardView) {
102+
await t.expect(
103+
cardView.getColumnChooser().getColumn(0).textContent,
104+
).eql('A');
105+
},
106+
});

e2e/testcafe-devextreme/tests/dataGrid/common/accessibility/status.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ test('Accessibility: DataGrid general status should contains correct text after
127127
await t.click(columnChooserBtn);
128128

129129
const columnChooser = dataGrid.getColumnChooser();
130-
const checkbox = columnChooser.getCheckboxIcon(1);
130+
const checkbox = columnChooser.getCheckbox(1);
131131
await t.click(checkbox);
132132

133133
const statusText = await dataGrid.getGeneralStatusContainer().textContent;

e2e/testcafe-devextreme/tests/treeList/accessibility/status.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ test('Accessibility: TreeList general status should contains correct text after
156156
await t.click(columnChooserBtn);
157157

158158
const columnChooser = treeList.getColumnChooser();
159-
const checkbox = columnChooser.getCheckboxIcon(1);
159+
const checkbox = columnChooser.getCheckbox(1);
160160
await t.click(checkbox);
161161

162162
const statusText = await treeList.getGeneralStatusContainer().textContent;

packages/testcafe-models/dataGrid/columnChooser.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ const CLASS = {
66
overlayContent: 'dx-overlay-content',
77
overlayWrapper: 'dx-overlay-wrapper',
88
columnChooser: 'dx-datagrid-column-chooser',
9-
checkboxIcon: 'dx-checkbox-icon',
9+
checkboxChecked: 'dx-checkbox-checked',
10+
checkbox: 'dx-checkbox',
1011
treeViewItem: 'dx-treeview-item',
1112
treeView: 'dx-treeview',
1213
};
@@ -40,8 +41,12 @@ export default class ColumnChooser extends FocusableElement {
4041
})(treeView);
4142
}
4243

43-
getCheckboxIcon(nth = 0): Selector {
44-
return this.content.find(`.${CLASS.checkboxIcon}`).nth(nth);
44+
getCheckbox(nth = 0): Selector {
45+
return this.content.find(`.${CLASS.checkbox}`).nth(nth);
46+
}
47+
48+
isCheckboxChecked(nth = 0): Promise<boolean> {
49+
return this.getCheckbox(nth).hasClass(CLASS.checkboxChecked);
4550
}
4651

4752
getColumn(index = 0): Selector {

0 commit comments

Comments
 (0)