@dxc-technology/halstack-react 0.0.0-90f64ff → 0.0.0-9427b76

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.
Files changed (38) hide show
  1. package/dist/ThemeContext.js +66 -58
  2. package/dist/alert/Alert.js +1 -1
  3. package/dist/alert/index.d.ts +51 -0
  4. package/dist/common/variables.js +141 -58
  5. package/dist/date/Date.js +4 -6
  6. package/dist/file-input/FileInput.js +641 -0
  7. package/dist/file-input/FileItem.js +280 -0
  8. package/dist/file-input/index.d.ts +81 -0
  9. package/dist/layout/ApplicationLayout.js +1 -1
  10. package/dist/link/Link.js +4 -8
  11. package/dist/main.d.ts +7 -0
  12. package/dist/main.js +8 -0
  13. package/dist/new-date/NewDate.js +64 -67
  14. package/dist/new-date/index.d.ts +95 -0
  15. package/dist/new-input-text/NewInputText.js +160 -157
  16. package/dist/new-input-text/index.d.ts +135 -0
  17. package/dist/new-textarea/NewTextarea.js +53 -37
  18. package/dist/new-textarea/index.d.ts +117 -0
  19. package/dist/number/Number.js +1 -3
  20. package/dist/number/index.d.ts +113 -0
  21. package/dist/password/Password.js +3 -3
  22. package/dist/password/index.d.ts +94 -0
  23. package/dist/progress-bar/ProgressBar.js +1 -1
  24. package/dist/select/Select.js +122 -158
  25. package/dist/sidenav/Sidenav.js +6 -4
  26. package/dist/tag/Tag.js +26 -32
  27. package/package.json +2 -1
  28. package/test/FileInput.test.js +201 -0
  29. package/test/NewDate.test.js +41 -12
  30. package/test/NewInputText.test.js +104 -187
  31. package/test/NewTextarea.test.js +95 -101
  32. package/test/Number.test.js +44 -28
  33. package/test/Paginator.test.js +1 -1
  34. package/test/Password.test.js +15 -8
  35. package/test/ResultsetTable.test.js +1 -2
  36. package/test/Select.test.js +40 -17
  37. package/dist/select/Select.stories.js +0 -235
  38. package/dist/select/readme.md +0 -72
@@ -1,6 +1,6 @@
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
4
  import DxcNewTextarea from "../src/new-textarea/NewTextarea";
5
5
 
6
6
  describe("NewTextarea component tests", () => {
@@ -14,29 +14,75 @@ describe("NewTextarea component tests", () => {
14
14
  expect(getByText("Example helper text")).toBeTruthy();
15
15
  });
16
16
  test("Renders with correct label and optional", () => {
17
- const { getByText } = render(<DxcNewTextarea label="Example label" helperText="Example helper text" optional />);
17
+ const { getByText, getByRole } = render(
18
+ <DxcNewTextarea label="Example label" helperText="Example helper text" optional />
19
+ );
20
+ const textarea = getByRole("textbox");
18
21
  expect(getByText("Example label")).toBeTruthy();
19
22
  expect(getByText("(Optional)")).toBeTruthy();
20
23
  expect(getByText("Example helper text")).toBeTruthy();
24
+ expect(textarea.getAttribute("aria-required")).toBe("false");
21
25
  });
22
26
  test("Renders with correct placeholder", () => {
23
27
  const { getByRole } = render(<DxcNewTextarea placeholder="Placeholder" />);
24
- const input = getByRole("textbox");
25
- expect(input.getAttribute("placeholder")).toBe("Placeholder");
28
+ const textarea = getByRole("textbox");
29
+ expect(textarea.getAttribute("placeholder")).toBe("Placeholder");
26
30
  });
27
31
  test("Renders with error message", () => {
28
- const { getByText } = render(<DxcNewTextarea error="Error message." />);
32
+ const { getByText, getByRole } = render(<DxcNewTextarea error="Error message." />);
33
+ const textarea = getByRole("textbox");
29
34
  expect(getByText("Error message.")).toBeTruthy();
35
+ expect(textarea.getAttribute("aria-invalid")).toBe("true");
36
+ expect(textarea.getAttribute("aria-describedBy")).not.toBeNull();
30
37
  });
31
38
  test("Renders with correct default rows", () => {
32
39
  const { getByLabelText } = render(<DxcNewTextarea label="Example label" rows={10} />);
33
40
  const textarea = getByLabelText("Example label");
34
41
  expect(textarea.rows).toBe(10);
35
42
  });
36
- test("Strict mode - Pattern constraint", () => {
43
+ test("Renders with correct accesibility attributes", () => {
44
+ const { getByLabelText } = render(<DxcNewTextarea label="Example label" />);
45
+ const textarea = getByLabelText("Example label");
46
+ expect(textarea.getAttribute("aria-invalid")).toBe("false");
47
+ expect(textarea.getAttribute("aria-describedBy")).toBeNull();
48
+ expect(textarea.getAttribute("aria-required")).toBe("true");
49
+ });
50
+ test("Not optional constraint (onBlur)", () => {
37
51
  const onChange = jest.fn();
38
52
  const onBlur = jest.fn();
39
- const { getByLabelText, getByText, queryByText } = render(
53
+ const { getByLabelText } = render(
54
+ <DxcNewTextarea label="Example label" placeholder="Placeholder" onChange={onChange} onBlur={onBlur} />
55
+ );
56
+ const textarea = getByLabelText("Example label");
57
+
58
+ fireEvent.focus(textarea);
59
+ fireEvent.blur(textarea);
60
+ expect(onBlur).toHaveBeenCalled();
61
+ expect(onBlur).toHaveBeenCalledWith({ value: "", error: "This field is required. Please, enter a value." });
62
+ fireEvent.change(textarea, { target: { value: "Test" } });
63
+ fireEvent.blur(textarea);
64
+ expect(onBlur).toHaveBeenCalled();
65
+ expect(onBlur).toHaveBeenCalledWith({ value: "Test", error: null });
66
+ });
67
+ test("Not optional constraint (onChange)", () => {
68
+ const onChange = jest.fn();
69
+ const { getByLabelText } = render(
70
+ <DxcNewTextarea label="Example label" placeholder="Placeholder" onChange={onChange} />
71
+ );
72
+ const textarea = getByLabelText("Example label");
73
+
74
+ fireEvent.focus(textarea);
75
+ fireEvent.change(textarea, { target: { value: "Test" } });
76
+ expect(onChange).toHaveBeenCalled();
77
+ expect(onChange).toHaveBeenCalledWith({ value: "Test", error: null });
78
+ userEvent.clear(textarea);
79
+ expect(onChange).toHaveBeenCalled();
80
+ expect(onChange).toHaveBeenCalledWith({ value: "", error: "This field is required. Please, enter a value." });
81
+ });
82
+ test("Pattern constraint", () => {
83
+ const onChange = jest.fn();
84
+ const onBlur = jest.fn();
85
+ const { getByLabelText } = render(
40
86
  <DxcNewTextarea
41
87
  label="Example label"
42
88
  placeholder="Placeholder"
@@ -47,17 +93,25 @@ describe("NewTextarea component tests", () => {
47
93
  />
48
94
  );
49
95
  const textarea = getByLabelText("Example label");
96
+
50
97
  fireEvent.change(textarea, { target: { value: "pattern test" } });
98
+ expect(onChange).toHaveBeenCalled();
99
+ expect(onChange).toHaveBeenCalledWith({ value: "pattern test", error: "Please match the format requested." });
51
100
  fireEvent.blur(textarea);
52
- expect(getByText("Please match the format requested.")).toBeTruthy();
101
+ expect(onBlur).toHaveBeenCalled();
102
+ expect(onBlur).toHaveBeenCalledWith({ value: "pattern test", error: "Please match the format requested." });
103
+ userEvent.clear(textarea);
53
104
  fireEvent.change(textarea, { target: { value: "pattern4&" } });
105
+ expect(onChange).toHaveBeenCalled();
106
+ expect(onChange).toHaveBeenCalledWith({ value: "pattern4&", error: null });
54
107
  fireEvent.blur(textarea);
55
- expect(queryByText("Please match the format requested.")).toBeFalsy();
108
+ expect(onBlur).toHaveBeenCalled();
109
+ expect(onBlur).toHaveBeenCalledWith({ value: "pattern4&", error: null });
56
110
  });
57
- test("Strict mode - Length constraint", () => {
111
+ test("Length constraint", () => {
58
112
  const onChange = jest.fn();
59
113
  const onBlur = jest.fn();
60
- const { getByLabelText, getByText, queryByText } = render(
114
+ const { getByLabelText } = render(
61
115
  <DxcNewTextarea
62
116
  label="Example label"
63
117
  placeholder="Placeholder"
@@ -68,14 +122,22 @@ describe("NewTextarea component tests", () => {
68
122
  />
69
123
  );
70
124
  const textarea = getByLabelText("Example label");
125
+
71
126
  fireEvent.change(textarea, { target: { value: "test" } });
127
+ expect(onChange).toHaveBeenCalled();
128
+ expect(onChange).toHaveBeenCalledWith({ value: "test", error: "Min length 5, max length 10." });
72
129
  fireEvent.blur(textarea);
73
- expect(getByText("Min length 5, max length 10.")).toBeTruthy();
74
- fireEvent.change(textarea, { target: { value: "test " } });
130
+ expect(onBlur).toHaveBeenCalled();
131
+ expect(onBlur).toHaveBeenCalledWith({ value: "test", error: "Min length 5, max length 10." });
132
+ userEvent.clear(textarea);
133
+ fireEvent.change(textarea, { target: { value: "length" } });
134
+ expect(onChange).toHaveBeenCalled();
135
+ expect(onChange).toHaveBeenCalledWith({ value: "length", error: null });
75
136
  fireEvent.blur(textarea);
76
- expect(queryByText(/Min length /)).toBeFalsy();
137
+ expect(onBlur).toHaveBeenCalled();
138
+ expect(onBlur).toHaveBeenCalledWith({ value: "length", error: null });
77
139
  });
78
- test("Strict mode - Pattern and length constraints", () => {
140
+ test("Pattern and length constraints", () => {
79
141
  const onChange = jest.fn();
80
142
  const onBlur = jest.fn();
81
143
  const { getByLabelText, getByText, queryByText } = render(
@@ -90,81 +152,25 @@ describe("NewTextarea component tests", () => {
90
152
  />
91
153
  );
92
154
  const textarea = getByLabelText("Example label");
155
+
93
156
  fireEvent.change(textarea, { target: { value: "test" } });
157
+ expect(onChange).toHaveBeenCalled();
158
+ expect(onChange).toHaveBeenCalledWith({ value: "test", error: "Min length 5, max length 10." });
94
159
  fireEvent.blur(textarea);
95
- expect(getByText("Min length 5, max length 10.")).toBeTruthy();
96
- fireEvent.change(textarea, { target: { value: "test " } });
97
- fireEvent.blur(textarea);
98
- expect(getByText("Please match the format requested.")).toBeTruthy();
99
- fireEvent.change(textarea, { target: { value: "test 4" } });
100
- fireEvent.blur(textarea);
101
- expect(queryByText("Please match the format requested.")).toBeFalsy();
102
- });
103
- test("Non Strict mode - Pattern constraint", () => {
104
- const onChange = jest.fn((value) => {
105
- expect(value).toBe("Example value");
106
- });
107
- const onBlur = jest.fn(({ value, error }) => {
108
- expect(value).toBe("Example value");
109
- expect(error).toBe("Please match the format requested.");
110
- });
111
- const { getByLabelText } = render(
112
- <DxcNewTextarea
113
- label="Example label"
114
- placeholder="Placeholder"
115
- onChange={onChange}
116
- onBlur={onBlur}
117
- margin={{ left: "medium", right: "medium" }}
118
- pattern='^.*(?=.*[a-zA-Z])(?=.*\d)(?=.*[!&$%&? "]).*$'
119
- />
120
- );
121
- const textarea = getByLabelText("Example label");
122
- fireEvent.change(textarea, { target: { value: "Example value" } });
123
- fireEvent.blur(textarea);
124
- });
125
- test("Non Strict mode - Length constraint", () => {
126
- const onChange = jest.fn((value) => {
127
- expect(value).toBe("Example value");
128
- });
129
- const onBlur = jest.fn(({ value, error }) => {
130
- expect(value).toBe("Example value");
131
- expect(error).toBe("Min length 5, max length 10.");
132
- });
133
- const { getByLabelText } = render(
134
- <DxcNewTextarea
135
- label="Example label"
136
- placeholder="Placeholder"
137
- onChange={onChange}
138
- onBlur={onBlur}
139
- margin={{ left: "medium", right: "medium" }}
140
- length={{ min: 5, max: 10 }}
141
- />
142
- );
143
- const textarea = getByLabelText("Example label");
144
- fireEvent.change(textarea, { target: { value: "Example value" } });
160
+ expect(onBlur).toHaveBeenCalled();
161
+ expect(onBlur).toHaveBeenCalledWith({ value: "test", error: "Min length 5, max length 10." });
162
+ fireEvent.change(textarea, { target: { value: "tests" } });
163
+ expect(onChange).toHaveBeenCalled();
164
+ expect(onChange).toHaveBeenCalledWith({ value: "tests", error: "Please match the format requested." });
145
165
  fireEvent.blur(textarea);
146
- });
147
- test("Non Strict mode - Pattern and length constraints", () => {
148
- const onChange = jest.fn((value) => {
149
- expect(value).toBe("Example value");
150
- });
151
- const onBlur = jest.fn(({ value, error }) => {
152
- expect(value).toBe("Example value");
153
- expect(error).toBe("Min length 5, max length 10.");
154
- });
155
- const { getByLabelText } = render(
156
- <DxcNewTextarea
157
- label="Example label"
158
- placeholder="Placeholder"
159
- onChange={onChange}
160
- onBlur={onBlur}
161
- margin={{ left: "medium", right: "medium" }}
162
- length={{ min: 5, max: 10 }}
163
- />
164
- );
165
- const textarea = getByLabelText("Example label");
166
- fireEvent.change(textarea, { target: { value: "Example value" } });
166
+ expect(onBlur).toHaveBeenCalled();
167
+ expect(onBlur).toHaveBeenCalledWith({ value: "tests", error: "Please match the format requested." });
168
+ fireEvent.change(textarea, { target: { value: "tests4&" } });
169
+ expect(onChange).toHaveBeenCalled();
170
+ expect(onChange).toHaveBeenCalledWith({ value: "tests4&", error: null });
167
171
  fireEvent.blur(textarea);
172
+ expect(onBlur).toHaveBeenCalled();
173
+ expect(onBlur).toHaveBeenCalledWith({ value: "tests4&", error: null });
168
174
  });
169
175
  test("onBlur function is called correctly", () => {
170
176
  const onBlur = jest.fn();
@@ -175,27 +181,15 @@ describe("NewTextarea component tests", () => {
175
181
  expect(onBlur).toHaveBeenCalled();
176
182
  expect(onBlur).toHaveBeenCalledWith({ value: "Blur test", error: null });
177
183
  });
178
- test("Controlled textarea", () => {
184
+ test("onChange function is called correctly", () => {
179
185
  const onChange = jest.fn();
180
- const onBlur = jest.fn();
181
186
  const { getByLabelText } = render(
182
- <DxcNewTextarea label="Example label" value="Test value" onChange={onChange} onBlur={onBlur} />
187
+ <DxcNewTextarea label="Example label" value="Test value" onChange={onChange} />
183
188
  );
184
189
  const textarea = getByLabelText("Example label");
185
190
  fireEvent.change(textarea, { target: { value: "Controlled test" } });
186
191
  expect(onChange).toHaveBeenCalled();
192
+ expect(onChange).toHaveBeenCalledWith({ value: "Controlled test", error: null });
187
193
  expect(textarea.value).toBe("Test value");
188
- fireEvent.blur(textarea);
189
- expect(onBlur).toHaveBeenCalled();
190
- expect(onBlur).toHaveBeenCalledWith({ value: "Test value", error: null });
191
- });
192
- test("Uncontrolled input", () => {
193
- const onChange = jest.fn();
194
- const { getByLabelText } = render(<DxcNewTextarea label="Example label" onChange={onChange} />);
195
- const textarea = getByLabelText("Example label");
196
- fireEvent.change(textarea, { target: { value: "Uncontrolled test" } });
197
- expect(onChange).toHaveBeenCalled();
198
- expect(onChange).toHaveBeenCalledWith("Uncontrolled test");
199
- expect(textarea.value).toBe("Uncontrolled test");
200
194
  });
201
195
  });
@@ -36,6 +36,21 @@ describe("Number component tests", () => {
36
36
  expect(getByText("(Optional)")).toBeTruthy();
37
37
  });
38
38
 
39
+ test("Number is not optional: required field, displays error if not filled in", () => {
40
+ const onBlur = jest.fn();
41
+ const onChange = jest.fn();
42
+ const { getByRole } = render(<DxcNumber onBlur={onBlur} onChange={onChange} />);
43
+ const input = getByRole("textbox");
44
+
45
+ userEvent.type(input, "1");
46
+ userEvent.clear(input);
47
+ fireEvent.blur(input);
48
+ expect(onBlur).toHaveBeenCalled();
49
+ expect(onBlur).toHaveBeenCalledWith({ value: "", error: "This field is required. Please, enter a value." });
50
+ expect(onChange).toHaveBeenCalled();
51
+ expect(onChange).toHaveBeenCalledWith({ value: "", error: "This field is required. Please, enter a value." });
52
+ });
53
+
39
54
  test("Suffix and prefix must be shown)", () => {
40
55
  const { getByText } = render(<DxcNumber label="Number label" prefix="+34" suffix="USD" />);
41
56
  expect(getByText("+34")).toBeTruthy();
@@ -52,19 +67,29 @@ describe("Number component tests", () => {
52
67
  const { getByLabelText } = render(<DxcNumber label="Number label" onChange={onChange} />);
53
68
  const number = getByLabelText("Number label");
54
69
  userEvent.type(number, "t");
55
- expect(onChange).not.toHaveBeenCalledWith("t");
70
+ expect(onChange).not.toHaveBeenCalledWith({ value: "t", error: null });
56
71
  expect(number.value).toBe("");
57
72
  userEvent.type(number, "1");
58
- expect(onChange).toHaveBeenCalledWith("1");
73
+ expect(onChange).toHaveBeenCalledWith({ value: "1", error: null });
59
74
  expect(number.value).toBe("1");
60
75
  });
61
76
 
62
77
  test("Error message is shown if the value is less than the min value", () => {
63
- const { getByLabelText, getByText } = render(<DxcNumber label="Number label" min={5} />);
78
+ const onChange = jest.fn(({ value, error }) => {
79
+ expect(value).toBe("1");
80
+ expect(error).toBe("Value must be greater than or equal to 5.");
81
+ });
82
+ const onBlur = jest.fn(({ value, error }) => {
83
+ expect(value).toBe("1");
84
+ expect(error).toBe("Value must be greater than or equal to 5.");
85
+ });
86
+ const { getByLabelText } = render(
87
+ <DxcNumber label="Number label" min={5} onBlur={onBlur} onChange={onChange} />
88
+ );
64
89
  const number = getByLabelText("Number label");
90
+
65
91
  userEvent.type(number, "1");
66
92
  fireEvent.blur(number);
67
- expect(getByText("Value must be greater than or equal to 5.")).toBeTruthy();
68
93
  });
69
94
 
70
95
  test("Cannot decrement the value if it is less than the min value", () => {
@@ -90,11 +115,17 @@ describe("Number component tests", () => {
90
115
  });
91
116
 
92
117
  test("Error message is shown if the value is greater than the max value", () => {
93
- const { getByLabelText, getByText } = render(<DxcNumber label="Number label" max={10} />);
118
+ const onChange = jest.fn();
119
+ const onBlur = jest.fn();
120
+ const { getByLabelText } = render(<DxcNumber label="Number label" max={10} onBlur={onBlur} onChange={onChange} />);
94
121
  const number = getByLabelText("Number label");
95
- userEvent.type(number, "12");
122
+
123
+ userEvent.type(number, "12");
124
+ expect(onChange).toHaveBeenCalledTimes(2);
125
+ expect(onChange).toHaveBeenCalledWith({ value: "12", error: "Value must be less than or equal to 10." });
96
126
  fireEvent.blur(number);
97
- expect(getByText("Value must be less than or equal to 10.")).toBeTruthy();
127
+ expect(onBlur).toHaveBeenCalled();
128
+ expect(onBlur).toHaveBeenCalledWith({ value: "12", error: "Value must be less than or equal to 10." });
98
129
  });
99
130
 
100
131
  test("Cannot increment the value if it is greater than the max value", () => {
@@ -160,13 +191,16 @@ describe("Number component tests", () => {
160
191
  });
161
192
 
162
193
  test("Increment and decrement the value with min, max and step", () => {
163
- const { getByLabelText, getByText, getAllByRole } = render(
164
- <DxcNumber label="Number label" min={5} max={20} step={8} />
194
+ const onBlur = jest.fn(({ value, error }) => {
195
+ expect(value).toBe("1");
196
+ expect(error).toBe("Value must be greater than or equal to 5.");
197
+ });
198
+ const { getByLabelText, getAllByRole } = render(
199
+ <DxcNumber label="Number label" min={5} max={20} step={8} onBlur={onBlur} />
165
200
  );
166
201
  const number = getByLabelText("Number label");
167
202
  userEvent.type(number, "1");
168
203
  fireEvent.blur(number);
169
- expect(getByText("Value must be greater than or equal to 5.")).toBeTruthy();
170
204
  const increment = getAllByRole("button")[1];
171
205
  userEvent.click(increment);
172
206
  expect(number.value).toBe("5");
@@ -209,24 +243,6 @@ describe("Number component tests", () => {
209
243
  expect(number.value).toBe("5");
210
244
  });
211
245
 
212
- test("Custom error messages", () => {
213
- const onChange = jest.fn((value) => {
214
- expect(value).toBe("2");
215
- });
216
-
217
- const onBlur = jest.fn(({ value, error }) => {
218
- expect(value).toBe("2");
219
- expect(error).toBe("Value must be greater than or equal to 5.");
220
- });
221
-
222
- const { getByLabelText } = render(
223
- <DxcNumber label="Number label" min={5} step={8} onChange={onChange} onBlur={onBlur} />
224
- );
225
- const number = getByLabelText("Number label");
226
- userEvent.type(number, "2");
227
- fireEvent.blur(number);
228
- });
229
-
230
246
  test("Number has correct accesibility attributes", () => {
231
247
  const { getByLabelText, getAllByRole } = render(<DxcNumber label="Number label" />);
232
248
  const number = getByLabelText("Number label");
@@ -62,7 +62,7 @@ describe("Paginator component tests", () => {
62
62
  act(() => {
63
63
  userEvent.click(goToPageSelect);
64
64
  });
65
- const goToPageOption = getByRole("option", { name: /2/i });
65
+ const goToPageOption = getByText("2");
66
66
  act(() => {
67
67
  userEvent.click(goToPageOption);
68
68
  });
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { render } from "@testing-library/react";
2
+ import { render, fireEvent } from "@testing-library/react";
3
3
  import userEvent from "@testing-library/user-event";
4
4
  import DxcPassword from "../src/password/Password";
5
5
 
@@ -24,13 +24,22 @@ describe("Password component tests", () => {
24
24
  const { getByRole } = render(<DxcPassword label="Password" onChange={onChange} />);
25
25
  const password = getByRole("textbox");
26
26
  userEvent.type(password, "Pa$$w0rd");
27
- expect(onChange).toHaveBeenCalledWith("P");
27
+ expect(onChange).toHaveBeenCalledWith({ value: "P", error: null });
28
+ expect(password.value).toBe("Pa$$w0rd");
29
+ });
30
+
31
+ test("onBlur function is called correctly", () => {
32
+ const onBlur = jest.fn();
33
+ const { getByRole } = render(<DxcPassword label="Password" onBlur={onBlur} />);
34
+ const password = getByRole("textbox");
35
+ userEvent.type(password, "Pa$$w0rd");
36
+ fireEvent.blur(password);
37
+ expect(onBlur).toHaveBeenCalledWith({ value: "Pa$$w0rd", error: null });
28
38
  expect(password.value).toBe("Pa$$w0rd");
29
39
  });
30
40
 
31
41
  test("Clear password value", () => {
32
- const onChange = jest.fn();
33
- const { getAllByRole, getByRole } = render(<DxcPassword label="Password" onChange={onChange} clearable />);
42
+ const { getAllByRole, getByRole } = render(<DxcPassword label="Password" clearable />);
34
43
  const password = getByRole("textbox");
35
44
  userEvent.type(password, "Pa$$w0rd");
36
45
  expect(password.value).toBe("Pa$$w0rd");
@@ -40,8 +49,7 @@ describe("Password component tests", () => {
40
49
  });
41
50
 
42
51
  test("Non clearable password has no clear icon", () => {
43
- const onChange = jest.fn();
44
- const { getAllByRole, getByRole } = render(<DxcPassword label="Password" onChange={onChange} />);
52
+ const { getAllByRole, getByRole } = render(<DxcPassword label="Password" />);
45
53
  const password = getByRole("textbox");
46
54
  userEvent.type(password, "Pa$$w0rd");
47
55
  expect(password.value).toBe("Pa$$w0rd");
@@ -50,8 +58,7 @@ describe("Password component tests", () => {
50
58
  });
51
59
 
52
60
  test("Show/hide password button works correctly", () => {
53
- const onChange = jest.fn();
54
- const { getAllByRole, getByRole } = render(<DxcPassword label="Password" clearable onChange={onChange} />);
61
+ const { getAllByRole, getByRole } = render(<DxcPassword label="Password" clearable />);
55
62
  const password = getByRole("textbox");
56
63
  userEvent.type(password, "Pa$$w0rd");
57
64
  expect(password.value).toBe("Pa$$w0rd");
@@ -266,13 +266,12 @@ describe("ResultsetTable component tests", () => {
266
266
  act(() => {
267
267
  userEvent.click(goToPageSelect);
268
268
  });
269
- const goToPageOption = getByRole("option", { name: /2/i });
269
+ const goToPageOption = getByText("2");
270
270
  act(() => {
271
271
  userEvent.click(goToPageOption);
272
272
  });
273
273
 
274
274
  expect(getByText("4 to 6 of 10")).toBeTruthy();
275
- // expect(getByText("Page: 2 of 4")).toBeTruthy();
276
275
  expect(getByText("Rick")).toBeTruthy();
277
276
  expect(getByText("Mark")).toBeTruthy();
278
277
  expect(getByText("Cris")).toBeTruthy();
@@ -21,18 +21,43 @@ const optionsWithoutIcon = [
21
21
  const optionsWithIcons = [
22
22
  {
23
23
  value: 1,
24
- label: "Facebook",
25
- iconSrc: "/testIconFacebook",
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
+ ),
26
38
  },
27
39
  {
28
40
  value: 2,
29
- label: "Twitter",
30
- iconSrc: "/testIconTwitter",
31
- },
32
- {
33
- value: 3,
34
- label: "Linkedin",
35
- iconSrc: "/testIconLinkedin",
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
+ ),
36
61
  },
37
62
  ];
38
63
 
@@ -60,29 +85,27 @@ describe("Select component tests", () => {
60
85
  });
61
86
 
62
87
  test("Select renders options with icons before", () => {
63
- const { getByRole, getAllByRole } = render(
88
+ const { getByRole, getByTestId } = render(
64
89
  <DxcSelect label="test-select-name" options={optionsWithIcons}></DxcSelect>
65
90
  );
66
91
  const select = getByRole("button");
67
92
  act(() => {
68
93
  userEvent.click(select);
69
94
  });
70
- expect(getAllByRole("img")[0].getAttribute("src")).toEqual("/testIconFacebook");
71
- expect(getAllByRole("img")[1].getAttribute("src")).toEqual("/testIconTwitter");
72
- expect(getAllByRole("img")[2].getAttribute("src")).toEqual("/testIconLinkedin");
95
+ expect(getByTestId("image-1")).toBeTruthy();
96
+ expect(getByTestId("image-2")).toBeTruthy();
73
97
  });
74
98
 
75
99
  test("Select renders options with icons after", () => {
76
- const { getByRole, getAllByRole } = render(
100
+ const { getByRole, getByTestId } = render(
77
101
  <DxcSelect label="test-select-name" options={optionsWithIcons} iconPosition="after"></DxcSelect>
78
102
  );
79
103
  const select = getByRole("button");
80
104
  act(() => {
81
105
  userEvent.click(select);
82
106
  });
83
- expect(getAllByRole("img")[0].getAttribute("src")).toEqual("/testIconFacebook");
84
- expect(getAllByRole("img")[1].getAttribute("src")).toEqual("/testIconTwitter");
85
- expect(getAllByRole("img")[2].getAttribute("src")).toEqual("/testIconLinkedin");
107
+ expect(getByTestId("image-1")).toBeTruthy();
108
+ expect(getByTestId("image-2")).toBeTruthy();
86
109
  });
87
110
 
88
111
  test("Select renders with a default value", () => {