@dxc-technology/halstack-react 0.0.0-a9c6846 → 0.0.0-acb1a24
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/README.md +1 -1
- package/dist/ThemeContext.js +44 -42
- package/dist/V3Select/V3Select.js +549 -0
- package/dist/V3Select/index.d.ts +27 -0
- package/dist/V3Textarea/V3Textarea.js +264 -0
- package/dist/V3Textarea/index.d.ts +27 -0
- package/dist/accordion/index.d.ts +28 -0
- package/dist/accordion-group/index.d.ts +16 -0
- package/dist/alert/Alert.js +5 -5
- package/dist/box/index.d.ts +25 -0
- package/dist/button/Button.js +3 -3
- package/dist/button/index.d.ts +24 -0
- package/dist/card/index.d.ts +22 -0
- package/dist/checkbox/Checkbox.js +4 -5
- package/dist/checkbox/index.d.ts +24 -0
- package/dist/chip/index.d.ts +22 -0
- package/dist/common/variables.js +223 -90
- package/dist/date/index.d.ts +27 -0
- package/dist/{new-date/NewDate.js → date-input/DateInput.js} +36 -36
- package/dist/{new-date → date-input}/index.d.ts +3 -3
- package/dist/dialog/index.d.ts +18 -0
- package/dist/dropdown/index.d.ts +26 -0
- package/dist/file-input/FileInput.js +6 -3
- package/dist/file-input/FileItem.js +8 -1
- package/dist/file-input/index.d.ts +1 -1
- package/dist/footer/Footer.js +44 -18
- package/dist/footer/Icons.js +77 -0
- package/dist/footer/index.d.ts +25 -0
- package/dist/header/Header.js +122 -55
- package/dist/header/Icons.js +59 -0
- package/dist/header/index.d.ts +25 -0
- package/dist/heading/Heading.js +12 -0
- package/dist/heading/index.d.ts +17 -0
- package/dist/input-text/Icons.js +22 -0
- package/dist/input-text/InputText.js +4 -6
- package/dist/input-text/index.d.ts +36 -0
- package/dist/layout/ApplicationLayout.js +4 -8
- package/dist/layout/Icons.js +55 -0
- package/dist/link/index.d.ts +23 -0
- package/dist/main.d.ts +38 -5
- package/dist/main.js +30 -30
- package/dist/{number/Number.js → number-input/NumberInput.js} +9 -11
- package/dist/{number/NumberContext.js → number-input/NumberInputContext.js} +2 -2
- package/dist/{number → number-input}/index.d.ts +3 -3
- package/dist/paginator/Icons.js +66 -0
- package/dist/paginator/Paginator.js +53 -37
- package/dist/paginator/index.d.ts +20 -0
- package/dist/{password/Password.js → password-input/PasswordInput.js} +14 -11
- package/dist/{password → password-input}/index.d.ts +5 -5
- package/dist/progress-bar/index.d.ts +18 -0
- package/dist/radio/index.d.ts +23 -0
- package/dist/resultsetTable/index.d.ts +19 -0
- package/dist/select/Select.js +848 -301
- package/dist/select/index.d.ts +53 -0
- package/dist/sidenav/index.d.ts +13 -0
- package/dist/slider/Slider.js +104 -19
- package/dist/slider/index.d.ts +29 -0
- package/dist/spinner/index.d.ts +17 -0
- package/dist/switch/index.d.ts +24 -0
- package/dist/table/index.d.ts +13 -0
- package/dist/tabs/index.d.ts +19 -0
- package/dist/tag/index.d.ts +24 -0
- package/dist/{new-input-text/NewInputText.js → text-input/TextInput.js} +49 -57
- package/dist/{new-input-text → text-input}/index.d.ts +1 -1
- package/dist/textarea/Textarea.js +227 -122
- package/dist/{new-textarea → textarea}/index.d.ts +1 -1
- package/dist/toggle/index.d.ts +21 -0
- package/dist/toggle-group/ToggleGroup.js +132 -28
- package/dist/toggle-group/index.d.ts +21 -0
- package/dist/upload/buttons-upload/ButtonsUpload.js +7 -11
- package/dist/upload/buttons-upload/Icons.js +40 -0
- package/dist/upload/dragAndDropArea/DragAndDropArea.js +14 -14
- package/dist/upload/dragAndDropArea/Icons.js +39 -0
- package/dist/upload/file-upload/FileToUpload.js +26 -21
- package/dist/upload/file-upload/Icons.js +66 -0
- package/dist/upload/index.d.ts +15 -0
- package/dist/upload/transaction/Icons.js +160 -0
- package/dist/upload/transaction/Transaction.js +11 -38
- package/dist/wizard/Icons.js +65 -0
- package/dist/wizard/Wizard.js +3 -9
- package/dist/wizard/index.d.ts +18 -0
- package/package.json +6 -10
- package/test/Date.test.js +13 -11
- package/test/{NewDate.test.js → DateInput.test.js} +33 -23
- package/test/Footer.test.js +2 -7
- package/test/Header.test.js +5 -10
- package/test/Heading.test.js +60 -12
- package/test/{Number.test.js → NumberInput.test.js} +47 -45
- package/test/Paginator.test.js +5 -1
- package/test/PasswordInput.test.js +83 -0
- package/test/ResultsetTable.test.js +5 -4
- package/test/Select.test.js +374 -171
- package/test/Slider.test.js +9 -17
- package/test/{NewInputText.test.js → TextInput.test.js} +51 -53
- package/test/{NewTextarea.test.js → Textarea.test.js} +16 -18
- package/test/ToggleGroup.test.js +5 -1
- package/test/Upload.test.js +1 -1
- package/test/V3Select.test.js +212 -0
- package/test/{TextArea.test.js → V3TextArea.test.js} +6 -7
- package/dist/checkbox/Checkbox.stories.js +0 -144
- package/dist/checkbox/readme.md +0 -116
- package/dist/date/Date.stories.js +0 -205
- package/dist/date/readme.md +0 -73
- package/dist/footer/Footer.stories.js +0 -94
- package/dist/footer/dxc_logo.svg +0 -15
- 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.svg +0 -8
- 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/layout/facebook.svg +0 -45
- package/dist/layout/linkedin.svg +0 -50
- package/dist/layout/twitter.svg +0 -53
- package/dist/link/readme.md +0 -51
- package/dist/new-textarea/NewTextarea.js +0 -362
- 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/password/styles.css +0 -3
- package/dist/progress-bar/ProgressBar.stories.js +0 -280
- package/dist/progress-bar/readme.md +0 -63
- package/dist/radio/Radio.stories.js +0 -166
- package/dist/radio/readme.md +0 -70
- 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/slider/Slider.stories.js +0 -241
- package/dist/slider/readme.md +0 -64
- package/dist/spinner/Spinner.stories.js +0 -183
- package/dist/spinner/readme.md +0 -65
- package/dist/switch/Switch.stories.js +0 -134
- package/dist/switch/readme.md +0 -133
- package/dist/tabs/Tabs.stories.js +0 -130
- package/dist/tabs/readme.md +0 -78
- package/dist/tabs-for-sections/TabsForSections.js +0 -92
- package/dist/tabs-for-sections/readme.md +0 -78
- package/dist/toggle/Toggle.stories.js +0 -297
- package/dist/toggle/readme.md +0 -80
- package/dist/upload/Upload.stories.js +0 -72
- package/dist/upload/buttons-upload/drag-drop-icon.svg +0 -4
- package/dist/upload/buttons-upload/upload-button.svg +0 -1
- package/dist/upload/dragAndDropArea/upload_drop.svg +0 -4
- package/dist/upload/dragAndDropArea/upload_file.svg +0 -4
- 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/readme.md +0 -37
- 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 -5
- package/dist/wizard/valid_icon.svg +0 -5
- package/dist/wizard/validation-wrong.svg +0 -6
- package/test/Password.test.js +0 -83
- package/test/TabsForSections.test.js +0 -34
|
@@ -2,12 +2,12 @@ import React from "react";
|
|
|
2
2
|
import { render, fireEvent } from "@testing-library/react";
|
|
3
3
|
import userEvent from "@testing-library/user-event";
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import DxcDateInput from "../src/date-input/DateInput";
|
|
6
6
|
|
|
7
|
-
describe("
|
|
7
|
+
describe("DateInput component tests", () => {
|
|
8
8
|
test("Renders with correct label, helper text, optional, placeholder and clearable action", () => {
|
|
9
9
|
const { getByText, getByRole, getAllByRole } = render(
|
|
10
|
-
<
|
|
10
|
+
<DxcDateInput label="Example label" helperText="Example of helper text" placeholder optional clearable />
|
|
11
11
|
);
|
|
12
12
|
const input = getByRole("textbox");
|
|
13
13
|
expect(getByText("Example label")).toBeTruthy();
|
|
@@ -21,7 +21,7 @@ describe("NewDate component tests", () => {
|
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
test("Renders with personalized error", () => {
|
|
24
|
-
const { getByText } = render(<
|
|
24
|
+
const { getByText } = render(<DxcDateInput error="Personalized error." />);
|
|
25
25
|
expect(getByText("Personalized error.")).toBeTruthy();
|
|
26
26
|
});
|
|
27
27
|
|
|
@@ -30,7 +30,7 @@ describe("NewDate component tests", () => {
|
|
|
30
30
|
expect(value).toBe("10/90/2010");
|
|
31
31
|
expect(error).toBe("Invalid date.");
|
|
32
32
|
});
|
|
33
|
-
const { getByRole } = render(<
|
|
33
|
+
const { getByRole } = render(<DxcDateInput label="With format MM/dd/yyyy" format="MM/dd/yyyy" onBlur={onBlur} />);
|
|
34
34
|
const input = getByRole("textbox");
|
|
35
35
|
|
|
36
36
|
userEvent.type(input, "10/90/2010");
|
|
@@ -39,7 +39,9 @@ describe("NewDate component tests", () => {
|
|
|
39
39
|
|
|
40
40
|
test("Renders with correct format: user typed date but it's invalid, onChange error", () => {
|
|
41
41
|
const onChange = jest.fn();
|
|
42
|
-
const { getByRole } = render(
|
|
42
|
+
const { getByRole } = render(
|
|
43
|
+
<DxcDateInput label="With format MM/dd/yyyy" format="MM/dd/yyyy" onChange={onChange} />
|
|
44
|
+
);
|
|
43
45
|
const input = getByRole("textbox");
|
|
44
46
|
|
|
45
47
|
userEvent.type(input, "10/90/2010");
|
|
@@ -48,7 +50,7 @@ describe("NewDate component tests", () => {
|
|
|
48
50
|
});
|
|
49
51
|
|
|
50
52
|
test("Calendar renders with correct date: today's date", () => {
|
|
51
|
-
const { getByText, getByRole } = render(<
|
|
53
|
+
const { getByText, getByRole } = render(<DxcDateInput />);
|
|
52
54
|
const calendarAction = getByRole("button");
|
|
53
55
|
const d = new Date();
|
|
54
56
|
const options = { weekday: "short", month: "short", day: "numeric" };
|
|
@@ -58,7 +60,7 @@ describe("NewDate component tests", () => {
|
|
|
58
60
|
});
|
|
59
61
|
|
|
60
62
|
test("Calendar renders with correct date: value prop", () => {
|
|
61
|
-
const { getByText, getByRole } = render(<
|
|
63
|
+
const { getByText, getByRole } = render(<DxcDateInput value="20-10-2019" />);
|
|
62
64
|
const calendarAction = getByRole("button");
|
|
63
65
|
const d = new Date(2019, 9, 20);
|
|
64
66
|
const options = { weekday: "short", month: "short", day: "numeric" };
|
|
@@ -68,7 +70,7 @@ describe("NewDate component tests", () => {
|
|
|
68
70
|
});
|
|
69
71
|
|
|
70
72
|
test("Calendar renders with correct date: user typed value", () => {
|
|
71
|
-
const { getByText, getByRole } = render(<
|
|
73
|
+
const { getByText, getByRole } = render(<DxcDateInput />);
|
|
72
74
|
const calendarAction = getByRole("button");
|
|
73
75
|
const d = new Date(2010, 0, 1);
|
|
74
76
|
const options = { weekday: "short", month: "short", day: "numeric" };
|
|
@@ -81,7 +83,7 @@ describe("NewDate component tests", () => {
|
|
|
81
83
|
|
|
82
84
|
test("Calendar renders with correct date: invalid date, renders with today's date", () => {
|
|
83
85
|
const onBlur = jest.fn();
|
|
84
|
-
const { getByText, getByRole } = render(<
|
|
86
|
+
const { getByText, getByRole } = render(<DxcDateInput onBlur={onBlur} />);
|
|
85
87
|
const calendarAction = getByRole("button");
|
|
86
88
|
const d = new Date();
|
|
87
89
|
const options = { weekday: "short", month: "short", day: "numeric" };
|
|
@@ -96,11 +98,11 @@ describe("NewDate component tests", () => {
|
|
|
96
98
|
});
|
|
97
99
|
|
|
98
100
|
test("Selecting a date from the calendar with an specific format", () => {
|
|
99
|
-
const { getByText, getByRole } = render(<
|
|
101
|
+
const { getByText, getByRole } = render(<DxcDateInput label="With format M-dd-yyyy" format="M-dd-yyyy" />);
|
|
100
102
|
const input = getByRole("textbox");
|
|
101
103
|
const calendarAction = getByRole("button");
|
|
102
104
|
userEvent.click(calendarAction);
|
|
103
|
-
const dayButton = getByText("10").closest(
|
|
105
|
+
const dayButton = getByText("10").closest("button");
|
|
104
106
|
fireEvent.click(dayButton);
|
|
105
107
|
const d = new Date();
|
|
106
108
|
d.setDate(10);
|
|
@@ -111,7 +113,7 @@ describe("NewDate component tests", () => {
|
|
|
111
113
|
});
|
|
112
114
|
|
|
113
115
|
test("Selecting a date from the calendar (using keyboard presses)", () => {
|
|
114
|
-
const { getByRole } = render(<
|
|
116
|
+
const { getByRole } = render(<DxcDateInput />);
|
|
115
117
|
const calendarAction = getByRole("button");
|
|
116
118
|
const input = getByRole("textbox");
|
|
117
119
|
|
|
@@ -128,7 +130,7 @@ describe("NewDate component tests", () => {
|
|
|
128
130
|
test("onChange & onBlur functions are called correctly", () => {
|
|
129
131
|
const onBlur = jest.fn();
|
|
130
132
|
const onChange = jest.fn();
|
|
131
|
-
const { getByRole } = render(<
|
|
133
|
+
const { getByRole } = render(<DxcDateInput onChange={onChange} onBlur={onBlur} />);
|
|
132
134
|
const input = getByRole("textbox");
|
|
133
135
|
const d = new Date(2011, 9, 10);
|
|
134
136
|
|
|
@@ -144,7 +146,7 @@ describe("NewDate component tests", () => {
|
|
|
144
146
|
test("onChange & onBlur functions are called correctly, also with errors", () => {
|
|
145
147
|
const onBlur = jest.fn();
|
|
146
148
|
const onChange = jest.fn();
|
|
147
|
-
const { getByRole } = render(<
|
|
149
|
+
const { getByRole } = render(<DxcDateInput onChange={onChange} onBlur={onBlur} />);
|
|
148
150
|
const input = getByRole("textbox");
|
|
149
151
|
|
|
150
152
|
userEvent.type(input, "10-10-");
|
|
@@ -158,7 +160,7 @@ describe("NewDate component tests", () => {
|
|
|
158
160
|
|
|
159
161
|
test("onBlur function removes the error when it is fixed", () => {
|
|
160
162
|
const onBlur = jest.fn();
|
|
161
|
-
const { getByRole } = render(<
|
|
163
|
+
const { getByRole } = render(<DxcDateInput onBlur={onBlur} />);
|
|
162
164
|
const input = getByRole("textbox");
|
|
163
165
|
const d = new Date(2002, 1, 20);
|
|
164
166
|
|
|
@@ -177,7 +179,7 @@ describe("NewDate component tests", () => {
|
|
|
177
179
|
|
|
178
180
|
test("onBlur function removes the error when the input is empty", () => {
|
|
179
181
|
const onBlur = jest.fn();
|
|
180
|
-
const { getByRole } = render(<
|
|
182
|
+
const { getByRole } = render(<DxcDateInput onBlur={onBlur} optional />);
|
|
181
183
|
const input = getByRole("textbox");
|
|
182
184
|
|
|
183
185
|
userEvent.type(input, "test");
|
|
@@ -194,7 +196,7 @@ describe("NewDate component tests", () => {
|
|
|
194
196
|
test("onBlur & onChange functions error: required field (not optional)", () => {
|
|
195
197
|
const onBlur = jest.fn();
|
|
196
198
|
const onChange = jest.fn();
|
|
197
|
-
const { getByRole } = render(<
|
|
199
|
+
const { getByRole } = render(<DxcDateInput onBlur={onBlur} onChange={onChange} />);
|
|
198
200
|
const date = getByRole("textbox");
|
|
199
201
|
|
|
200
202
|
userEvent.type(date, "t");
|
|
@@ -202,13 +204,21 @@ describe("NewDate component tests", () => {
|
|
|
202
204
|
userEvent.clear(date);
|
|
203
205
|
fireEvent.blur(date);
|
|
204
206
|
expect(onBlur).toHaveBeenCalled();
|
|
205
|
-
expect(onBlur).toHaveBeenCalledWith({
|
|
207
|
+
expect(onBlur).toHaveBeenCalledWith({
|
|
208
|
+
value: "",
|
|
209
|
+
error: "This field is required. Please, enter a value.",
|
|
210
|
+
date: null,
|
|
211
|
+
});
|
|
206
212
|
expect(onChange).toHaveBeenCalled();
|
|
207
|
-
expect(onChange).toHaveBeenCalledWith({
|
|
213
|
+
expect(onChange).toHaveBeenCalledWith({
|
|
214
|
+
value: "",
|
|
215
|
+
error: "This field is required. Please, enter a value.",
|
|
216
|
+
date: null,
|
|
217
|
+
});
|
|
208
218
|
});
|
|
209
219
|
|
|
210
|
-
test("Disabled date (calendar action must be shown but not clickable)", () => {
|
|
211
|
-
const { getByRole, queryByText } = render(<
|
|
220
|
+
test("Disabled date input (calendar action must be shown but not clickable)", () => {
|
|
221
|
+
const { getByRole, queryByText } = render(<DxcDateInput disabled />);
|
|
212
222
|
const calendarAction = getByRole("button");
|
|
213
223
|
const d = new Date();
|
|
214
224
|
const options = { weekday: "short", month: "short", day: "numeric" };
|
|
@@ -219,7 +229,7 @@ describe("NewDate component tests", () => {
|
|
|
219
229
|
});
|
|
220
230
|
|
|
221
231
|
test("Input has correct accesibility attributes", () => {
|
|
222
|
-
const { getByRole } = render(<
|
|
232
|
+
const { getByRole } = render(<DxcDateInput label="Date input label" />);
|
|
223
233
|
const input = getByRole("textbox");
|
|
224
234
|
expect(input.getAttribute("aria-autocomplete")).toBeNull();
|
|
225
235
|
expect(input.getAttribute("aria-controls")).toBeNull();
|
package/test/Footer.test.js
CHANGED
|
@@ -5,13 +5,8 @@ import icon from "../../app/src/images/linkedin.svg";
|
|
|
5
5
|
|
|
6
6
|
describe("Footer component tests", () => {
|
|
7
7
|
test("Footer renders with default logo", () => {
|
|
8
|
-
const {
|
|
9
|
-
expect(
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
test("Footer renders with logo", () => {
|
|
13
|
-
const { getByRole } = render(<DxcFooter logoSrc={icon}></DxcFooter>);
|
|
14
|
-
expect(getByRole("img")).toBeTruthy();
|
|
8
|
+
const { getByTitle } = render(<DxcFooter></DxcFooter>);
|
|
9
|
+
expect(getByTitle("DXC Logo")).toBeTruthy();
|
|
15
10
|
});
|
|
16
11
|
|
|
17
12
|
test("Footer renders with social links", () => {
|
package/test/Header.test.js
CHANGED
|
@@ -5,25 +5,20 @@ import icon from "../../app/src/images/linkedin.svg";
|
|
|
5
5
|
|
|
6
6
|
describe("Header component tests", () => {
|
|
7
7
|
test("Header renders with default logo", () => {
|
|
8
|
-
const {
|
|
9
|
-
expect(
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
test("Header renders with logo", () => {
|
|
13
|
-
const { getByRole } = render(<DxcHeader logoSrc={icon}></DxcHeader>);
|
|
14
|
-
expect(getByRole("img")).toBeTruthy();
|
|
8
|
+
const { getByTitle } = render(<DxcHeader></DxcHeader>);
|
|
9
|
+
expect(getByTitle("DXC Logo")).toBeTruthy();
|
|
15
10
|
});
|
|
16
11
|
|
|
17
12
|
test("Call correct function on logo click", () => {
|
|
18
13
|
const onClick = jest.fn();
|
|
19
|
-
const {
|
|
20
|
-
const logo =
|
|
14
|
+
const { getByTitle } = render(<DxcHeader onClick={onClick}></DxcHeader>);
|
|
15
|
+
const logo = getByTitle("DXC Logo");
|
|
21
16
|
fireEvent.click(logo);
|
|
22
17
|
expect(onClick).toHaveBeenCalled();
|
|
23
18
|
});
|
|
24
19
|
|
|
25
20
|
test("Header renders with correct children", () => {
|
|
26
|
-
//We need to force the offsetWidth value
|
|
21
|
+
// We need to force the offsetWidth value
|
|
27
22
|
Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 1024 });
|
|
28
23
|
|
|
29
24
|
const { getByText } = render(<DxcHeader content={<p>header-child-text</p>}></DxcHeader>);
|
package/test/Heading.test.js
CHANGED
|
@@ -3,33 +3,81 @@ import { render } from "@testing-library/react";
|
|
|
3
3
|
import DxcHeading from "../src/heading/Heading";
|
|
4
4
|
|
|
5
5
|
describe("Heading component tests", () => {
|
|
6
|
-
test("
|
|
7
|
-
const { getByText } = render(<DxcHeading text="my-heading-test"></DxcHeading>);
|
|
6
|
+
test("Heading renders with default level", () => {
|
|
7
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test"></DxcHeading>);
|
|
8
8
|
expect(getByText("my-heading-test")).toBeTruthy();
|
|
9
|
+
expect(getByRole("heading", { level: 1 })).toBeTruthy();
|
|
9
10
|
});
|
|
10
11
|
|
|
11
|
-
test("
|
|
12
|
-
const { getByText } = render(<DxcHeading text="my-heading-test" level={1}></DxcHeading>);
|
|
12
|
+
test("Heading renders with level 1", () => {
|
|
13
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test" level={1}></DxcHeading>);
|
|
13
14
|
expect(getByText("my-heading-test")).toBeTruthy();
|
|
15
|
+
expect(getByRole("heading", { level: 1 })).toBeTruthy();
|
|
14
16
|
});
|
|
15
17
|
|
|
16
|
-
test("
|
|
17
|
-
const { getByText } = render(<DxcHeading text="my-heading-test" level={2}></DxcHeading>);
|
|
18
|
+
test("Heading renders with level 2", () => {
|
|
19
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test" level={2}></DxcHeading>);
|
|
18
20
|
expect(getByText("my-heading-test")).toBeTruthy();
|
|
21
|
+
expect(getByRole("heading", { level: 2 })).toBeTruthy();
|
|
19
22
|
});
|
|
20
23
|
|
|
21
|
-
test("
|
|
22
|
-
const { getByText } = render(<DxcHeading text="my-heading-test" level={3}></DxcHeading>);
|
|
24
|
+
test("Heading renders with level 3", () => {
|
|
25
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test" level={3}></DxcHeading>);
|
|
23
26
|
expect(getByText("my-heading-test")).toBeTruthy();
|
|
27
|
+
expect(getByRole("heading", { level: 3 })).toBeTruthy();
|
|
24
28
|
});
|
|
25
29
|
|
|
26
|
-
test("
|
|
27
|
-
const { getByText } = render(<DxcHeading text="my-heading-test" level={4}></DxcHeading>);
|
|
30
|
+
test("Heading renders with level 4", () => {
|
|
31
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test" level={4}></DxcHeading>);
|
|
28
32
|
expect(getByText("my-heading-test")).toBeTruthy();
|
|
33
|
+
expect(getByRole("heading", { level: 4 })).toBeTruthy();
|
|
29
34
|
});
|
|
30
35
|
|
|
31
|
-
test("
|
|
32
|
-
const { getByText } = render(<DxcHeading text="my-heading-test" level={5}></DxcHeading>);
|
|
36
|
+
test("Heading renders with level 5", () => {
|
|
37
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test" level={5}></DxcHeading>);
|
|
33
38
|
expect(getByText("my-heading-test")).toBeTruthy();
|
|
39
|
+
expect(getByRole("heading", { level: 5 })).toBeTruthy();
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
test("Heading renders with default level and as h5", () => {
|
|
43
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test" as="h5"></DxcHeading>);
|
|
44
|
+
expect(getByText("my-heading-test")).toBeTruthy();
|
|
45
|
+
expect(getByRole("heading", { level: 5 })).toBeTruthy();
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test("Heading renders with level 1 and as h5", () => {
|
|
49
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test" level={1} as="h5"></DxcHeading>);
|
|
50
|
+
expect(getByText("my-heading-test")).toBeTruthy();
|
|
51
|
+
expect(getByRole("heading", { level: 5 })).toBeTruthy();
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test("Heading renders with level 2 and as h4", () => {
|
|
55
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test" level={2} as="h4"></DxcHeading>);
|
|
56
|
+
expect(getByText("my-heading-test")).toBeTruthy();
|
|
57
|
+
expect(getByRole("heading", { level: 4 })).toBeTruthy();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
test("Heading renders with level 3 and as h2", () => {
|
|
61
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test" level={3} as="h2"></DxcHeading>);
|
|
62
|
+
expect(getByText("my-heading-test")).toBeTruthy();
|
|
63
|
+
expect(getByRole("heading", { level: 2 })).toBeTruthy();
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
test("Heading renders with level 4 and as h3", () => {
|
|
67
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test" level={4} as="h3"></DxcHeading>);
|
|
68
|
+
expect(getByText("my-heading-test")).toBeTruthy();
|
|
69
|
+
expect(getByRole("heading", { level: 3 })).toBeTruthy();
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
test("Heading renders with level 5 as h4", () => {
|
|
73
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test" level={5} as="h4"></DxcHeading>);
|
|
74
|
+
expect(getByText("my-heading-test")).toBeTruthy();
|
|
75
|
+
expect(getByRole("heading", { level: 4 })).toBeTruthy();
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
test("Heading renders with level 5 and invalid as", () => {
|
|
79
|
+
const { getByText, getByRole } = render(<DxcHeading text="my-heading-test" level={5} as="h4afdssf"></DxcHeading>);
|
|
80
|
+
expect(getByText("my-heading-test")).toBeTruthy();
|
|
81
|
+
expect(getByRole("heading", { level: 5 })).toBeTruthy();
|
|
34
82
|
});
|
|
35
83
|
});
|
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { render, fireEvent } from "@testing-library/react";
|
|
3
3
|
import userEvent from "@testing-library/user-event";
|
|
4
|
-
import
|
|
4
|
+
import DxcNumberInput from "../src/number-input/NumberInput";
|
|
5
5
|
|
|
6
|
-
describe("Number component tests", () => {
|
|
7
|
-
test("Number renders with label", () => {
|
|
8
|
-
const { getByText } = render(<
|
|
9
|
-
expect(getByText("Number label")).toBeTruthy();
|
|
6
|
+
describe("Number input component tests", () => {
|
|
7
|
+
test("Number input renders with label", () => {
|
|
8
|
+
const { getByText } = render(<DxcNumberInput label="Number input label" />);
|
|
9
|
+
expect(getByText("Number input label")).toBeTruthy();
|
|
10
10
|
});
|
|
11
11
|
|
|
12
|
-
test("Number renders with helper text", () => {
|
|
13
|
-
const { getByText } = render(<
|
|
12
|
+
test("Number input renders with helper text", () => {
|
|
13
|
+
const { getByText } = render(<DxcNumberInput helperText="Helper text" />);
|
|
14
14
|
expect(getByText("Helper text")).toBeTruthy();
|
|
15
15
|
});
|
|
16
16
|
|
|
17
|
-
test("Number renders with placeholder", () => {
|
|
18
|
-
const { getByLabelText } = render(<
|
|
17
|
+
test("Number input renders with placeholder", () => {
|
|
18
|
+
const { getByLabelText } = render(<DxcNumberInput label="Number label" placeholder="Placeholder" />);
|
|
19
19
|
const number = getByLabelText("Number label");
|
|
20
20
|
expect(number.getAttribute("placeholder")).toBe("Placeholder");
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
test("Number renders increment and decrement buttons", () => {
|
|
24
|
-
const { queryAllByRole } = render(<
|
|
23
|
+
test("Number input renders increment and decrement buttons", () => {
|
|
24
|
+
const { queryAllByRole } = render(<DxcNumberInput label="Number label" />);
|
|
25
25
|
expect(queryAllByRole("button").length).toBe(2);
|
|
26
26
|
});
|
|
27
27
|
|
|
28
|
-
test("Number is disabled", () => {
|
|
29
|
-
const { getByLabelText } = render(<
|
|
28
|
+
test("Number input is disabled", () => {
|
|
29
|
+
const { getByLabelText } = render(<DxcNumberInput label="Number label" disabled />);
|
|
30
30
|
const number = getByLabelText("Number label");
|
|
31
31
|
expect(number.disabled).toBeTruthy();
|
|
32
32
|
});
|
|
33
33
|
|
|
34
|
-
test("Number is optional", () => {
|
|
35
|
-
const { getByText } = render(<
|
|
34
|
+
test("Number input is optional", () => {
|
|
35
|
+
const { getByText } = render(<DxcNumberInput label="Number label" optional />);
|
|
36
36
|
expect(getByText("(Optional)")).toBeTruthy();
|
|
37
37
|
});
|
|
38
38
|
|
|
39
|
-
test("Number is not optional: required field, displays error if not filled in", () => {
|
|
39
|
+
test("Number input is not optional: required field, displays error if not filled in", () => {
|
|
40
40
|
const onBlur = jest.fn();
|
|
41
41
|
const onChange = jest.fn();
|
|
42
|
-
const { getByRole } = render(<
|
|
42
|
+
const { getByRole } = render(<DxcNumberInput onBlur={onBlur} onChange={onChange} />);
|
|
43
43
|
const input = getByRole("textbox");
|
|
44
44
|
|
|
45
45
|
userEvent.type(input, "1");
|
|
@@ -52,20 +52,20 @@ describe("Number component tests", () => {
|
|
|
52
52
|
});
|
|
53
53
|
|
|
54
54
|
test("Suffix and prefix must be shown)", () => {
|
|
55
|
-
const { getByText } = render(<
|
|
55
|
+
const { getByText } = render(<DxcNumberInput label="Number input label" prefix="+34" suffix="USD" />);
|
|
56
56
|
expect(getByText("+34")).toBeTruthy();
|
|
57
57
|
expect(getByText("USD")).toBeTruthy();
|
|
58
58
|
});
|
|
59
59
|
|
|
60
|
-
test("Invalid number renders error", () => {
|
|
61
|
-
const { getByText } = render(<
|
|
60
|
+
test("Invalid number input renders error", () => {
|
|
61
|
+
const { getByText } = render(<DxcNumberInput error="Error message." />);
|
|
62
62
|
expect(getByText("Error message.")).toBeTruthy();
|
|
63
63
|
});
|
|
64
64
|
|
|
65
65
|
test("onChange function is called correctly", () => {
|
|
66
66
|
const onChange = jest.fn();
|
|
67
|
-
const { getByLabelText } = render(<
|
|
68
|
-
const number = getByLabelText("Number label");
|
|
67
|
+
const { getByLabelText } = render(<DxcNumberInput label="Number input label" onChange={onChange} />);
|
|
68
|
+
const number = getByLabelText("Number input label");
|
|
69
69
|
userEvent.type(number, "t");
|
|
70
70
|
expect(onChange).not.toHaveBeenCalledWith({ value: "t", error: null });
|
|
71
71
|
expect(number.value).toBe("");
|
|
@@ -84,17 +84,17 @@ describe("Number component tests", () => {
|
|
|
84
84
|
expect(error).toBe("Value must be greater than or equal to 5.");
|
|
85
85
|
});
|
|
86
86
|
const { getByLabelText } = render(
|
|
87
|
-
<
|
|
87
|
+
<DxcNumberInput label="Number input label" min={5} onBlur={onBlur} onChange={onChange} />
|
|
88
88
|
);
|
|
89
|
-
const number = getByLabelText("Number label");
|
|
89
|
+
const number = getByLabelText("Number input label");
|
|
90
90
|
|
|
91
91
|
userEvent.type(number, "1");
|
|
92
92
|
fireEvent.blur(number);
|
|
93
93
|
});
|
|
94
94
|
|
|
95
95
|
test("Cannot decrement the value if it is less than the min value", () => {
|
|
96
|
-
const { getByLabelText, getAllByRole } = render(<
|
|
97
|
-
const number = getByLabelText("Number label");
|
|
96
|
+
const { getByLabelText, getAllByRole } = render(<DxcNumberInput label="Number input label" min={5} />);
|
|
97
|
+
const number = getByLabelText("Number input label");
|
|
98
98
|
userEvent.type(number, "1");
|
|
99
99
|
fireEvent.blur(number);
|
|
100
100
|
expect(number.value).toBe("1");
|
|
@@ -104,8 +104,8 @@ describe("Number component tests", () => {
|
|
|
104
104
|
});
|
|
105
105
|
|
|
106
106
|
test("Increment the value when it is less than the min value", () => {
|
|
107
|
-
const { getByLabelText, getAllByRole } = render(<
|
|
108
|
-
const number = getByLabelText("Number label");
|
|
107
|
+
const { getByLabelText, getAllByRole } = render(<DxcNumberInput label="Number input label" min={5} />);
|
|
108
|
+
const number = getByLabelText("Number input label");
|
|
109
109
|
userEvent.type(number, "1");
|
|
110
110
|
fireEvent.blur(number);
|
|
111
111
|
expect(number.value).toBe("1");
|
|
@@ -117,10 +117,12 @@ describe("Number component tests", () => {
|
|
|
117
117
|
test("Error message is shown if the value is greater than the max value", () => {
|
|
118
118
|
const onChange = jest.fn();
|
|
119
119
|
const onBlur = jest.fn();
|
|
120
|
-
const { getByLabelText } = render(
|
|
121
|
-
|
|
120
|
+
const { getByLabelText } = render(
|
|
121
|
+
<DxcNumberInput label="Number input label" max={10} onBlur={onBlur} onChange={onChange} />
|
|
122
|
+
);
|
|
123
|
+
const number = getByLabelText("Number input label");
|
|
122
124
|
|
|
123
|
-
userEvent.type(number, "12");
|
|
125
|
+
userEvent.type(number, "12");
|
|
124
126
|
expect(onChange).toHaveBeenCalledTimes(2);
|
|
125
127
|
expect(onChange).toHaveBeenCalledWith({ value: "12", error: "Value must be less than or equal to 10." });
|
|
126
128
|
fireEvent.blur(number);
|
|
@@ -129,8 +131,8 @@ describe("Number component tests", () => {
|
|
|
129
131
|
});
|
|
130
132
|
|
|
131
133
|
test("Cannot increment the value if it is greater than the max value", () => {
|
|
132
|
-
const { getByLabelText, getAllByRole } = render(<
|
|
133
|
-
const number = getByLabelText("Number label");
|
|
134
|
+
const { getByLabelText, getAllByRole } = render(<DxcNumberInput label="Number input label" max={10} />);
|
|
135
|
+
const number = getByLabelText("Number input label");
|
|
134
136
|
userEvent.type(number, "12");
|
|
135
137
|
fireEvent.blur(number);
|
|
136
138
|
expect(number.value).toBe("12");
|
|
@@ -140,8 +142,8 @@ describe("Number component tests", () => {
|
|
|
140
142
|
});
|
|
141
143
|
|
|
142
144
|
test("Decrement the value when it is greater than the max value", () => {
|
|
143
|
-
const { getByLabelText, getAllByRole } = render(<
|
|
144
|
-
const number = getByLabelText("Number label");
|
|
145
|
+
const { getByLabelText, getAllByRole } = render(<DxcNumberInput label="Number input label" max={10} />);
|
|
146
|
+
const number = getByLabelText("Number input label");
|
|
145
147
|
userEvent.type(number, "12");
|
|
146
148
|
fireEvent.blur(number);
|
|
147
149
|
expect(number.value).toBe("12");
|
|
@@ -151,8 +153,8 @@ describe("Number component tests", () => {
|
|
|
151
153
|
});
|
|
152
154
|
|
|
153
155
|
test("Increment and decrement the value with min and max values", () => {
|
|
154
|
-
const { getByLabelText, getAllByRole } = render(<
|
|
155
|
-
const number = getByLabelText("Number label");
|
|
156
|
+
const { getByLabelText, getAllByRole } = render(<DxcNumberInput label="Number input label" min={5} max={10} />);
|
|
157
|
+
const number = getByLabelText("Number input label");
|
|
156
158
|
userEvent.type(number, "1");
|
|
157
159
|
fireEvent.blur(number);
|
|
158
160
|
expect(number.value).toBe("1");
|
|
@@ -173,8 +175,8 @@ describe("Number component tests", () => {
|
|
|
173
175
|
});
|
|
174
176
|
|
|
175
177
|
test("Increment and decrement the value with step", () => {
|
|
176
|
-
const { getByLabelText, getAllByRole } = render(<
|
|
177
|
-
const number = getByLabelText("Number label");
|
|
178
|
+
const { getByLabelText, getAllByRole } = render(<DxcNumberInput label="Number input label" step={5} />);
|
|
179
|
+
const number = getByLabelText("Number input label");
|
|
178
180
|
userEvent.type(number, "10");
|
|
179
181
|
fireEvent.blur(number);
|
|
180
182
|
expect(number.value).toBe("10");
|
|
@@ -196,9 +198,9 @@ describe("Number component tests", () => {
|
|
|
196
198
|
expect(error).toBe("Value must be greater than or equal to 5.");
|
|
197
199
|
});
|
|
198
200
|
const { getByLabelText, getAllByRole } = render(
|
|
199
|
-
<
|
|
201
|
+
<DxcNumberInput label="Number input label" min={5} max={20} step={8} onBlur={onBlur} />
|
|
200
202
|
);
|
|
201
|
-
const number = getByLabelText("Number label");
|
|
203
|
+
const number = getByLabelText("Number input label");
|
|
202
204
|
userEvent.type(number, "1");
|
|
203
205
|
fireEvent.blur(number);
|
|
204
206
|
const increment = getAllByRole("button")[1];
|
|
@@ -220,8 +222,8 @@ describe("Number component tests", () => {
|
|
|
220
222
|
});
|
|
221
223
|
|
|
222
224
|
test("Increment and decrement the value with min, max and step using the arrows in keyboard", () => {
|
|
223
|
-
const { getByLabelText } = render(<
|
|
224
|
-
const number = getByLabelText("Number label");
|
|
225
|
+
const { getByLabelText } = render(<DxcNumberInput label="Number input label" min={5} max={20} step={5} />);
|
|
226
|
+
const number = getByLabelText("Number input label");
|
|
225
227
|
userEvent.type(number, "1");
|
|
226
228
|
fireEvent.keyDown(number, { keyCode: 38 });
|
|
227
229
|
expect(number.value).toBe("5");
|
|
@@ -244,8 +246,8 @@ describe("Number component tests", () => {
|
|
|
244
246
|
});
|
|
245
247
|
|
|
246
248
|
test("Number has correct accesibility attributes", () => {
|
|
247
|
-
const { getByLabelText, getAllByRole } = render(<
|
|
248
|
-
const number = getByLabelText("Number label");
|
|
249
|
+
const { getByLabelText, getAllByRole } = render(<DxcNumberInput label="Number input label" />);
|
|
250
|
+
const number = getByLabelText("Number input label");
|
|
249
251
|
expect(number.getAttribute("aria-autocomplete")).toBeNull();
|
|
250
252
|
expect(number.getAttribute("aria-controls")).toBeNull();
|
|
251
253
|
expect(number.getAttribute("aria-expanded")).toBeNull();
|
package/test/Paginator.test.js
CHANGED
|
@@ -49,6 +49,8 @@ describe("Paginator component tests", () => {
|
|
|
49
49
|
|
|
50
50
|
test("Paginator goToPage call correct function", () => {
|
|
51
51
|
const onClick = jest.fn();
|
|
52
|
+
window.HTMLElement.prototype.scrollIntoView = () => {};
|
|
53
|
+
window.HTMLElement.prototype.scrollTo = () => {};
|
|
52
54
|
const { getByText, getAllByRole, getByRole } = render(
|
|
53
55
|
<DxcPaginator
|
|
54
56
|
currentPage={1}
|
|
@@ -58,7 +60,7 @@ describe("Paginator component tests", () => {
|
|
|
58
60
|
onPageChange={onClick}
|
|
59
61
|
></DxcPaginator>
|
|
60
62
|
);
|
|
61
|
-
const goToPageSelect = getAllByRole("
|
|
63
|
+
const goToPageSelect = getAllByRole("combobox")[0];
|
|
62
64
|
act(() => {
|
|
63
65
|
userEvent.click(goToPageSelect);
|
|
64
66
|
});
|
|
@@ -81,6 +83,8 @@ describe("Paginator component tests", () => {
|
|
|
81
83
|
|
|
82
84
|
test("Call correct itemsPerPageFunction", () => {
|
|
83
85
|
const onClick = jest.fn();
|
|
86
|
+
window.HTMLElement.prototype.scrollIntoView = () => {};
|
|
87
|
+
window.HTMLElement.prototype.scrollTo = () => {};
|
|
84
88
|
const { getAllByText, getByText } = render(
|
|
85
89
|
<DxcPaginator
|
|
86
90
|
currentPage={1}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { render, fireEvent } from "@testing-library/react";
|
|
3
|
+
import userEvent from "@testing-library/user-event";
|
|
4
|
+
import DxcPasswordInput from "../src/password-input/PasswordInput";
|
|
5
|
+
|
|
6
|
+
describe("Password input component tests", () => {
|
|
7
|
+
test("Password input renders with label", () => {
|
|
8
|
+
const { getByText } = render(<DxcPasswordInput label="Password input label" />);
|
|
9
|
+
expect(getByText("Password input label")).toBeTruthy();
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
test("Password input renders with helper text", () => {
|
|
13
|
+
const { getByText } = render(<DxcPasswordInput helperText="Helper text" />);
|
|
14
|
+
expect(getByText("Helper text")).toBeTruthy();
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test("Password input renders error", () => {
|
|
18
|
+
const { getByText } = render(<DxcPasswordInput error="Error message." />);
|
|
19
|
+
expect(getByText("Error message.")).toBeTruthy();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test("onChange function is called correctly", () => {
|
|
23
|
+
const onChange = jest.fn();
|
|
24
|
+
const { getByRole } = render(<DxcPasswordInput label="Password input" onChange={onChange} />);
|
|
25
|
+
const passwordInput = getByRole("textbox");
|
|
26
|
+
userEvent.type(passwordInput, "Pa$$w0rd");
|
|
27
|
+
expect(onChange).toHaveBeenCalledWith({ value: "P", error: null });
|
|
28
|
+
expect(passwordInput.value).toBe("Pa$$w0rd");
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
test("onBlur function is called correctly", () => {
|
|
32
|
+
const onBlur = jest.fn();
|
|
33
|
+
const { getByRole } = render(<DxcPasswordInput label="Password input" onBlur={onBlur} />);
|
|
34
|
+
const passwordInput = getByRole("textbox");
|
|
35
|
+
userEvent.type(passwordInput, "Pa$$w0rd");
|
|
36
|
+
fireEvent.blur(passwordInput);
|
|
37
|
+
expect(onBlur).toHaveBeenCalledWith({ value: "Pa$$w0rd", error: null });
|
|
38
|
+
expect(passwordInput.value).toBe("Pa$$w0rd");
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test("Clear password input value", () => {
|
|
42
|
+
const { getAllByRole, getByRole } = render(<DxcPasswordInput label="Password input" clearable />);
|
|
43
|
+
const passwordInput = getByRole("textbox");
|
|
44
|
+
userEvent.type(passwordInput, "Pa$$w0rd");
|
|
45
|
+
expect(passwordInput.value).toBe("Pa$$w0rd");
|
|
46
|
+
const clearButton = getAllByRole("button")[0];
|
|
47
|
+
userEvent.click(clearButton);
|
|
48
|
+
expect(passwordInput.value).toBe("");
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
test("Non clearable password input has no clear icon", () => {
|
|
52
|
+
const { getAllByRole, getByRole } = render(<DxcPasswordInput label="Password input" />);
|
|
53
|
+
const passwordInput = getByRole("textbox");
|
|
54
|
+
userEvent.type(passwordInput, "Pa$$w0rd");
|
|
55
|
+
expect(passwordInput.value).toBe("Pa$$w0rd");
|
|
56
|
+
const buttons = getAllByRole("button");
|
|
57
|
+
expect(buttons.length).toBe(1);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
test("Show/hide password input button works correctly", () => {
|
|
61
|
+
const { getAllByRole, getByRole } = render(<DxcPasswordInput label="Password input" clearable />);
|
|
62
|
+
const passwordInput = getByRole("textbox");
|
|
63
|
+
userEvent.type(passwordInput, "Pa$$w0rd");
|
|
64
|
+
expect(passwordInput.value).toBe("Pa$$w0rd");
|
|
65
|
+
expect(passwordInput.type).toBe("password");
|
|
66
|
+
const showButton = getAllByRole("button")[1];
|
|
67
|
+
userEvent.click(showButton);
|
|
68
|
+
expect(passwordInput.type).toBe("text");
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
test("Password input has correct accesibility attributes", () => {
|
|
72
|
+
const { getByRole } = render(<DxcPasswordInput label="Password input" />);
|
|
73
|
+
const passwordInput = getByRole("textbox");
|
|
74
|
+
expect(passwordInput.getAttribute("aria-autocomplete")).toBeNull();
|
|
75
|
+
expect(passwordInput.getAttribute("aria-controls")).toBeNull();
|
|
76
|
+
const showButton = getByRole("button");
|
|
77
|
+
expect(showButton.getAttribute("aria-expanded")).toBe("false");
|
|
78
|
+
expect(showButton.getAttribute("aria-label")).toBe("Show");
|
|
79
|
+
userEvent.click(showButton);
|
|
80
|
+
expect(showButton.getAttribute("aria-expanded")).toBe("true");
|
|
81
|
+
expect(showButton.getAttribute("aria-label")).toBe("Hide");
|
|
82
|
+
});
|
|
83
|
+
});
|