@innovaccer/design-system 2.5.0-2 → 2.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.all-contributorsrc +170 -0
- package/.github/workflows/jira.yml +1 -2
- package/.github/workflows/main.yml +1 -6
- package/.github/workflows/test.yml +22 -0
- package/CHANGELOG.md +21 -54
- package/CONTRIBUTING.md +23 -0
- package/README.md +124 -75
- package/core/components/atoms/button/Button.tsx +56 -55
- package/core/components/atoms/button/__tests__/Button.test.tsx +3 -12
- package/core/components/atoms/checkbox/Checkbox.tsx +3 -6
- package/core/components/atoms/collapsible/__stories__/index.story.tsx +2 -2
- package/core/components/atoms/dropdown/DropdownList.tsx +1 -1
- package/core/components/atoms/dropdown/__stories__/Options.tsx +15 -0
- package/core/components/atoms/dropdown/__tests__/Dropdown.test.tsx +202 -1
- package/core/components/atoms/dropdown/__tests__/Option.test.tsx +3 -0
- package/core/components/atoms/message/__stories__/CustomDescription.tsx +25 -0
- package/core/components/atoms/metaList/Meta.tsx +3 -1
- package/core/components/atoms/metaList/__tests__/MetaList.test.tsx +30 -36
- package/core/components/atoms/metricInput/MetricInput.tsx +2 -2
- package/core/components/atoms/outsideClick/__stories__/index.story.tsx +1 -1
- package/core/components/atoms/radio/Radio.tsx +7 -10
- package/core/components/atoms/radio/__tests__/Radio.test.tsx +13 -7
- package/core/components/css-utilities/Align/Align.story.tsx +1 -1
- package/core/components/css-utilities/Background/Background.story.tsx +1 -1
- package/core/components/css-utilities/Border/Border.story.tsx +128 -0
- package/core/components/css-utilities/Display/Display.story.tsx +1 -1
- package/core/components/css-utilities/Flex/Flex.story.tsx +1 -1
- package/core/components/css-utilities/Miscellaneous/Miscellaneous.story.tsx +1 -1
- package/core/components/css-utilities/Overflow/Overflow.story.tsx +1 -1
- package/core/components/css-utilities/Position/Position.story.tsx +1 -1
- package/core/components/css-utilities/Sizing/Sizing.story.tsx +1 -1
- package/core/components/css-utilities/Spacing/Spacing.story.tsx +1 -1
- package/core/components/molecules/chatMessage/__tests__/ChatMessage.test.tsx +20 -46
- package/core/components/molecules/dropzone/__tests__/Dropzone.test.tsx +47 -111
- package/core/components/molecules/dropzone/__tests__/Utilities.test.tsx +13 -13
- package/core/components/molecules/editableChipInput/EditableChipInput.tsx +3 -1
- package/core/components/molecules/editableInput/EditableInput.tsx +5 -3
- package/core/components/molecules/editableInput/__stories__/variants/Uncontrolled.story.tsx +1 -1
- package/core/components/molecules/editableInput/__tests__/EditableInput.test.tsx +1 -3
- package/core/components/molecules/emptyState/_tests_/EmptyState.test.tsx +3 -7
- package/core/components/molecules/fileUploader/FileUploaderItem.tsx +13 -2
- package/core/components/molecules/fileUploader/__stories__/index.story.tsx +156 -21
- package/core/components/molecules/fileUploader/__tests__/FileUploader.test.tsx +21 -80
- package/core/components/molecules/fileUploader/__tests__/FileUploaderList.test.tsx +9 -40
- package/core/components/molecules/fullscreenModal/FullscreenModal.tsx +7 -13
- package/core/components/molecules/fullscreenModal/__stories__/Layering.story.tsx +2 -2
- package/core/components/molecules/modal/Modal.tsx +18 -17
- package/core/components/molecules/modal/ModalBody.tsx +1 -1
- package/core/components/molecules/modal/__stories__/Layering.story.tsx +1 -1
- package/core/components/molecules/modal/__stories__/NoFooter.story.tsx +0 -1
- package/core/components/molecules/modal/__stories__/Scrolling.story.tsx +20 -38
- package/core/components/molecules/modal/__tests__/Modal.test.tsx +1 -1
- package/core/components/molecules/sidesheet/Sidesheet.tsx +16 -17
- package/core/components/organisms/choiceList/ChoiceList.tsx +212 -0
- package/core/components/organisms/choiceList/__stories__/Alignment.story.tsx +32 -0
- package/core/components/organisms/choiceList/__stories__/AllowMultiple.story.tsx +23 -0
- package/core/components/organisms/choiceList/__stories__/Controlled.story.tsx +34 -0
- package/core/components/organisms/choiceList/__stories__/index.story.tsx +18 -0
- package/core/components/organisms/choiceList/__tests__/ChoiceList.test.tsx +155 -0
- package/core/components/organisms/choiceList/__tests__/__snapshots__/ChoiceList.test.tsx.snap +3393 -0
- package/core/components/organisms/choiceList/index.tsx +2 -0
- package/core/components/organisms/datePicker/__tests__/DatePicker.test.tsx +136 -46
- package/core/components/organisms/datePicker/__tests__/__snapshots__/DatePicker.test.tsx.snap +2594 -102
- package/core/components/organisms/dateRangePicker/DateRangePicker.tsx +5 -0
- package/core/components/organisms/dateRangePicker/__tests__/DateRangePicker.test.tsx +49 -410
- package/core/components/organisms/dateRangePicker/__tests__/Utilities.test.tsx +39 -0
- package/core/components/organisms/dateRangePicker/__tests__/__snapshots__/DateRangePicker.test.tsx.snap +45390 -2679
- package/core/components/organisms/dateRangePicker/utilities.tsx +2 -5
- package/core/components/organisms/grid/Cell.tsx +5 -4
- package/core/components/organisms/grid/Grid.tsx +1 -1
- package/core/components/organisms/grid/GridCell.tsx +18 -7
- package/core/components/organisms/grid/GridHead.tsx +1 -1
- package/core/components/organisms/grid/GridRow.tsx +5 -12
- package/core/components/organisms/grid/__tests__/Grid.test.tsx +179 -1
- package/core/components/organisms/grid/__tests__/GridCell.test.tsx +218 -0
- package/core/components/organisms/grid/__tests__/__snapshots__/Grid.test.tsx.snap +1024 -0
- package/core/components/organisms/grid/__tests__/rowUtility.test.tsx +62 -0
- package/core/components/organisms/inlineMessage/InlineMessage.tsx +10 -14
- package/core/components/organisms/inlineMessage/__stories__/InlineMessageWithinTable.story.tsx +9 -12
- package/core/components/organisms/inlineMessage/__stories__/variants/Default.story.tsx +2 -4
- package/core/components/organisms/inlineMessage/__stories__/variants/Error.story.tsx +2 -5
- package/core/components/organisms/inlineMessage/__stories__/variants/Info.story.tsx +2 -5
- package/core/components/organisms/inlineMessage/__stories__/variants/Success.story.tsx +2 -5
- package/core/components/organisms/inlineMessage/__stories__/variants/Warning.story.tsx +2 -5
- package/core/components/organisms/inlineMessage/__tests__/InlineMessage.test.tsx +4 -20
- package/core/components/organisms/navigation/VerticalNavigation.tsx +14 -3
- package/core/components/organisms/navigation/__tests__/Navigation.test.tsx +179 -0
- package/core/components/organisms/navigation/__tests__/__snapshots__/Navigation.test.tsx.snap +530 -0
- package/core/components/organisms/table/DraggableDropdown.tsx +1 -0
- package/core/components/organisms/table/Header.tsx +11 -2
- package/core/components/organisms/table/Table.tsx +2 -2
- package/core/components/organisms/table/__stories__/NestedTableWithNestedCard.story.tsx +4 -1
- package/core/components/organisms/table/__stories__/variants/nestedRows.story.tsx +5 -2
- package/core/components/organisms/table/__tests__/Table.test.tsx +292 -0
- package/core/components/organisms/table/__tests__/__snapshots__/Table.test.tsx.snap +349041 -0
- package/core/components/organisms/timePicker/__tests__/TimePicker.test.tsx +15 -66
- package/core/components/patterns/dateRangePicker/withCustomPopover.story.tsx +47 -36
- package/core/index.tsx +1 -1
- package/core/index.type.tsx +1 -0
- package/core/utils/OverlayManager.tsx +1 -3
- package/core/utils/__tests__/__snapshots__/TS.test.tsx.snap +4 -0
- package/core/utils/types.tsx +3 -4
- package/css/dist/index.css +78 -8
- package/css/dist/index.css.map +1 -1
- package/css/src/components/button.css +8 -4
- package/css/src/components/choiceList.css +25 -0
- package/css/src/components/modal.css +1 -2
- package/css/src/utils/border.css +39 -0
- package/dist/core/components/atoms/popperWrapper/PopperWrapper.d.ts +50 -49
- package/dist/core/components/css-utilities/Border/Border.story.d.ts +13 -0
- package/dist/core/components/organisms/choiceList/ChoiceList.d.ts +33 -0
- package/dist/core/components/organisms/choiceList/index.d.ts +2 -0
- package/dist/core/components/organisms/dateRangePicker/utilities.d.ts +2 -2
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.type.d.ts +1 -0
- package/dist/index.esm.js +207 -58
- package/dist/index.js +209 -57
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.br +0 -0
- package/dist/index.umd.js.gz +0 -0
- package/jest.config.js +2 -1
- package/package.json +6 -4
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { render, fireEvent } from '@testing-library/react';
|
|
3
|
+
import { Table } from '@/index';
|
|
4
|
+
import { TableProps as Props } from '@/index.type';
|
|
5
|
+
import { testHelper, filterUndefined, valueHelper, testMessageHelper } from '@/utils/testHelper';
|
|
6
|
+
|
|
7
|
+
const BooleanValue = [true, false];
|
|
8
|
+
|
|
9
|
+
const FunctionValue = jest.fn();
|
|
10
|
+
const onSelect = jest.fn();
|
|
11
|
+
const tableData = [{ name: 'Zara' }, { name: 'Sara' }];
|
|
12
|
+
const tableSchema = [
|
|
13
|
+
{
|
|
14
|
+
name: 'name',
|
|
15
|
+
displayName: 'Name',
|
|
16
|
+
filters: [
|
|
17
|
+
{ label: 'A-G', value: 'a-g' },
|
|
18
|
+
{ label: 'H-R', value: 'h-r' },
|
|
19
|
+
{ label: 'S-Z', value: 's-z' },
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
const fetchTableData = jest.fn(() =>
|
|
24
|
+
Promise.resolve({
|
|
25
|
+
schema: tableSchema,
|
|
26
|
+
data: tableData,
|
|
27
|
+
count: tableData.length,
|
|
28
|
+
searchTerm: '',
|
|
29
|
+
})
|
|
30
|
+
);
|
|
31
|
+
describe('Table component sync', () => {
|
|
32
|
+
const mapper = {
|
|
33
|
+
data: valueHelper(tableData, { required: true }),
|
|
34
|
+
schema: valueHelper(tableSchema, { required: true }),
|
|
35
|
+
loading: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
36
|
+
error: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
37
|
+
errorType: valueHelper('errorType', { required: true }),
|
|
38
|
+
onSearch: valueHelper(FunctionValue, { required: true }),
|
|
39
|
+
showHead: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
40
|
+
type: valueHelper('resource', { required: true }),
|
|
41
|
+
size: valueHelper('standard', { required: true }),
|
|
42
|
+
draggable: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
43
|
+
withHeader: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
44
|
+
nestedRows: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
45
|
+
withCheckbox: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
46
|
+
showMenu: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
47
|
+
headCellTooltip: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
48
|
+
separator: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
49
|
+
};
|
|
50
|
+
const testFunc = (props: Record<string, any>): void => {
|
|
51
|
+
const attr = filterUndefined(props) as Props;
|
|
52
|
+
it(testMessageHelper(attr), () => {
|
|
53
|
+
const { baseElement } = render(<Table {...attr} />);
|
|
54
|
+
expect(baseElement).toMatchSnapshot();
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
testHelper(mapper, testFunc);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
describe('Table component async', () => {
|
|
61
|
+
const mapper = {
|
|
62
|
+
fetchData: valueHelper(fetchTableData, { required: true }),
|
|
63
|
+
type: valueHelper('data', { required: true }),
|
|
64
|
+
size: valueHelper('compressed', { required: true }),
|
|
65
|
+
draggable: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
66
|
+
withHeader: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
67
|
+
withPagination: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
68
|
+
page: valueHelper(1, { required: true }),
|
|
69
|
+
paginationType: valueHelper('basic', { required: true }),
|
|
70
|
+
pageSize: valueHelper(10, { required: true }),
|
|
71
|
+
loaderSchema: valueHelper(tableSchema, { required: true }),
|
|
72
|
+
multipleSorting: valueHelper(BooleanValue, { required: true, iterate: true }),
|
|
73
|
+
sortingList: valueHelper([], { required: true }),
|
|
74
|
+
searchDebounceDuration: valueHelper(100, { required: true }),
|
|
75
|
+
onRowClick: valueHelper(FunctionValue, { required: true }),
|
|
76
|
+
onPageChange: valueHelper(FunctionValue, { required: true }),
|
|
77
|
+
};
|
|
78
|
+
const testFunc = (props: Record<string, any>): void => {
|
|
79
|
+
const attr = filterUndefined(props) as Props;
|
|
80
|
+
it(testMessageHelper(attr), () => {
|
|
81
|
+
const { baseElement } = render(<Table {...attr} />);
|
|
82
|
+
expect(baseElement).toMatchSnapshot();
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
testHelper(mapper, testFunc);
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
describe('render Table component', () => {
|
|
89
|
+
it('render table', () => {
|
|
90
|
+
const { getByTestId } = render(<Table />);
|
|
91
|
+
expect(getByTestId('DesignSystem-Table-wrapper')).toBeInTheDocument();
|
|
92
|
+
});
|
|
93
|
+
it('render table with withHeader prop', () => {
|
|
94
|
+
const { getByTestId } = render(<Table withHeader={true} />);
|
|
95
|
+
expect(getByTestId('DesignSystem-Table-header')).toHaveClass('Table-header');
|
|
96
|
+
});
|
|
97
|
+
it('render table with className prop', () => {
|
|
98
|
+
const { getByTestId } = render(<Table className="table-wrapper" />);
|
|
99
|
+
expect(getByTestId('DesignSystem-Table-wrapper')).toHaveClass('table-wrapper');
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
describe('render Table component with header', () => {
|
|
104
|
+
it('called headerOptions with withSearch as true ', () => {
|
|
105
|
+
const headerOptions = { withSearch: true };
|
|
106
|
+
const { getByTestId } = render(<Table withHeader={true} headerOptions={headerOptions} />);
|
|
107
|
+
const input = getByTestId('DesignSystem-Table-Header--withSearch');
|
|
108
|
+
fireEvent.change(input, { target: { value: 'ss' } });
|
|
109
|
+
expect(input).toHaveDisplayValue('ss');
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
it('called headerOptions with filterPosition and filters ', () => {
|
|
113
|
+
const headerOptions = { withSearch: true };
|
|
114
|
+
const { getByTestId, getAllByTestId } = render(
|
|
115
|
+
<Table withHeader={true} filterPosition="HEADER" schema={tableSchema} headerOptions={headerOptions} />
|
|
116
|
+
);
|
|
117
|
+
const dropdownButton = getByTestId('DesignSystem-DropdownTrigger');
|
|
118
|
+
fireEvent.click(dropdownButton);
|
|
119
|
+
const dropdownCheckbox = getAllByTestId('DesignSystem-Checkbox-InputBox')[1];
|
|
120
|
+
expect(dropdownCheckbox).not.toBeChecked();
|
|
121
|
+
fireEvent.click(dropdownCheckbox);
|
|
122
|
+
const applyButton = getAllByTestId('DesignSystem-Button')[3];
|
|
123
|
+
fireEvent.click(applyButton);
|
|
124
|
+
expect(dropdownCheckbox).toBeChecked();
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
it('render table with withHeader and withCheckbox and showHead false,trigger onSelectAll', () => {
|
|
128
|
+
const schema = [{ name: 'name', displayName: 'Name', width: '50%' }];
|
|
129
|
+
const { getAllByTestId } = render(
|
|
130
|
+
<Table withHeader={true} withCheckbox={true} showHead={false} data={tableData} schema={schema} />
|
|
131
|
+
);
|
|
132
|
+
const checkbox = getAllByTestId('DesignSystem-Checkbox-InputBox')[0];
|
|
133
|
+
fireEvent.click(checkbox);
|
|
134
|
+
expect(checkbox).toBeChecked();
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
it('render table with withHeader and withCheckbox and withPagination true, trigger selectAll Button', () => {
|
|
138
|
+
const headerOptions = { withSearch: true, allowSelectAll: true };
|
|
139
|
+
const schema = [{ name: 'name', displayName: 'Name', width: '50%' }];
|
|
140
|
+
const { getAllByTestId, getByTestId } = render(
|
|
141
|
+
<Table
|
|
142
|
+
withHeader={true}
|
|
143
|
+
withCheckbox={true}
|
|
144
|
+
withPagination={true}
|
|
145
|
+
data={tableData}
|
|
146
|
+
schema={schema}
|
|
147
|
+
headerOptions={headerOptions}
|
|
148
|
+
/>
|
|
149
|
+
);
|
|
150
|
+
const checkbox = getAllByTestId('DesignSystem-Checkbox-InputBox')[0];
|
|
151
|
+
fireEvent.click(checkbox);
|
|
152
|
+
const selectAllButton = getByTestId('DesignSystem-Table-Header--selectAllItemsButton');
|
|
153
|
+
expect(selectAllButton).toBeInTheDocument();
|
|
154
|
+
fireEvent.click(selectAllButton);
|
|
155
|
+
const clearSelectionButton = getByTestId('DesignSystem-Table-Header--clearSelectionItemsButton');
|
|
156
|
+
expect(clearSelectionButton).toBeInTheDocument();
|
|
157
|
+
fireEvent.click(clearSelectionButton);
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
describe('render Table component with DraggableDropdown', () => {
|
|
162
|
+
it('render table : draggableDropDown Apply button is triggered', () => {
|
|
163
|
+
const schema = [{ name: 'name', displayName: 'Name', width: '50%' }];
|
|
164
|
+
const { getAllByTestId } = render(<Table withHeader={true} data={tableData} schema={schema} />);
|
|
165
|
+
const tableColumnData = getAllByTestId('DesignSystem-Text')[0];
|
|
166
|
+
expect(tableColumnData).toHaveTextContent('Name');
|
|
167
|
+
const draggableDropdown = getAllByTestId('DesignSystem-Button')[0];
|
|
168
|
+
fireEvent.click(draggableDropdown);
|
|
169
|
+
const draggableDropdownCheckbox = getAllByTestId('DesignSystem-Checkbox-InputBox')[0];
|
|
170
|
+
fireEvent.click(draggableDropdownCheckbox);
|
|
171
|
+
const draggableApplyButton = getAllByTestId('DesignSystem-Button')[3];
|
|
172
|
+
fireEvent.click(draggableApplyButton);
|
|
173
|
+
expect(tableColumnData).not.toBeInTheDocument();
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
it('render table : draggableDropDown checkbox is changed', () => {
|
|
177
|
+
const schema = [{ name: 'name', displayName: 'Name', width: '50%' }];
|
|
178
|
+
const { getAllByTestId } = render(<Table withHeader={true} data={tableData} schema={schema} />);
|
|
179
|
+
const draggableDropdown = getAllByTestId('DesignSystem-Button')[0];
|
|
180
|
+
fireEvent.click(draggableDropdown);
|
|
181
|
+
const draggableDropdownCheckbox = getAllByTestId('DesignSystem-Checkbox-InputBox')[1];
|
|
182
|
+
fireEvent.click(draggableDropdownCheckbox);
|
|
183
|
+
expect(draggableDropdownCheckbox).not.toBeChecked();
|
|
184
|
+
});
|
|
185
|
+
it('render table : drag drop is performed', () => {
|
|
186
|
+
const schema = [
|
|
187
|
+
{ name: 'name', displayName: 'Name', width: '50%' },
|
|
188
|
+
{ name: 'gender', displayName: 'Gender', width: '50%' },
|
|
189
|
+
];
|
|
190
|
+
const { getAllByTestId } = render(<Table withHeader={true} data={tableData} schema={schema} />);
|
|
191
|
+
const draggableDropdown = getAllByTestId('DesignSystem-Button')[0];
|
|
192
|
+
fireEvent.click(draggableDropdown);
|
|
193
|
+
const draggableSrc = getAllByTestId('DesignSystem-Table-Header--draggableDropdownOption')[0];
|
|
194
|
+
const draggableDest = getAllByTestId('DesignSystem-Table-Header--draggableDropdownOption')[1];
|
|
195
|
+
const dropDownOptionsBeforeDrag = getAllByTestId('DesignSystem-Text');
|
|
196
|
+
expect(dropDownOptionsBeforeDrag[5]).toHaveTextContent('Name');
|
|
197
|
+
fireEvent.dragStart(draggableSrc, { dataTransfer: { setData: jest.fn() } });
|
|
198
|
+
fireEvent.dragOver(draggableSrc);
|
|
199
|
+
fireEvent.drop(draggableDest, { dataTransfer: { getData: jest.fn().mockReturnValueOnce(0) } });
|
|
200
|
+
const dropDownOptionsAfterDrag = getAllByTestId('DesignSystem-Text');
|
|
201
|
+
expect(dropDownOptionsAfterDrag[5]).toHaveTextContent('Gender');
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
describe('render Table without headerOptions', () => {
|
|
206
|
+
it('render Table: updateSortingList ', () => {
|
|
207
|
+
const schema = [{ name: 'name', displayName: 'Name', width: '50%' }];
|
|
208
|
+
const { getAllByTestId } = render(<Table schema={schema} data={tableData} />);
|
|
209
|
+
const input = getAllByTestId('DesignSystem-Grid-cellContent')[0];
|
|
210
|
+
const cellContent = getAllByTestId('DesignSystem-Text')[1];
|
|
211
|
+
expect(cellContent).toHaveTextContent('Zara');
|
|
212
|
+
fireEvent.click(input);
|
|
213
|
+
expect(cellContent).toHaveTextContent('Sara');
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
it('render Table: updateSchema ', () => {
|
|
217
|
+
const schema = [
|
|
218
|
+
{ name: 'name', displayName: 'Name', width: '50%' },
|
|
219
|
+
{ name: 'gender', displayName: 'Gender', width: '50%' },
|
|
220
|
+
];
|
|
221
|
+
const data = [
|
|
222
|
+
{ name: 'Zara', gender: 'f' },
|
|
223
|
+
{ name: 'Sara', gender: 'm' },
|
|
224
|
+
];
|
|
225
|
+
const { getAllByTestId } = render(<Table schema={schema} data={data} />);
|
|
226
|
+
const popoverButton = getAllByTestId('DesignSystem-Button')[0];
|
|
227
|
+
fireEvent.click(popoverButton);
|
|
228
|
+
const cellGroupBeforePin = getAllByTestId('DesignSystem-Grid-cellGroup')[1];
|
|
229
|
+
expect(cellGroupBeforePin).toHaveClass('Grid-cellGroup Grid-cellGroup--main');
|
|
230
|
+
const dropdownOption = getAllByTestId('DesignSystem-DropdownOption--WITH_ICON')[3];
|
|
231
|
+
fireEvent.click(dropdownOption);
|
|
232
|
+
const cellGroup = getAllByTestId('DesignSystem-Grid-cellGroup')[1];
|
|
233
|
+
expect(cellGroup).toHaveClass('Grid-cellGroup--pinned-right');
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
it('render Table: call onSelectAll ', () => {
|
|
237
|
+
const schema = [
|
|
238
|
+
{ name: 'name', displayName: 'Name', width: '50%' },
|
|
239
|
+
{ name: 'gender', displayName: 'Gender', width: '50%' },
|
|
240
|
+
];
|
|
241
|
+
const { getByTestId } = render(<Table schema={schema} withCheckbox={true} onSelect={onSelect} />);
|
|
242
|
+
const checkbox = getByTestId('DesignSystem-Checkbox-InputBox');
|
|
243
|
+
fireEvent.click(checkbox);
|
|
244
|
+
expect(onSelect).toHaveBeenCalled();
|
|
245
|
+
});
|
|
246
|
+
it('render Table: prop onselect ', () => {
|
|
247
|
+
const schema = [
|
|
248
|
+
{ name: 'name', displayName: 'Name', width: '50%' },
|
|
249
|
+
{ name: 'gender', displayName: 'Gender', width: '50%' },
|
|
250
|
+
];
|
|
251
|
+
const data = [
|
|
252
|
+
{ name: 'Zara', gender: 'f', selected: true },
|
|
253
|
+
{ name: 'Sara', gender: 'm' },
|
|
254
|
+
];
|
|
255
|
+
const { getAllByTestId } = render(<Table schema={schema} withCheckbox={true} onSelect={onSelect} data={data} />);
|
|
256
|
+
const checkbox = getAllByTestId('DesignSystem-Checkbox-InputBox')[1];
|
|
257
|
+
fireEvent.click(checkbox);
|
|
258
|
+
expect(onSelect).toHaveBeenCalled();
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
describe('render Table with pagination', () => {
|
|
263
|
+
it('render Table: trigger page change ', () => {
|
|
264
|
+
const schema = [{ name: 'name', displayName: 'Name', width: '50%' }];
|
|
265
|
+
const { getByTestId } = render(<Table schema={schema} data={tableData} withPagination={true} pageSize={1} />);
|
|
266
|
+
const nextButton = getByTestId('DesignSystem-Pagination--NextButton');
|
|
267
|
+
const pageText = getByTestId('DesignSystem-Pagination--Input');
|
|
268
|
+
expect(pageText).toHaveDisplayValue('1');
|
|
269
|
+
fireEvent.click(nextButton);
|
|
270
|
+
expect(pageText).toHaveDisplayValue('2');
|
|
271
|
+
});
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
describe('render Table with async true', () => {
|
|
275
|
+
it('render Table: fetchData with promise resolve ', () => {
|
|
276
|
+
const fetchData = jest.fn(() =>
|
|
277
|
+
Promise.resolve({
|
|
278
|
+
schema: tableSchema,
|
|
279
|
+
data: tableData,
|
|
280
|
+
count: tableData.length,
|
|
281
|
+
searchTerm: '',
|
|
282
|
+
})
|
|
283
|
+
);
|
|
284
|
+
render(<Table withPagination={false} fetchData={fetchData} loading={false} />);
|
|
285
|
+
expect(fetchData).toBeCalled();
|
|
286
|
+
});
|
|
287
|
+
it('render Table: fetchData with promise reject ', () => {
|
|
288
|
+
const fetchData = jest.fn(() => Promise.reject());
|
|
289
|
+
render(<Table withPagination={false} fetchData={fetchData} loading={false} />);
|
|
290
|
+
expect(fetchData).toBeCalled();
|
|
291
|
+
});
|
|
292
|
+
});
|