@dxc-technology/halstack-react 0.0.0-7d46b9f → 0.0.0-7da4003
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/dist/ThemeContext.js +6 -6
- package/dist/V3Textarea/V3Textarea.js +264 -0
- package/dist/alert/Alert.js +4 -4
- package/dist/button/Button.js +1 -1
- package/dist/common/variables.js +199 -74
- package/dist/date/Date.js +6 -6
- 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/file-input/FileInput.js +2 -2
- 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/header/Header.js +80 -49
- package/dist/header/Icons.js +59 -0
- package/dist/input-text/Icons.js +22 -0
- package/dist/input-text/InputText.js +7 -9
- package/dist/layout/ApplicationLayout.js +4 -8
- package/dist/layout/Icons.js +55 -0
- package/dist/main.d.ts +6 -5
- package/dist/main.js +29 -21
- package/dist/new-select/NewSelect.js +836 -0
- package/dist/new-select/index.d.ts +53 -0
- package/dist/{number/Number.js → number-input/NumberInput.js} +8 -8
- 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 +5 -11
- package/dist/{password/Password.js → password-input/PasswordInput.js} +8 -10
- package/dist/{password → password-input}/index.d.ts +5 -5
- package/dist/slider/Slider.js +104 -19
- package/dist/{new-input-text/NewInputText.js → text-input/TextInput.js} +36 -32
- 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-group/ToggleGroup.js +132 -28
- package/dist/upload/Upload.js +3 -3
- 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/readme.md +2 -2
- 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/package.json +1 -1
- package/test/Date.test.js +48 -44
- 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/InputText.test.js +24 -16
- package/test/{Number.test.js → NumberInput.test.js} +47 -45
- package/test/PasswordInput.test.js +83 -0
- package/test/Slider.test.js +9 -17
- package/test/{NewInputText.test.js → TextInput.test.js} +46 -48
- package/test/{NewTextarea.test.js → Textarea.test.js} +16 -18
- package/test/ToggleGroup.test.js +5 -1
- package/test/Upload.test.js +5 -5
- package/test/{TextArea.test.js → V3TextArea.test.js} +6 -7
- 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/new-textarea/NewTextarea.js +0 -365
- 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/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/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/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/InputText.test.js
CHANGED
|
@@ -4,7 +4,7 @@ import userEvent from "@testing-library/user-event";
|
|
|
4
4
|
|
|
5
5
|
import icon from "../../app/src/images/invision.svg";
|
|
6
6
|
|
|
7
|
-
import
|
|
7
|
+
import V3DxcInputText from "../src/input-text/InputText";
|
|
8
8
|
|
|
9
9
|
const countries = ["Albania", "Andorra", "Armenia", "Austria", "Azerbaijan"];
|
|
10
10
|
|
|
@@ -28,13 +28,13 @@ jest.mock("popper.js", () => {
|
|
|
28
28
|
|
|
29
29
|
describe("InputText component tests", () => {
|
|
30
30
|
test("Input renders with correct label", () => {
|
|
31
|
-
const { getByText } = render(<
|
|
31
|
+
const { getByText } = render(<V3DxcInputText label="Input label" />);
|
|
32
32
|
expect(getByText("Input label")).toBeTruthy();
|
|
33
33
|
});
|
|
34
34
|
|
|
35
35
|
test("onChange function is called correctly", () => {
|
|
36
36
|
const onChange = jest.fn();
|
|
37
|
-
const { getByRole } = render(<
|
|
37
|
+
const { getByRole } = render(<V3DxcInputText label="Input label" onChange={onChange} />);
|
|
38
38
|
const input = getByRole("textbox");
|
|
39
39
|
userEvent.type(input, "20000");
|
|
40
40
|
expect(onChange).toHaveBeenCalled();
|
|
@@ -44,7 +44,7 @@ describe("InputText component tests", () => {
|
|
|
44
44
|
const onBlur = jest.fn();
|
|
45
45
|
const onChange = jest.fn();
|
|
46
46
|
|
|
47
|
-
const { getByRole } = render(<
|
|
47
|
+
const { getByRole } = render(<V3DxcInputText label="Input label" onChange={onChange} onBlur={onBlur} />);
|
|
48
48
|
const input = getByRole("textbox");
|
|
49
49
|
userEvent.type(input, "Test value");
|
|
50
50
|
fireEvent.blur(input);
|
|
@@ -54,7 +54,7 @@ describe("InputText component tests", () => {
|
|
|
54
54
|
|
|
55
55
|
test("Uncontrolled component", () => {
|
|
56
56
|
const onChange = jest.fn();
|
|
57
|
-
const { getByRole } = render(<
|
|
57
|
+
const { getByRole } = render(<V3DxcInputText label="Input label" onChange={onChange} />);
|
|
58
58
|
const input = getByRole("textbox");
|
|
59
59
|
userEvent.type(input, "20000");
|
|
60
60
|
expect(onChange).toHaveBeenCalled();
|
|
@@ -66,7 +66,7 @@ describe("InputText component tests", () => {
|
|
|
66
66
|
const onChange = jest.fn();
|
|
67
67
|
const onBlur = jest.fn();
|
|
68
68
|
const { getByRole } = render(
|
|
69
|
-
<
|
|
69
|
+
<V3DxcInputText label="Input label" value="Test value" onChange={onChange} onBlur={onBlur} />
|
|
70
70
|
);
|
|
71
71
|
const input = getByRole("textbox");
|
|
72
72
|
userEvent.type(input, "20000");
|
|
@@ -78,14 +78,14 @@ describe("InputText component tests", () => {
|
|
|
78
78
|
});
|
|
79
79
|
test("Prefix icon onClick", () => {
|
|
80
80
|
const onClick = jest.fn();
|
|
81
|
-
const { getByRole } = render(<
|
|
81
|
+
const { getByRole } = render(<V3DxcInputText label="Input label" prefixIconSrc={icon} onClickPrefix={onClick} />);
|
|
82
82
|
const prefixIcon = getByRole("img");
|
|
83
83
|
userEvent.click(prefixIcon);
|
|
84
84
|
expect(onClick).toHaveBeenCalled();
|
|
85
85
|
});
|
|
86
86
|
test("Suffix icon onClick", () => {
|
|
87
87
|
const onClick = jest.fn();
|
|
88
|
-
const { getByRole } = render(<
|
|
88
|
+
const { getByRole } = render(<V3DxcInputText label="Input label" suffixIconSrc={icon} onClickSuffix={onClick} />);
|
|
89
89
|
const suffixIcon = getByRole("img");
|
|
90
90
|
userEvent.click(suffixIcon);
|
|
91
91
|
expect(onClick).toHaveBeenCalled();
|
|
@@ -96,7 +96,7 @@ describe("Autocomplete component Synchronous tests", () => {
|
|
|
96
96
|
test("Autocomplete no matches found is shown", async () => {
|
|
97
97
|
const onChangeAtocomplete = jest.fn();
|
|
98
98
|
render(
|
|
99
|
-
<
|
|
99
|
+
<V3DxcInputText label="Autocomplete Countries" autocompleteOptions={countries} onChange={onChangeAtocomplete} />
|
|
100
100
|
);
|
|
101
101
|
const input = screen.getByRole("textbox");
|
|
102
102
|
fireEvent.focus(input);
|
|
@@ -108,7 +108,7 @@ describe("Autocomplete component Synchronous tests", () => {
|
|
|
108
108
|
test("Autocomplete suggestions are shown", async () => {
|
|
109
109
|
const onChangeAtocomplete = jest.fn();
|
|
110
110
|
render(
|
|
111
|
-
<
|
|
111
|
+
<V3DxcInputText label="Autocomplete Countries" autocompleteOptions={countries} onChange={onChangeAtocomplete} />
|
|
112
112
|
);
|
|
113
113
|
const input = screen.getByRole("textbox");
|
|
114
114
|
fireEvent.focus(input);
|
|
@@ -118,7 +118,7 @@ describe("Autocomplete component Synchronous tests", () => {
|
|
|
118
118
|
test("Autocomplete UNCONTROLLED suggestion selected", async () => {
|
|
119
119
|
const onChangeAtocomplete = jest.fn();
|
|
120
120
|
render(
|
|
121
|
-
<
|
|
121
|
+
<V3DxcInputText label="Autocomplete Countries" autocompleteOptions={countries} onChange={onChangeAtocomplete} />
|
|
122
122
|
);
|
|
123
123
|
const input = screen.getByRole("textbox");
|
|
124
124
|
fireEvent.focus(input);
|
|
@@ -138,7 +138,7 @@ describe("Autocomplete component Synchronous tests", () => {
|
|
|
138
138
|
test("Autocomplete CONTROLLED suggestions selected", async () => {
|
|
139
139
|
const onChangeAtocomplete = jest.fn();
|
|
140
140
|
render(
|
|
141
|
-
<
|
|
141
|
+
<V3DxcInputText
|
|
142
142
|
label="Autocomplete Countries"
|
|
143
143
|
value="Andorra"
|
|
144
144
|
autocompleteOptions={countries}
|
|
@@ -165,7 +165,11 @@ describe("InputText component Asynchronous Autocomplete tests", () => {
|
|
|
165
165
|
|
|
166
166
|
const onChangeAtocomplete = jest.fn();
|
|
167
167
|
render(
|
|
168
|
-
<
|
|
168
|
+
<V3DxcInputText
|
|
169
|
+
label="Autocomplete Countries"
|
|
170
|
+
autocompleteOptions={callbackFunc}
|
|
171
|
+
onChange={onChangeAtocomplete}
|
|
172
|
+
/>
|
|
169
173
|
);
|
|
170
174
|
const input = screen.getByRole("textbox");
|
|
171
175
|
fireEvent.focus(input);
|
|
@@ -178,7 +182,11 @@ describe("InputText component Asynchronous Autocomplete tests", () => {
|
|
|
178
182
|
const callbackFunc = jest.fn(() => new Promise((resolve) => setTimeout(resolve(["Italy", "Spain"]), 1000)));
|
|
179
183
|
const onChangeAtocomplete = jest.fn();
|
|
180
184
|
render(
|
|
181
|
-
<
|
|
185
|
+
<V3DxcInputText
|
|
186
|
+
label="Autocomplete Countries"
|
|
187
|
+
onChange={onChangeAtocomplete}
|
|
188
|
+
autocompleteOptions={callbackFunc}
|
|
189
|
+
/>
|
|
182
190
|
);
|
|
183
191
|
const input = screen.getByRole("textbox");
|
|
184
192
|
fireEvent.focus(input);
|
|
@@ -198,7 +206,7 @@ describe("InputText component Asynchronous Autocomplete tests", () => {
|
|
|
198
206
|
const callbackFunc = jest.fn(() => new Promise((resolve) => setTimeout(resolve(["Italy", "Spain"]), 3000)));
|
|
199
207
|
const onChangeAtocomplete = jest.fn();
|
|
200
208
|
render(
|
|
201
|
-
<
|
|
209
|
+
<V3DxcInputText
|
|
202
210
|
label="Autocomplete Countries"
|
|
203
211
|
value="test value"
|
|
204
212
|
onChange={onChangeAtocomplete}
|
|
@@ -224,7 +232,7 @@ describe("InputText component Asynchronous Autocomplete tests", () => {
|
|
|
224
232
|
const onChangeAtocomplete = jest.fn();
|
|
225
233
|
|
|
226
234
|
render(
|
|
227
|
-
<
|
|
235
|
+
<V3DxcInputText
|
|
228
236
|
label="Autocomplete Countries"
|
|
229
237
|
value="test value"
|
|
230
238
|
onChange={onChangeAtocomplete}
|
|
@@ -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();
|
|
@@ -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
|
+
});
|
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"));
|
|
@@ -64,7 +56,7 @@ describe("Slider component tests", () => {
|
|
|
64
56
|
});
|
|
65
57
|
|
|
66
58
|
test("Calls correct function labelFormatCallback", () => {
|
|
67
|
-
const labelFormatCallback = jest.fn(x => `${x}$`);
|
|
59
|
+
const labelFormatCallback = jest.fn((x) => `${x}$`);
|
|
68
60
|
const { getByText } = render(
|
|
69
61
|
<DxcSlider
|
|
70
62
|
minValue={0}
|
|
@@ -73,7 +65,7 @@ describe("Slider component tests", () => {
|
|
|
73
65
|
showInput
|
|
74
66
|
value={25}
|
|
75
67
|
labelFormatCallback={labelFormatCallback}
|
|
76
|
-
|
|
68
|
+
/>
|
|
77
69
|
);
|
|
78
70
|
expect(getByText("0$")).toBeTruthy();
|
|
79
71
|
expect(getByText("100$")).toBeTruthy();
|