@dxc-technology/halstack-react 0.0.0-e792e0c → 0.0.0-e832ef8
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/babel.config.js +6 -2
- package/dist/BackgroundColorContext.js +46 -0
- package/dist/ThemeContext.js +235 -2
- package/dist/V3Textarea/V3Textarea.js +264 -0
- package/dist/accordion/Accordion.js +170 -81
- package/dist/accordion-group/AccordionGroup.js +186 -0
- package/dist/alert/Alert.js +184 -83
- package/dist/alert/index.d.ts +51 -0
- package/dist/badge/Badge.js +63 -0
- package/dist/box/Box.js +31 -23
- package/dist/button/Button.js +82 -27
- package/dist/card/Card.js +72 -35
- package/dist/checkbox/Checkbox.js +108 -32
- package/dist/chip/Chip.js +129 -35
- package/dist/common/RequiredComponent.js +2 -8
- package/dist/common/utils.js +2 -22
- package/dist/common/variables.js +1459 -197
- package/dist/date/Date.js +86 -64
- package/dist/date-input/DateInput.js +400 -0
- package/dist/date-input/index.d.ts +95 -0
- package/dist/dialog/Dialog.js +58 -37
- package/dist/dropdown/Dropdown.js +226 -94
- package/dist/file-input/FileInput.js +644 -0
- package/dist/file-input/FileItem.js +280 -0
- package/dist/file-input/index.d.ts +81 -0
- package/dist/footer/Footer.js +122 -47
- package/dist/footer/Icons.js +77 -0
- package/dist/header/Header.js +171 -91
- package/dist/header/Icons.js +59 -0
- package/dist/heading/Heading.js +81 -22
- package/dist/input-text/Icons.js +22 -0
- package/dist/input-text/InputText.js +293 -107
- package/dist/layout/ApplicationLayout.js +327 -0
- package/dist/layout/Icons.js +55 -0
- package/dist/link/Link.js +136 -35
- package/dist/main.d.ts +8 -0
- package/dist/main.js +111 -7
- package/dist/new-select/NewSelect.js +836 -0
- package/dist/new-select/index.d.ts +53 -0
- package/dist/number-input/NumberInput.js +136 -0
- package/dist/number-input/NumberInputContext.js +16 -0
- package/dist/number-input/index.d.ts +113 -0
- package/dist/paginator/Icons.js +66 -0
- package/dist/paginator/Paginator.js +162 -57
- package/dist/password-input/PasswordInput.js +198 -0
- package/dist/password-input/index.d.ts +94 -0
- package/dist/progress-bar/ProgressBar.js +97 -44
- package/dist/radio/Radio.js +39 -21
- package/dist/resultsetTable/ResultsetTable.js +93 -69
- package/dist/select/Select.js +250 -143
- package/dist/sidenav/Sidenav.js +85 -143
- package/dist/slider/Slider.js +219 -73
- package/dist/spinner/Spinner.js +249 -64
- package/dist/switch/Switch.js +51 -26
- package/dist/table/Table.js +63 -15
- package/dist/tabs/Tabs.js +208 -35
- package/dist/tabs-for-sections/TabsForSections.js +1 -16
- package/dist/tag/Tag.js +100 -35
- package/dist/text-input/TextInput.js +971 -0
- package/dist/text-input/index.d.ts +135 -0
- package/dist/textarea/Textarea.js +250 -107
- package/dist/textarea/index.d.ts +117 -0
- package/dist/toggle/Toggle.js +16 -19
- package/dist/toggle-group/ToggleGroup.js +327 -0
- package/dist/upload/Upload.js +16 -11
- package/dist/upload/buttons-upload/ButtonsUpload.js +35 -25
- package/dist/upload/buttons-upload/Icons.js +40 -0
- package/dist/upload/dragAndDropArea/DragAndDropArea.js +78 -31
- package/dist/upload/file-upload/FileToUpload.js +64 -33
- package/dist/upload/file-upload/Icons.js +66 -0
- package/dist/upload/files-upload/FilesToUpload.js +16 -16
- package/dist/upload/readme.md +2 -2
- package/dist/upload/transaction/Icons.js +160 -0
- package/dist/upload/transaction/Transaction.js +42 -49
- package/dist/upload/transactions/Transactions.js +38 -20
- package/dist/useTheme.js +22 -0
- package/dist/wizard/Icons.js +65 -0
- package/dist/wizard/Wizard.js +141 -56
- package/package.json +14 -6
- package/test/AccordionGroup.test.js +125 -0
- package/test/Date.test.js +49 -45
- package/test/DateInput.test.js +242 -0
- package/test/Dropdown.test.js +19 -4
- package/test/FileInput.test.js +201 -0
- package/test/Footer.test.js +2 -7
- package/test/Header.test.js +5 -10
- package/test/InputText.test.js +53 -41
- package/test/Link.test.js +25 -7
- package/test/NumberInput.test.js +259 -0
- package/test/Paginator.test.js +72 -60
- package/test/PasswordInput.test.js +83 -0
- package/test/ResultsetTable.test.js +66 -19
- package/test/Select.test.js +55 -34
- package/test/Sidenav.test.js +22 -64
- package/test/Slider.test.js +24 -15
- package/test/Spinner.test.js +5 -0
- package/test/Tabs.test.js +21 -0
- package/test/TextInput.test.js +732 -0
- package/test/Textarea.test.js +193 -0
- package/test/ToggleGroup.test.js +85 -0
- package/test/Upload.test.js +5 -5
- package/test/{TextArea.test.js → V3TextArea.test.js} +6 -7
- package/dist/accordion/Accordion.stories.js +0 -207
- package/dist/accordion/readme.md +0 -96
- package/dist/alert/Alert.stories.js +0 -158
- package/dist/alert/close.svg +0 -4
- package/dist/alert/error.svg +0 -4
- package/dist/alert/info.svg +0 -4
- package/dist/alert/readme.md +0 -43
- package/dist/alert/success.svg +0 -4
- package/dist/alert/warning.svg +0 -4
- package/dist/button/Button.stories.js +0 -224
- package/dist/button/readme.md +0 -93
- package/dist/common/services/example-service.js +0 -10
- package/dist/common/services/example-service.test.js +0 -12
- package/dist/date/calendar.svg +0 -1
- package/dist/date/calendar_dark.svg +0 -1
- package/dist/dialog/Dialog.stories.js +0 -217
- package/dist/dialog/readme.md +0 -32
- package/dist/dropdown/Dropdown.stories.js +0 -249
- package/dist/dropdown/baseline-arrow_drop_down.svg +0 -1
- package/dist/dropdown/baseline-arrow_drop_down_wh.svg +0 -4
- package/dist/dropdown/baseline-arrow_drop_up.svg +0 -1
- package/dist/dropdown/baseline-arrow_drop_up_wh.svg +0 -4
- package/dist/dropdown/readme.md +0 -69
- package/dist/footer/Footer.stories.js +0 -94
- package/dist/footer/dxc_logo_wht.png +0 -0
- package/dist/footer/readme.md +0 -41
- package/dist/header/Header.stories.js +0 -176
- package/dist/header/close_icon.svg +0 -1
- package/dist/header/dxc_logo_black.png +0 -0
- package/dist/header/dxc_logo_white.png +0 -0
- package/dist/header/hamb_menu_black.svg +0 -1
- package/dist/header/hamb_menu_white.svg +0 -1
- package/dist/header/readme.md +0 -33
- package/dist/input-text/InputText.stories.js +0 -209
- package/dist/input-text/error.svg +0 -1
- package/dist/input-text/readme.md +0 -91
- package/dist/paginator/images/next.svg +0 -3
- package/dist/paginator/images/nextPage.svg +0 -3
- package/dist/paginator/images/previous.svg +0 -3
- package/dist/paginator/images/previousPage.svg +0 -3
- package/dist/paginator/readme.md +0 -50
- package/dist/resultsetTable/arrow_downward-24px_wht.svg +0 -1
- package/dist/resultsetTable/arrow_upward-24px_wht.svg +0 -1
- package/dist/resultsetTable/unfold_more-24px_wht.svg +0 -1
- package/dist/select/Select.stories.js +0 -235
- package/dist/select/readme.md +0 -72
- package/dist/sidenav/arrow_icon.svg +0 -3
- package/dist/slider/Slider.stories.js +0 -241
- package/dist/upload/buttons-upload/drag-drop-icon.svg +0 -4
- package/dist/upload/buttons-upload/upload-button.svg +0 -1
- package/dist/upload/file-upload/audio-icon.svg +0 -4
- package/dist/upload/file-upload/close.svg +0 -4
- package/dist/upload/file-upload/file-icon.svg +0 -4
- package/dist/upload/file-upload/video-icon.svg +0 -4
- package/dist/upload/transaction/audio-icon-err.svg +0 -4
- package/dist/upload/transaction/audio-icon.svg +0 -4
- package/dist/upload/transaction/error-icon.svg +0 -4
- package/dist/upload/transaction/file-icon-err.svg +0 -4
- package/dist/upload/transaction/file-icon.svg +0 -4
- package/dist/upload/transaction/image-icon-err.svg +0 -4
- package/dist/upload/transaction/image-icon.svg +0 -4
- package/dist/upload/transaction/success-icon.svg +0 -4
- package/dist/upload/transaction/video-icon-err.svg +0 -4
- package/dist/upload/transaction/video-icon.svg +0 -4
- package/dist/wizard/invalid_icon.svg +0 -6
- package/dist/wizard/valid_icon.svg +0 -6
- package/dist/wizard/validation-wrong.svg +0 -6
- package/test/Toggle.test.js +0 -43
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { render, fireEvent } from "@testing-library/react";
|
|
2
|
+
import { render, fireEvent, act } from "@testing-library/react";
|
|
3
|
+
import userEvent from "@testing-library/user-event";
|
|
4
|
+
|
|
3
5
|
import DxcResultsetTable from "../src/resultsetTable/ResultsetTable";
|
|
4
6
|
|
|
5
7
|
const columns = [
|
|
@@ -14,7 +16,7 @@ const columns = [
|
|
|
14
16
|
{
|
|
15
17
|
displayValue: "City",
|
|
16
18
|
isSortable: false,
|
|
17
|
-
}
|
|
19
|
+
},
|
|
18
20
|
];
|
|
19
21
|
|
|
20
22
|
const rows = [
|
|
@@ -30,7 +32,7 @@ const rows = [
|
|
|
30
32
|
{
|
|
31
33
|
displayValue: "Oviedo",
|
|
32
34
|
sortValue: "Oviedo",
|
|
33
|
-
}
|
|
35
|
+
},
|
|
34
36
|
],
|
|
35
37
|
[
|
|
36
38
|
{
|
|
@@ -61,7 +63,7 @@ const rows = [
|
|
|
61
63
|
{
|
|
62
64
|
displayValue: "Albacete",
|
|
63
65
|
sortValue: "Albacete",
|
|
64
|
-
}
|
|
66
|
+
},
|
|
65
67
|
],
|
|
66
68
|
[
|
|
67
69
|
{
|
|
@@ -75,7 +77,7 @@ const rows = [
|
|
|
75
77
|
{
|
|
76
78
|
displayValue: "Albacete",
|
|
77
79
|
sortValue: "Albacete",
|
|
78
|
-
}
|
|
80
|
+
},
|
|
79
81
|
],
|
|
80
82
|
[
|
|
81
83
|
{
|
|
@@ -89,7 +91,7 @@ const rows = [
|
|
|
89
91
|
{
|
|
90
92
|
displayValue: "Madrid",
|
|
91
93
|
sortValue: "Madrid",
|
|
92
|
-
}
|
|
94
|
+
},
|
|
93
95
|
],
|
|
94
96
|
[
|
|
95
97
|
{
|
|
@@ -120,7 +122,7 @@ const rows = [
|
|
|
120
122
|
{
|
|
121
123
|
displayValue: "Madrid",
|
|
122
124
|
sortValue: "Madrid",
|
|
123
|
-
}
|
|
125
|
+
},
|
|
124
126
|
],
|
|
125
127
|
[
|
|
126
128
|
{
|
|
@@ -134,7 +136,7 @@ const rows = [
|
|
|
134
136
|
{
|
|
135
137
|
displayValue: "Barcelona",
|
|
136
138
|
sortValue: "Barcelona",
|
|
137
|
-
}
|
|
139
|
+
},
|
|
138
140
|
],
|
|
139
141
|
[
|
|
140
142
|
{
|
|
@@ -185,7 +187,7 @@ const rows2 = [
|
|
|
185
187
|
{
|
|
186
188
|
displayValue: "OtherValue",
|
|
187
189
|
sortValue: "OtherValue",
|
|
188
|
-
}
|
|
190
|
+
},
|
|
189
191
|
],
|
|
190
192
|
[
|
|
191
193
|
{
|
|
@@ -216,21 +218,22 @@ const rows2 = [
|
|
|
216
218
|
{
|
|
217
219
|
displayValue: "OtherValue",
|
|
218
220
|
sortValue: "OtherValue",
|
|
219
|
-
}
|
|
221
|
+
},
|
|
220
222
|
],
|
|
221
223
|
];
|
|
222
224
|
|
|
223
225
|
describe("ResultsetTable component tests", () => {
|
|
224
226
|
test("ResultsetTable rendered correctly", () => {
|
|
225
|
-
const { getByText } = render(
|
|
227
|
+
const { getByText } = render(
|
|
228
|
+
<DxcResultsetTable columns={columns} rows={rows} itemsPerPage={3}></DxcResultsetTable>
|
|
229
|
+
);
|
|
226
230
|
expect(getByText("Peter")).toBeTruthy();
|
|
227
231
|
});
|
|
228
232
|
test("Resultsettable shows as many rows as itemsPerPage", () => {
|
|
229
|
-
const {
|
|
233
|
+
const { getAllByRole } = render(
|
|
230
234
|
<DxcResultsetTable columns={columns} rows={rows} itemsPerPage={3}></DxcResultsetTable>
|
|
231
235
|
);
|
|
232
|
-
expect(
|
|
233
|
-
expect(queryByText("Rick")).toBeFalsy();
|
|
236
|
+
expect(getAllByRole("row").length - 1).toEqual(3);
|
|
234
237
|
});
|
|
235
238
|
|
|
236
239
|
test("Resultsettable shows rows on second page", () => {
|
|
@@ -240,23 +243,49 @@ describe("ResultsetTable component tests", () => {
|
|
|
240
243
|
expect(getByText("Peter")).toBeTruthy();
|
|
241
244
|
expect(getByText("Louis")).toBeTruthy();
|
|
242
245
|
expect(getByText("Lana")).toBeTruthy();
|
|
243
|
-
|
|
246
|
+
expect(getAllByRole("row").length - 1).toEqual(3);
|
|
247
|
+
const nextButton = getAllByRole("button")[3];
|
|
244
248
|
fireEvent.click(nextButton);
|
|
245
249
|
expect(getByText("4 to 6 of 10")).toBeTruthy();
|
|
246
|
-
expect(getByText("Page: 2 of 4")).toBeTruthy();
|
|
250
|
+
// expect(getByText("Page: 2 of 4")).toBeTruthy();
|
|
251
|
+
expect(getByText("Rick")).toBeTruthy();
|
|
252
|
+
expect(getByText("Mark")).toBeTruthy();
|
|
253
|
+
expect(getByText("Cris")).toBeTruthy();
|
|
254
|
+
expect(getAllByRole("row").length - 1).toEqual(3);
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
test("Resultsettable goToPage works as expected", () => {
|
|
258
|
+
const { getByText, getAllByRole, getByRole } = render(
|
|
259
|
+
<DxcResultsetTable columns={columns} showGoToPage={true} rows={rows} itemsPerPage={3}></DxcResultsetTable>
|
|
260
|
+
);
|
|
261
|
+
expect(getByText("Peter")).toBeTruthy();
|
|
262
|
+
expect(getByText("Louis")).toBeTruthy();
|
|
263
|
+
expect(getByText("Lana")).toBeTruthy();
|
|
264
|
+
expect(getAllByRole("row").length - 1).toEqual(3);
|
|
265
|
+
const goToPageSelect = getAllByRole("button")[2];
|
|
266
|
+
act(() => {
|
|
267
|
+
userEvent.click(goToPageSelect);
|
|
268
|
+
});
|
|
269
|
+
const goToPageOption = getByText("2");
|
|
270
|
+
act(() => {
|
|
271
|
+
userEvent.click(goToPageOption);
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
expect(getByText("4 to 6 of 10")).toBeTruthy();
|
|
247
275
|
expect(getByText("Rick")).toBeTruthy();
|
|
248
276
|
expect(getByText("Mark")).toBeTruthy();
|
|
249
277
|
expect(getByText("Cris")).toBeTruthy();
|
|
278
|
+
expect(getAllByRole("row").length - 1).toEqual(3);
|
|
250
279
|
});
|
|
251
280
|
|
|
252
281
|
test("Resultsettable going to the last page shows only one row", () => {
|
|
253
282
|
const { getByText, getAllByRole } = render(
|
|
254
283
|
<DxcResultsetTable columns={columns} rows={rows} itemsPerPage={3}></DxcResultsetTable>
|
|
255
284
|
);
|
|
256
|
-
|
|
285
|
+
debugger;
|
|
286
|
+
const lastButton = getAllByRole("button")[4];
|
|
257
287
|
fireEvent.click(lastButton);
|
|
258
288
|
expect(getByText("10 to 10 of 10")).toBeTruthy();
|
|
259
|
-
expect(getByText("Page: 4 of 4")).toBeTruthy();
|
|
260
289
|
expect(getAllByRole("row")).toHaveLength(2);
|
|
261
290
|
expect(getByText("Cosmin")).toBeTruthy();
|
|
262
291
|
});
|
|
@@ -273,10 +302,28 @@ describe("ResultsetTable component tests", () => {
|
|
|
273
302
|
expect(component.queryByText("Cosmin")).not.toBeTruthy();
|
|
274
303
|
});
|
|
275
304
|
test("Resultsettable change rows should go to first page", () => {
|
|
276
|
-
const {queryByText, rerender} = render(
|
|
305
|
+
const { queryByText, rerender } = render(
|
|
306
|
+
<DxcResultsetTable columns={columns} rows={rows} itemsPerPage={3}></DxcResultsetTable>
|
|
307
|
+
);
|
|
277
308
|
expect(queryByText("Peter")).toBeTruthy();
|
|
278
309
|
rerender(<DxcResultsetTable columns={columns} rows={rows2} itemsPerPage={3}></DxcResultsetTable>);
|
|
279
310
|
expect(queryByText("1 to 3 of 3")).toBeTruthy();
|
|
280
311
|
});
|
|
281
312
|
|
|
313
|
+
test("Resultsettable change itemsPerPage should go to first page", () => {
|
|
314
|
+
const { getAllByRole, queryByText, rerender } = render(
|
|
315
|
+
<DxcResultsetTable
|
|
316
|
+
columns={columns}
|
|
317
|
+
rows={rows}
|
|
318
|
+
itemsPerPage={3}
|
|
319
|
+
itemsPerPageOptions={[2, 3]}
|
|
320
|
+
></DxcResultsetTable>
|
|
321
|
+
);
|
|
322
|
+
const lastButton = getAllByRole("button")[5];
|
|
323
|
+
fireEvent.click(lastButton);
|
|
324
|
+
expect(getAllByRole("row").length - 1).toEqual(1);
|
|
325
|
+
rerender(<DxcResultsetTable columns={columns} rows={rows} itemsPerPage={6}></DxcResultsetTable>);
|
|
326
|
+
expect(getAllByRole("row").length - 1).toEqual(6);
|
|
327
|
+
expect(queryByText("Peter")).toBeTruthy();
|
|
328
|
+
});
|
|
282
329
|
});
|
package/test/Select.test.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { render,
|
|
2
|
+
import { render, act } from "@testing-library/react";
|
|
3
|
+
import userEvent from "@testing-library/user-event";
|
|
3
4
|
import DxcSelect from "../src/select/Select";
|
|
4
5
|
|
|
5
6
|
const optionsWithoutIcon = [
|
|
@@ -20,18 +21,43 @@ const optionsWithoutIcon = [
|
|
|
20
21
|
const optionsWithIcons = [
|
|
21
22
|
{
|
|
22
23
|
value: 1,
|
|
23
|
-
label: "
|
|
24
|
-
|
|
24
|
+
label: "Image 1",
|
|
25
|
+
icon: (
|
|
26
|
+
<svg
|
|
27
|
+
data-testid="image-1"
|
|
28
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
29
|
+
height="24px"
|
|
30
|
+
viewBox="0 0 24 24"
|
|
31
|
+
width="24px"
|
|
32
|
+
fill="currentColor"
|
|
33
|
+
>
|
|
34
|
+
<path d="M0 0h24v24H0V0z" fill="none" />
|
|
35
|
+
<path d="M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z" />
|
|
36
|
+
</svg>
|
|
37
|
+
),
|
|
25
38
|
},
|
|
26
39
|
{
|
|
27
40
|
value: 2,
|
|
28
|
-
label: "
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
41
|
+
label: "Image 2",
|
|
42
|
+
icon: (
|
|
43
|
+
<svg
|
|
44
|
+
data-testid="image-2"
|
|
45
|
+
version="1.1"
|
|
46
|
+
x="0px"
|
|
47
|
+
y="0px"
|
|
48
|
+
width="24px"
|
|
49
|
+
height="24px"
|
|
50
|
+
viewBox="0 0 24 24"
|
|
51
|
+
enable-background="new 0 0 24 24"
|
|
52
|
+
>
|
|
53
|
+
<g id="Bounding_Box">
|
|
54
|
+
<rect fill="none" width="24" height="24" />
|
|
55
|
+
</g>
|
|
56
|
+
<g id="Master">
|
|
57
|
+
<path d="M19,9.3V4h-3v2.6L12,3L2,12h3v8h5v-6h4v6h5v-8h3L19,9.3z M10,10c0-1.1,0.9-2,2-2s2,0.9,2,2H10z" />
|
|
58
|
+
</g>
|
|
59
|
+
</svg>
|
|
60
|
+
),
|
|
35
61
|
},
|
|
36
62
|
];
|
|
37
63
|
|
|
@@ -51,7 +77,7 @@ describe("Select component tests", () => {
|
|
|
51
77
|
expect(queryByText("Apple")).toBeFalsy();
|
|
52
78
|
const select = getByRole("button");
|
|
53
79
|
act(() => {
|
|
54
|
-
|
|
80
|
+
userEvent.click(select);
|
|
55
81
|
});
|
|
56
82
|
expect(getByText("Amazon")).toBeTruthy();
|
|
57
83
|
expect(getByText("Ebay")).toBeTruthy();
|
|
@@ -59,29 +85,27 @@ describe("Select component tests", () => {
|
|
|
59
85
|
});
|
|
60
86
|
|
|
61
87
|
test("Select renders options with icons before", () => {
|
|
62
|
-
const { getByRole,
|
|
88
|
+
const { getByRole, getByTestId } = render(
|
|
63
89
|
<DxcSelect label="test-select-name" options={optionsWithIcons}></DxcSelect>
|
|
64
90
|
);
|
|
65
91
|
const select = getByRole("button");
|
|
66
92
|
act(() => {
|
|
67
|
-
|
|
93
|
+
userEvent.click(select);
|
|
68
94
|
});
|
|
69
|
-
expect(
|
|
70
|
-
expect(
|
|
71
|
-
expect(getAllByRole("img")[2].getAttribute("src")).toEqual("/testIconLinkedin");
|
|
95
|
+
expect(getByTestId("image-1")).toBeTruthy();
|
|
96
|
+
expect(getByTestId("image-2")).toBeTruthy();
|
|
72
97
|
});
|
|
73
98
|
|
|
74
99
|
test("Select renders options with icons after", () => {
|
|
75
|
-
const { getByRole,
|
|
100
|
+
const { getByRole, getByTestId } = render(
|
|
76
101
|
<DxcSelect label="test-select-name" options={optionsWithIcons} iconPosition="after"></DxcSelect>
|
|
77
102
|
);
|
|
78
103
|
const select = getByRole("button");
|
|
79
104
|
act(() => {
|
|
80
|
-
|
|
105
|
+
userEvent.click(select);
|
|
81
106
|
});
|
|
82
|
-
expect(
|
|
83
|
-
expect(
|
|
84
|
-
expect(getAllByRole("img")[2].getAttribute("src")).toEqual("/testIconLinkedin");
|
|
107
|
+
expect(getByTestId("image-1")).toBeTruthy();
|
|
108
|
+
expect(getByTestId("image-2")).toBeTruthy();
|
|
85
109
|
});
|
|
86
110
|
|
|
87
111
|
test("Select renders with a default value", () => {
|
|
@@ -107,7 +131,7 @@ describe("Select component tests", () => {
|
|
|
107
131
|
expect(queryByText("Apple")).toBeFalsy();
|
|
108
132
|
const select = getByText("test-select-name");
|
|
109
133
|
act(() => {
|
|
110
|
-
|
|
134
|
+
userEvent.click(select);
|
|
111
135
|
});
|
|
112
136
|
expect(queryByText("Amazon")).toBeFalsy();
|
|
113
137
|
expect(queryByText("Ebay")).toBeFalsy();
|
|
@@ -121,11 +145,11 @@ describe("Select component tests", () => {
|
|
|
121
145
|
);
|
|
122
146
|
const select = getByText("Amazon");
|
|
123
147
|
act(() => {
|
|
124
|
-
|
|
148
|
+
userEvent.click(select);
|
|
125
149
|
});
|
|
126
150
|
const option2 = getByText("Ebay");
|
|
127
151
|
act(() => {
|
|
128
|
-
|
|
152
|
+
userEvent.click(option2);
|
|
129
153
|
});
|
|
130
154
|
expect(onChange).toHaveBeenCalledWith(2);
|
|
131
155
|
//The value is not changed
|
|
@@ -145,11 +169,11 @@ describe("Select component tests", () => {
|
|
|
145
169
|
);
|
|
146
170
|
const select = getByText("Amazon, Ebay");
|
|
147
171
|
act(() => {
|
|
148
|
-
|
|
172
|
+
userEvent.click(select);
|
|
149
173
|
});
|
|
150
174
|
const option3 = getByText("Apple");
|
|
151
175
|
act(() => {
|
|
152
|
-
|
|
176
|
+
userEvent.click(option3);
|
|
153
177
|
});
|
|
154
178
|
expect(onChange).toHaveBeenCalledWith([1, 2, 3]);
|
|
155
179
|
//The value is not changed
|
|
@@ -163,27 +187,24 @@ describe("Select component tests", () => {
|
|
|
163
187
|
);
|
|
164
188
|
const select = getByRole("button");
|
|
165
189
|
act(() => {
|
|
166
|
-
|
|
190
|
+
userEvent.click(select);
|
|
167
191
|
});
|
|
168
|
-
const option1 = getByText("Amazon");
|
|
169
|
-
const option2 = getByText("Ebay");
|
|
170
|
-
const option3 = getByText("Apple");
|
|
171
192
|
act(() => {
|
|
172
|
-
|
|
193
|
+
userEvent.click(getByText("Amazon"));
|
|
173
194
|
});
|
|
174
195
|
expect(onChange).toHaveBeenCalledWith([1]);
|
|
175
196
|
act(() => {
|
|
176
|
-
|
|
197
|
+
userEvent.click(getByText("Ebay"));
|
|
177
198
|
});
|
|
178
199
|
expect(onChange).toHaveBeenCalledWith([1, 2]);
|
|
179
200
|
expect(getByText("Amazon, Ebay")).toBeTruthy();
|
|
180
201
|
act(() => {
|
|
181
|
-
|
|
202
|
+
userEvent.click(getByText("Apple"));
|
|
182
203
|
});
|
|
183
204
|
expect(onChange).toHaveBeenCalledWith([1, 2, 3]);
|
|
184
205
|
expect(getByText("Amazon, Ebay, Apple")).toBeTruthy();
|
|
185
206
|
act(() => {
|
|
186
|
-
|
|
207
|
+
userEvent.click(getByText("Amazon"));
|
|
187
208
|
});
|
|
188
209
|
expect(onChange).toHaveBeenCalledWith([2, 3]);
|
|
189
210
|
expect(getByText("Ebay, Apple")).toBeTruthy();
|
package/test/Sidenav.test.js
CHANGED
|
@@ -3,85 +3,43 @@ import { render, fireEvent } from "@testing-library/react";
|
|
|
3
3
|
import DxcSidenav from "../src/sidenav/Sidenav";
|
|
4
4
|
|
|
5
5
|
const navContent = <p>nav-content-test</p>;
|
|
6
|
-
const pageContent = <p>page-content-test</p>;
|
|
7
6
|
|
|
8
7
|
describe("Sidenav component tests", () => {
|
|
9
|
-
test("Sidenav
|
|
10
|
-
const { getByText
|
|
11
|
-
<DxcSidenav navContent={navContent} pageContent={pageContent}></DxcSidenav>
|
|
12
|
-
);
|
|
13
|
-
expect(getByText("nav-content-test")).toBeTruthy();
|
|
14
|
-
expect(getByText("page-content-test")).toBeTruthy();
|
|
15
|
-
expect(queryByTestId("arrow-to-right")).toBeTruthy();
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
test("Sidenav in push mode renders nav and page content, and arrow", () => {
|
|
19
|
-
const { getByText, queryByTestId } = render(
|
|
20
|
-
<DxcSidenav navContent={navContent} pageContent={pageContent} mode="push"></DxcSidenav>
|
|
21
|
-
);
|
|
8
|
+
test("Sidenav renders nav content", () => {
|
|
9
|
+
const { getByText } = render(<DxcSidenav>{navContent}</DxcSidenav>);
|
|
22
10
|
expect(getByText("nav-content-test")).toBeTruthy();
|
|
23
|
-
expect(getByText("page-content-test")).toBeTruthy();
|
|
24
|
-
expect(queryByTestId("arrow-to-right")).toBeTruthy();
|
|
25
11
|
});
|
|
26
12
|
|
|
27
|
-
test("Sidenav
|
|
13
|
+
test("Sidenav renders nav and page content in mobile version", () => {
|
|
28
14
|
//425 is mobile width
|
|
29
15
|
Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 425 });
|
|
30
|
-
const { getByText } = render(<DxcSidenav
|
|
16
|
+
const { getByText } = render(<DxcSidenav>{navContent}</DxcSidenav>);
|
|
31
17
|
expect(getByText("nav-content-test")).toBeTruthy();
|
|
32
|
-
expect(getByText("page-content-test")).toBeTruthy();
|
|
33
18
|
});
|
|
34
19
|
|
|
35
|
-
test("Sidenav
|
|
36
|
-
//425 is mobile width
|
|
37
|
-
Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 425 });
|
|
20
|
+
test("Sidenav renders compound components", () => {
|
|
38
21
|
const { getByText } = render(
|
|
39
|
-
<DxcSidenav
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
test("Sidenav in overlay mode not renders arrow", () => {
|
|
46
|
-
//We need to force the offsetWidth value to detect that is not responsive
|
|
47
|
-
Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 1024 });
|
|
48
|
-
const { queryByTestId } = render(
|
|
49
|
-
<DxcSidenav navContent={navContent} pageContent={pageContent} displayArrow={false}></DxcSidenav>
|
|
50
|
-
);
|
|
51
|
-
expect(queryByTestId("arrow-to-right")).toBeNull();
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
test("Sidenav in push mode not renders arrow", () => {
|
|
55
|
-
//We need to force the offsetWidth value to detect that is not responsive
|
|
56
|
-
Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 1024 });
|
|
57
|
-
const { queryByTestId } = render(
|
|
58
|
-
<DxcSidenav navContent={navContent} pageContent={pageContent} displayArrow={false} mode="push"></DxcSidenav>
|
|
59
|
-
);
|
|
60
|
-
expect(queryByTestId("arrow-to-right")).toBeNull();
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
test("Sidenav renders arrow with arrow distance", () => {
|
|
64
|
-
const { queryByTestId } = render(
|
|
65
|
-
<DxcSidenav navContent={navContent} pageContent={pageContent} arrowDistance="10px"></DxcSidenav>
|
|
22
|
+
<DxcSidenav>
|
|
23
|
+
<DxcSidenav.Title>test-title</DxcSidenav.Title>
|
|
24
|
+
<DxcSidenav.Subtitle>test-subtitle</DxcSidenav.Subtitle>
|
|
25
|
+
<DxcSidenav.Link href="#">test-link</DxcSidenav.Link>
|
|
26
|
+
</DxcSidenav>
|
|
66
27
|
);
|
|
67
|
-
expect(
|
|
28
|
+
expect(getByText("test-title")).toBeTruthy();
|
|
29
|
+
expect(getByText("test-subtitle")).toBeTruthy();
|
|
30
|
+
expect(getByText("test-link")).toBeTruthy();
|
|
68
31
|
});
|
|
69
32
|
|
|
70
|
-
test("Sidenav
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
33
|
+
test("Sidenav link onClick", () => {
|
|
34
|
+
const onClick = jest.fn();
|
|
35
|
+
const { getByText } = render(
|
|
36
|
+
<DxcSidenav>
|
|
37
|
+
<DxcSidenav.Link onClick={onClick}>test-link</DxcSidenav.Link>
|
|
38
|
+
</DxcSidenav>
|
|
75
39
|
);
|
|
76
|
-
expect(queryByTestId("arrow-to-right")).toBeTruthy();
|
|
77
|
-
});
|
|
78
40
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const { queryByTestId } = render(
|
|
83
|
-
<DxcSidenav navContent={navContent} pageContent={pageContent} displayArrow={false} mode="push"></DxcSidenav>
|
|
84
|
-
);
|
|
85
|
-
expect(queryByTestId("arrow-to-right")).toBeTruthy();
|
|
41
|
+
const link = getByText("test-link");
|
|
42
|
+
fireEvent.click(link);
|
|
43
|
+
expect(onClick).toHaveBeenCalled();
|
|
86
44
|
});
|
|
87
45
|
});
|
package/test/Slider.test.js
CHANGED
|
@@ -4,7 +4,7 @@ import DxcSlider from "../src/slider/Slider";
|
|
|
4
4
|
|
|
5
5
|
describe("Slider component tests", () => {
|
|
6
6
|
test("Slider renders with correct text", () => {
|
|
7
|
-
const { getByText } = render(<DxcSlider minValue={0} maxValue={100} showLimitsValues
|
|
7
|
+
const { getByText } = render(<DxcSlider minValue={0} maxValue={100} showLimitsValues />);
|
|
8
8
|
expect(getByText("0")).toBeTruthy();
|
|
9
9
|
expect(getByText("100")).toBeTruthy();
|
|
10
10
|
});
|
|
@@ -12,37 +12,29 @@ describe("Slider component tests", () => {
|
|
|
12
12
|
test("Calls correct function onChange in controlled slider", () => {
|
|
13
13
|
const onChange = jest.fn();
|
|
14
14
|
const { getByRole } = render(
|
|
15
|
-
<DxcSlider minValue={0} maxValue={100} onChange={onChange} showLimitsValues value={13} showInput
|
|
15
|
+
<DxcSlider minValue={0} maxValue={100} onChange={onChange} showLimitsValues value={13} showInput />
|
|
16
16
|
);
|
|
17
17
|
act(() => {
|
|
18
18
|
fireEvent.change(getByRole("textbox"), { target: { value: 25 } });
|
|
19
19
|
});
|
|
20
|
-
expect(onChange).toHaveBeenCalledWith(
|
|
20
|
+
expect(onChange).toHaveBeenCalledWith(25);
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
test("Calls correct function onChange in uncontrolled slider", () => {
|
|
24
24
|
const onChange = jest.fn();
|
|
25
25
|
const { getByRole } = render(
|
|
26
|
-
<DxcSlider minValue={0} maxValue={100} onChange={onChange} showLimitsValues showInput
|
|
26
|
+
<DxcSlider minValue={0} maxValue={100} onChange={onChange} showLimitsValues showInput />
|
|
27
27
|
);
|
|
28
28
|
act(() => {
|
|
29
29
|
fireEvent.change(getByRole("textbox"), { target: { value: 25 } });
|
|
30
30
|
});
|
|
31
|
-
expect(onChange).toHaveBeenCalledWith(
|
|
31
|
+
expect(onChange).toHaveBeenCalledWith(25);
|
|
32
32
|
});
|
|
33
33
|
|
|
34
34
|
test("Disabled slider have disabled input", () => {
|
|
35
35
|
const onChange = jest.fn();
|
|
36
36
|
const { getByRole } = render(
|
|
37
|
-
<DxcSlider
|
|
38
|
-
minValue={0}
|
|
39
|
-
maxValue={100}
|
|
40
|
-
onChange={onChange}
|
|
41
|
-
showLimitsValues
|
|
42
|
-
disabled
|
|
43
|
-
showInput
|
|
44
|
-
value={13}
|
|
45
|
-
></DxcSlider>
|
|
37
|
+
<DxcSlider minValue={0} maxValue={100} onChange={onChange} showLimitsValues disabled showInput value={13} />
|
|
46
38
|
);
|
|
47
39
|
act(() => {
|
|
48
40
|
fireEvent.change(getByRole("textbox"), { target: { value: 25 } });
|
|
@@ -54,7 +46,7 @@ describe("Slider component tests", () => {
|
|
|
54
46
|
test("Calls correct function onDragEnd", () => {
|
|
55
47
|
const onDragEnd = jest.fn();
|
|
56
48
|
const { getByRole } = render(
|
|
57
|
-
<DxcSlider minValue={0} maxValue={100} showLimitsValues showInput onDragEnd={onDragEnd} value={25}
|
|
49
|
+
<DxcSlider minValue={0} maxValue={100} showLimitsValues showInput onDragEnd={onDragEnd} value={25} />
|
|
58
50
|
);
|
|
59
51
|
act(() => {
|
|
60
52
|
fireEvent.mouseDown(getByRole("slider"));
|
|
@@ -62,4 +54,21 @@ describe("Slider component tests", () => {
|
|
|
62
54
|
});
|
|
63
55
|
expect(onDragEnd).toHaveBeenCalled();
|
|
64
56
|
});
|
|
57
|
+
|
|
58
|
+
test("Calls correct function labelFormatCallback", () => {
|
|
59
|
+
const labelFormatCallback = jest.fn((x) => `${x}$`);
|
|
60
|
+
const { getByText } = render(
|
|
61
|
+
<DxcSlider
|
|
62
|
+
minValue={0}
|
|
63
|
+
maxValue={100}
|
|
64
|
+
showLimitsValues
|
|
65
|
+
showInput
|
|
66
|
+
value={25}
|
|
67
|
+
labelFormatCallback={labelFormatCallback}
|
|
68
|
+
/>
|
|
69
|
+
);
|
|
70
|
+
expect(getByText("0$")).toBeTruthy();
|
|
71
|
+
expect(getByText("100$")).toBeTruthy();
|
|
72
|
+
expect(labelFormatCallback).toHaveBeenCalledTimes(2);
|
|
73
|
+
});
|
|
65
74
|
});
|
package/test/Spinner.test.js
CHANGED
|
@@ -24,4 +24,9 @@ describe("Spinner component tests", () => {
|
|
|
24
24
|
expect(getByText("test-loading")).toBeTruthy();
|
|
25
25
|
expect(getByText("75%")).toBeTruthy();
|
|
26
26
|
});
|
|
27
|
+
|
|
28
|
+
test("Get spinner by role", () => {
|
|
29
|
+
const { getByRole } = render(<DxcSpinner label="test-loading" value={75} showValue></DxcSpinner>);
|
|
30
|
+
expect(getByRole("progressbar")).toBeTruthy();
|
|
31
|
+
});
|
|
27
32
|
});
|
package/test/Tabs.test.js
CHANGED
|
@@ -14,6 +14,21 @@ const sampleTabs = [
|
|
|
14
14
|
},
|
|
15
15
|
];
|
|
16
16
|
|
|
17
|
+
const sampleTabsWithBadge = [
|
|
18
|
+
{
|
|
19
|
+
label: "Tab-1",
|
|
20
|
+
notificationNumber: "10",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
label: "Tab-2",
|
|
24
|
+
notificationNumber: "20",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
label: "Tab-3",
|
|
28
|
+
notificationNumber: "101",
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
|
|
17
32
|
describe("Tabs component tests", () => {
|
|
18
33
|
test("Tabs render with correct labels", () => {
|
|
19
34
|
const { getByText } = render(<DxcTabs tabs={sampleTabs}></DxcTabs>);
|
|
@@ -21,6 +36,12 @@ describe("Tabs component tests", () => {
|
|
|
21
36
|
expect(getByText("Tab-2")).toBeTruthy();
|
|
22
37
|
expect(getByText("Tab-3")).toBeTruthy();
|
|
23
38
|
});
|
|
39
|
+
test("Tabs render with correct labels and badges", () => {
|
|
40
|
+
const { getByText } = render(<DxcTabs tabs={sampleTabsWithBadge}></DxcTabs>);
|
|
41
|
+
expect(getByText("10")).toBeTruthy();
|
|
42
|
+
expect(getByText("20")).toBeTruthy();
|
|
43
|
+
expect(getByText("+99")).toBeTruthy();
|
|
44
|
+
});
|
|
24
45
|
|
|
25
46
|
test("Tabs render with correct icons", () => {
|
|
26
47
|
const { getAllByRole } = render(
|