@dxc-technology/halstack-react 0.0.0-6f13c26 → 0.0.0-6f3bc2c

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 (242) hide show
  1. package/BackgroundColorContext.js +50 -0
  2. package/ThemeContext.js +246 -0
  3. package/{dist/select/Select.js → V3Select/V3Select.js} +38 -132
  4. package/V3Select/index.d.ts +27 -0
  5. package/{dist/V3Textarea → V3Textarea}/V3Textarea.js +10 -14
  6. package/V3Textarea/index.d.ts +27 -0
  7. package/{dist/accordion → accordion}/Accordion.js +23 -87
  8. package/accordion/index.d.ts +28 -0
  9. package/{dist/accordion-group → accordion-group}/AccordionGroup.js +13 -15
  10. package/accordion-group/index.d.ts +16 -0
  11. package/{dist/alert → alert}/Alert.js +38 -132
  12. package/{dist/alert → alert}/index.d.ts +0 -0
  13. package/badge/Badge.js +59 -0
  14. package/{dist/box → box}/Box.js +9 -13
  15. package/box/index.d.ts +25 -0
  16. package/button/Button.d.ts +4 -0
  17. package/{dist/button → button}/Button.js +16 -72
  18. package/button/Button.stories.tsx +10 -0
  19. package/button/types.d.ts +22 -0
  20. package/button/types.js +5 -0
  21. package/{dist/card → card}/Card.js +19 -73
  22. package/card/index.d.ts +22 -0
  23. package/{dist/checkbox → checkbox}/Checkbox.js +16 -41
  24. package/checkbox/index.d.ts +24 -0
  25. package/{dist/chip → chip}/Chip.js +17 -61
  26. package/chip/index.d.ts +22 -0
  27. package/{dist/common → common}/OpenSans.css +0 -0
  28. package/{dist/common → common}/RequiredComponent.js +3 -11
  29. package/{dist/common → common}/fonts/OpenSans-Bold.ttf +0 -0
  30. package/{dist/common → common}/fonts/OpenSans-BoldItalic.ttf +0 -0
  31. package/{dist/common → common}/fonts/OpenSans-ExtraBold.ttf +0 -0
  32. package/{dist/common → common}/fonts/OpenSans-ExtraBoldItalic.ttf +0 -0
  33. package/{dist/common → common}/fonts/OpenSans-Italic.ttf +0 -0
  34. package/{dist/common → common}/fonts/OpenSans-Light.ttf +0 -0
  35. package/{dist/common → common}/fonts/OpenSans-LightItalic.ttf +0 -0
  36. package/{dist/common → common}/fonts/OpenSans-Regular.ttf +0 -0
  37. package/{dist/common → common}/fonts/OpenSans-SemiBold.ttf +0 -0
  38. package/{dist/common → common}/fonts/OpenSans-SemiBoldItalic.ttf +0 -0
  39. package/{dist/common → common}/utils.js +0 -0
  40. package/{dist/common → common}/variables.js +134 -136
  41. package/{dist/date → date}/Date.js +21 -27
  42. package/date/index.d.ts +27 -0
  43. package/{dist/date-input → date-input}/DateInput.js +18 -22
  44. package/{dist/date-input → date-input}/index.d.ts +0 -0
  45. package/{dist/dialog → dialog}/Dialog.js +16 -50
  46. package/dialog/index.d.ts +18 -0
  47. package/{dist/dropdown → dropdown}/Dropdown.js +37 -131
  48. package/dropdown/index.d.ts +26 -0
  49. package/{dist/file-input → file-input}/FileInput.js +49 -161
  50. package/{dist/file-input → file-input}/FileItem.js +36 -123
  51. package/{dist/file-input → file-input}/index.d.ts +1 -1
  52. package/{dist/footer → footer}/Footer.js +53 -151
  53. package/footer/Icons.js +77 -0
  54. package/footer/index.d.ts +25 -0
  55. package/header/Header.js +326 -0
  56. package/header/Icons.js +59 -0
  57. package/header/index.d.ts +25 -0
  58. package/{dist/heading → heading}/Heading.js +30 -72
  59. package/heading/index.d.ts +17 -0
  60. package/input-text/Icons.js +22 -0
  61. package/{dist/input-text → input-text}/InputText.js +37 -133
  62. package/input-text/index.d.ts +36 -0
  63. package/{dist/layout → layout}/ApplicationLayout.js +35 -131
  64. package/layout/Icons.js +55 -0
  65. package/{dist/link → link}/Link.js +18 -72
  66. package/link/index.d.ts +23 -0
  67. package/main.d.ts +44 -0
  68. package/{dist/main.js → main.js} +93 -97
  69. package/{dist/number-input → number-input}/NumberInput.js +5 -13
  70. package/{dist/number-input → number-input}/NumberInputContext.js +1 -1
  71. package/{dist/number-input → number-input}/index.d.ts +0 -0
  72. package/package.json +29 -24
  73. package/paginator/Icons.js +66 -0
  74. package/{dist/paginator → paginator}/Paginator.js +49 -117
  75. package/paginator/index.d.ts +20 -0
  76. package/{dist/password-input → password-input}/PasswordInput.js +21 -20
  77. package/{dist/password-input → password-input}/index.d.ts +0 -0
  78. package/{dist/progress-bar → progress-bar}/ProgressBar.js +18 -72
  79. package/progress-bar/index.d.ts +18 -0
  80. package/{dist/radio → radio}/Radio.js +12 -26
  81. package/radio/index.d.ts +23 -0
  82. package/{dist/resultsetTable → resultsetTable}/ResultsetTable.js +35 -119
  83. package/resultsetTable/index.d.ts +19 -0
  84. package/select/Select.js +864 -0
  85. package/select/index.d.ts +131 -0
  86. package/{dist/sidenav → sidenav}/Sidenav.js +15 -49
  87. package/sidenav/index.d.ts +13 -0
  88. package/{dist/slider → slider}/Slider.js +33 -87
  89. package/slider/index.d.ts +29 -0
  90. package/{dist/spinner → spinner}/Spinner.js +38 -152
  91. package/spinner/index.d.ts +17 -0
  92. package/{dist/switch → switch}/Switch.js +12 -26
  93. package/switch/index.d.ts +24 -0
  94. package/{dist/table → table}/Table.js +10 -24
  95. package/table/index.d.ts +13 -0
  96. package/{dist/tabs → tabs}/Tabs.js +26 -110
  97. package/tabs/index.d.ts +19 -0
  98. package/{dist/tag → tag}/Tag.js +22 -96
  99. package/tag/index.d.ts +24 -0
  100. package/{dist/text-input → text-input}/TextInput.js +221 -374
  101. package/{dist/text-input → text-input}/index.d.ts +0 -0
  102. package/{dist/textarea → textarea}/Textarea.js +18 -72
  103. package/{dist/textarea → textarea}/index.d.ts +0 -0
  104. package/{dist/toggle → toggle}/Toggle.js +15 -49
  105. package/toggle/index.d.ts +21 -0
  106. package/{dist/toggle-group → toggle-group}/ToggleGroup.js +23 -107
  107. package/toggle-group/index.d.ts +21 -0
  108. package/{dist/upload → upload}/Upload.js +14 -18
  109. package/upload/buttons-upload/ButtonsUpload.js +111 -0
  110. package/upload/buttons-upload/Icons.js +40 -0
  111. package/upload/dragAndDropArea/DragAndDropArea.js +225 -0
  112. package/upload/dragAndDropArea/Icons.js +39 -0
  113. package/upload/file-upload/FileToUpload.js +115 -0
  114. package/upload/file-upload/Icons.js +66 -0
  115. package/{dist/upload → upload}/files-upload/FilesToUpload.js +12 -26
  116. package/upload/index.d.ts +15 -0
  117. package/upload/transaction/Icons.js +160 -0
  118. package/upload/transaction/Transaction.js +104 -0
  119. package/upload/transactions/Transactions.js +94 -0
  120. package/{dist/useTheme.js → useTheme.js} +0 -0
  121. package/wizard/Icons.js +65 -0
  122. package/{dist/wizard → wizard}/Wizard.js +32 -172
  123. package/wizard/index.d.ts +18 -0
  124. package/README.md +0 -66
  125. package/babel.config.js +0 -8
  126. package/dist/BackgroundColorContext.js +0 -46
  127. package/dist/ThemeContext.js +0 -248
  128. package/dist/badge/Badge.js +0 -63
  129. package/dist/checkbox/Checkbox.stories.js +0 -144
  130. package/dist/checkbox/readme.md +0 -116
  131. package/dist/date/Date.stories.js +0 -205
  132. package/dist/date/readme.md +0 -73
  133. package/dist/footer/dxc_logo.svg +0 -15
  134. package/dist/footer/readme.md +0 -41
  135. package/dist/header/Header.js +0 -403
  136. package/dist/header/Header.stories.js +0 -176
  137. package/dist/header/close_icon.svg +0 -1
  138. package/dist/header/dxc_logo_black.svg +0 -8
  139. package/dist/header/hamb_menu_black.svg +0 -1
  140. package/dist/header/hamb_menu_white.svg +0 -1
  141. package/dist/header/readme.md +0 -33
  142. package/dist/input-text/error.svg +0 -1
  143. package/dist/input-text/readme.md +0 -91
  144. package/dist/layout/facebook.svg +0 -45
  145. package/dist/layout/linkedin.svg +0 -50
  146. package/dist/layout/twitter.svg +0 -53
  147. package/dist/link/readme.md +0 -51
  148. package/dist/main.d.ts +0 -8
  149. package/dist/new-select/NewSelect.js +0 -836
  150. package/dist/new-select/index.d.ts +0 -53
  151. package/dist/paginator/images/next.svg +0 -3
  152. package/dist/paginator/images/nextPage.svg +0 -3
  153. package/dist/paginator/images/previous.svg +0 -3
  154. package/dist/paginator/images/previousPage.svg +0 -3
  155. package/dist/paginator/readme.md +0 -50
  156. package/dist/progress-bar/ProgressBar.stories.js +0 -280
  157. package/dist/progress-bar/readme.md +0 -63
  158. package/dist/radio/Radio.stories.js +0 -166
  159. package/dist/radio/readme.md +0 -70
  160. package/dist/resultsetTable/arrow_downward-24px_wht.svg +0 -1
  161. package/dist/resultsetTable/arrow_upward-24px_wht.svg +0 -1
  162. package/dist/resultsetTable/unfold_more-24px_wht.svg +0 -1
  163. package/dist/slider/readme.md +0 -64
  164. package/dist/spinner/Spinner.stories.js +0 -183
  165. package/dist/spinner/readme.md +0 -65
  166. package/dist/switch/Switch.stories.js +0 -134
  167. package/dist/switch/readme.md +0 -133
  168. package/dist/tabs/Tabs.stories.js +0 -130
  169. package/dist/tabs/readme.md +0 -78
  170. package/dist/tabs-for-sections/TabsForSections.js +0 -92
  171. package/dist/tabs-for-sections/readme.md +0 -78
  172. package/dist/toggle/Toggle.stories.js +0 -297
  173. package/dist/toggle/readme.md +0 -80
  174. package/dist/upload/Upload.stories.js +0 -72
  175. package/dist/upload/buttons-upload/ButtonsUpload.js +0 -139
  176. package/dist/upload/buttons-upload/drag-drop-icon.svg +0 -4
  177. package/dist/upload/buttons-upload/upload-button.svg +0 -1
  178. package/dist/upload/dragAndDropArea/DragAndDropArea.js +0 -329
  179. package/dist/upload/dragAndDropArea/upload_drop.svg +0 -4
  180. package/dist/upload/dragAndDropArea/upload_file.svg +0 -4
  181. package/dist/upload/file-upload/FileToUpload.js +0 -184
  182. package/dist/upload/file-upload/audio-icon.svg +0 -4
  183. package/dist/upload/file-upload/close.svg +0 -4
  184. package/dist/upload/file-upload/file-icon.svg +0 -4
  185. package/dist/upload/file-upload/video-icon.svg +0 -4
  186. package/dist/upload/readme.md +0 -37
  187. package/dist/upload/transaction/Transaction.js +0 -175
  188. package/dist/upload/transaction/audio-icon-err.svg +0 -4
  189. package/dist/upload/transaction/audio-icon.svg +0 -4
  190. package/dist/upload/transaction/error-icon.svg +0 -4
  191. package/dist/upload/transaction/file-icon-err.svg +0 -4
  192. package/dist/upload/transaction/file-icon.svg +0 -4
  193. package/dist/upload/transaction/image-icon-err.svg +0 -4
  194. package/dist/upload/transaction/image-icon.svg +0 -4
  195. package/dist/upload/transaction/success-icon.svg +0 -4
  196. package/dist/upload/transaction/video-icon-err.svg +0 -4
  197. package/dist/upload/transaction/video-icon.svg +0 -4
  198. package/dist/upload/transactions/Transactions.js +0 -138
  199. package/dist/wizard/invalid_icon.svg +0 -5
  200. package/dist/wizard/valid_icon.svg +0 -5
  201. package/dist/wizard/validation-wrong.svg +0 -6
  202. package/test/Accordion.test.js +0 -33
  203. package/test/AccordionGroup.test.js +0 -125
  204. package/test/Alert.test.js +0 -53
  205. package/test/Box.test.js +0 -10
  206. package/test/Button.test.js +0 -18
  207. package/test/Card.test.js +0 -30
  208. package/test/Checkbox.test.js +0 -45
  209. package/test/Chip.test.js +0 -25
  210. package/test/Date.test.js +0 -397
  211. package/test/DateInput.test.js +0 -242
  212. package/test/Dialog.test.js +0 -23
  213. package/test/Dropdown.test.js +0 -145
  214. package/test/FileInput.test.js +0 -201
  215. package/test/Footer.test.js +0 -99
  216. package/test/Header.test.js +0 -39
  217. package/test/Heading.test.js +0 -35
  218. package/test/InputText.test.js +0 -248
  219. package/test/Link.test.js +0 -43
  220. package/test/NumberInput.test.js +0 -259
  221. package/test/Paginator.test.js +0 -177
  222. package/test/PasswordInput.test.js +0 -83
  223. package/test/ProgressBar.test.js +0 -35
  224. package/test/Radio.test.js +0 -37
  225. package/test/ResultsetTable.test.js +0 -329
  226. package/test/Select.test.js +0 -212
  227. package/test/Sidenav.test.js +0 -45
  228. package/test/Slider.test.js +0 -82
  229. package/test/Spinner.test.js +0 -32
  230. package/test/Switch.test.js +0 -45
  231. package/test/Table.test.js +0 -36
  232. package/test/Tabs.test.js +0 -109
  233. package/test/TabsForSections.test.js +0 -34
  234. package/test/Tag.test.js +0 -32
  235. package/test/TextInput.test.js +0 -732
  236. package/test/Textarea.test.js +0 -193
  237. package/test/ToggleGroup.test.js +0 -85
  238. package/test/Upload.test.js +0 -60
  239. package/test/V3TextArea.test.js +0 -51
  240. package/test/Wizard.test.js +0 -130
  241. package/test/mocks/pngMock.js +0 -1
  242. package/test/mocks/svgMock.js +0 -1
@@ -1,145 +0,0 @@
1
- import React from "react";
2
- import { render, fireEvent, act } from "@testing-library/react";
3
- import DxcDropdown from "../src/dropdown/Dropdown";
4
-
5
- global.document.createRange = () => ({
6
- setStart: () => {},
7
- setEnd: () => {},
8
- commonAncestorContainer: {
9
- nodeName: "BODY",
10
- ownerDocument: document,
11
- },
12
- });
13
-
14
- describe("Dropdown component tests", () => {
15
- test("Dropdown renders with correct label", () => {
16
- const { getByText } = render(<DxcDropdown label="dropdown-test"></DxcDropdown>);
17
- expect(getByText("dropdown-test")).toBeTruthy();
18
- });
19
-
20
- test("Dropdown renders with correct icon before", () => {
21
- const { getAllByRole } = render(<DxcDropdown iconSrc="/testIcon" label="dropdown-test"></DxcDropdown>);
22
- const image = getAllByRole("img")[0];
23
- expect(image.getAttribute("src")).toEqual("/testIcon");
24
- });
25
-
26
- test("Dropdown renders with correct icon after", () => {
27
- const { getAllByRole } = render(
28
- <DxcDropdown iconSrc="/testIcon" iconPosition="after" label="dropdown-test"></DxcDropdown>
29
- );
30
- const image = getAllByRole("img")[0];
31
- expect(image.getAttribute("src")).toEqual("/testIcon");
32
- });
33
-
34
- test("onClick shows and hides option", () => {
35
- const options = [
36
- {
37
- value: 1,
38
- label: "option-test",
39
- },
40
- ];
41
- const { queryByText } = render(<DxcDropdown options={options} label="dropdown-test"></DxcDropdown>);
42
- const dropdown = queryByText("dropdown-test");
43
- //Before clicked is not showed
44
- expect(queryByText("option-test")).toBeFalsy();
45
- act(() => {
46
- fireEvent.click(dropdown);
47
- });
48
- expect(queryByText("option-test")).toBeTruthy();
49
- });
50
- test("Disabled dropdown is not clickable", () => {
51
- const options = [
52
- {
53
- value: 1,
54
- label: "option-test",
55
- },
56
- ];
57
- const { queryByText } = render(<DxcDropdown options={options} disabled label="dropdown-test"></DxcDropdown>);
58
- const dropdown = queryByText("dropdown-test");
59
- expect(queryByText("option-test")).toBeFalsy();
60
- act(() => {
61
- fireEvent.click(dropdown);
62
- });
63
- expect(queryByText("option-test")).toBeFalsy();
64
- });
65
-
66
- test("Dropdown renders with correct icon before option", () => {
67
- const options = [
68
- {
69
- value: 1,
70
- label: "option-test",
71
- iconSrc: "/testIcon",
72
- },
73
- ];
74
- const { getByText, getByRole } = render(<DxcDropdown options={options} label="dropdown-test"></DxcDropdown>);
75
- const dropdown = getByText("dropdown-test");
76
- act(() => {
77
- fireEvent.click(dropdown);
78
- });
79
- expect(getByRole("img").getAttribute("src")).toEqual("/testIcon");
80
- });
81
-
82
- test("Dropdown renders with correct icon after option", () => {
83
- const options = [
84
- {
85
- value: 1,
86
- label: "option-test",
87
- iconSrc: "/testIcon",
88
- },
89
- ];
90
- const { getByText, getByRole } = render(
91
- <DxcDropdown options={options} optionsIconPosition="after" label="dropdown-test"></DxcDropdown>
92
- );
93
- const dropdown = getByText("dropdown-test");
94
- act(() => {
95
- fireEvent.click(dropdown);
96
- });
97
- expect(getByRole("img").getAttribute("src")).toEqual("/testIcon");
98
- });
99
-
100
- test("Dropdown renders with caret hidden", () => {
101
- const { queryByRole } = render(<DxcDropdown caretHidden={true} label="dropdown-test"></DxcDropdown>);
102
- expect(queryByRole("img")).toBeFalsy();
103
- });
104
-
105
- test("onSelectOption fuction is called correctly", () => {
106
- const onSelectOption = jest.fn((i) => i);
107
- const options = [
108
- {
109
- value: 1,
110
- label: "option-test",
111
- },
112
- ];
113
- const { getByText } = render(
114
- <DxcDropdown options={options} onSelectOption={onSelectOption} label="dropdown-test"></DxcDropdown>
115
- );
116
- const dropdown = getByText("dropdown-test");
117
- act(() => {
118
- fireEvent.click(dropdown);
119
- });
120
- const option = getByText("option-test");
121
- act(() => {
122
- fireEvent.click(option);
123
- });
124
- expect(onSelectOption).toHaveBeenCalledWith(1);
125
- });
126
-
127
- test("expandOnHover shows and hides the option correctly", () => {
128
- const options = [
129
- {
130
- value: 1,
131
- label: "option-test",
132
- },
133
- ];
134
- const { queryByText } = render(
135
- <DxcDropdown options={options} expandOnHover={true} label="dropdown-test"></DxcDropdown>
136
- );
137
- const dropdown = queryByText("dropdown-test");
138
- //Verify that is not showed before
139
- expect(queryByText("option-test")).toBeFalsy();
140
- act(() => {
141
- fireEvent.mouseOver(dropdown);
142
- });
143
- expect(queryByText("option-test")).toBeTruthy();
144
- });
145
- });
@@ -1,201 +0,0 @@
1
- import React from "react";
2
- import { render, fireEvent, waitFor } from "@testing-library/react";
3
- import userEvent from "@testing-library/user-event";
4
-
5
- import DxcFileInput from "../src/file-input/FileInput";
6
-
7
- describe("FileInput component tests", () => {
8
- const file1 = new File(["file1"], "file1.png", { type: "image/png" });
9
- const file2 = new File(["file2"], "file2.txt", {
10
- type: "text/plain",
11
- });
12
-
13
- const files = [
14
- {
15
- error: null,
16
- preview: null,
17
- file: file1,
18
- },
19
- {
20
- error: "Error message",
21
- preview: null,
22
- file: file2,
23
- },
24
- ];
25
-
26
- test("Renders with correct labels and helper text in file mode", () => {
27
- const { getByText } = render(<DxcFileInput label="File input label" helperText="File input helper text" />);
28
- expect(getByText("File input label")).toBeTruthy();
29
- expect(getByText("File input helper text")).toBeTruthy();
30
- });
31
- test("Renders with correct button label in file mode", () => {
32
- const { getByText } = render(<DxcFileInput label="File input label" helperText="File input helper text" />);
33
- expect(getByText("Select files")).toBeTruthy();
34
- });
35
- test("Renders with correct labels in filedrop mode", () => {
36
- const { getByText } = render(
37
- <DxcFileInput label="File input label" helperText="File input helper text" mode="filedrop" />
38
- );
39
- expect(getByText("Select")).toBeTruthy();
40
- expect(getByText("or drop files")).toBeTruthy();
41
- });
42
- test("Renders with correct labels in dropzone mode", () => {
43
- const { getByText } = render(
44
- <DxcFileInput label="File input label" helperText="File input helper text" mode="dropzone" />
45
- );
46
- expect(getByText("Select")).toBeTruthy();
47
- expect(getByText("or drop files")).toBeTruthy();
48
- });
49
- test("Disabled file input", () => {
50
- const { getByText, getByRole } = render(
51
- <DxcFileInput label="File input label" helperText="File input helper text" disabled />
52
- );
53
- expect(getByText("Select files")).toBeTruthy();
54
- const button = getByRole("button");
55
- expect(button.disabled).toBeTruthy();
56
- });
57
- test("Renders file items passed in value when multiple file input", () => {
58
- const callbackFile = jest.fn();
59
- const { getByText } = render(
60
- <DxcFileInput
61
- label="File input label"
62
- helperText="File input helper text"
63
- value={files}
64
- callbackFile={callbackFile}
65
- />
66
- );
67
- expect(getByText("file1.png")).toBeTruthy();
68
- expect(getByText("file2.txt")).toBeTruthy();
69
- expect(getByText("Error message")).toBeTruthy();
70
- });
71
- test("Renders file items when single file input", () => {
72
- const callbackFile = jest.fn();
73
- const { getByText } = render(
74
- <DxcFileInput
75
- label="File input label"
76
- helperText="File input helper text"
77
- multiple={false}
78
- value={files}
79
- callbackFile={callbackFile}
80
- />
81
- );
82
- expect(getByText("file1.png")).toBeTruthy();
83
- expect(getByText("file2.txt")).toBeTruthy();
84
- expect(getByText("Error message")).toBeTruthy();
85
- });
86
- test("Add file item when single file input", async () => {
87
- const newFile = new File(["newFile"], "newFile.pdf", { type: "pdf" });
88
- const callbackFile = jest.fn();
89
- const { getByText, getByLabelText } = render(
90
- <DxcFileInput
91
- label="File input label"
92
- helperText="File input helper text"
93
- value={files}
94
- callbackFile={callbackFile}
95
- multiple={false}
96
- />
97
- );
98
- expect(getByText("file1.png")).toBeTruthy();
99
- expect(getByText("file2.txt")).toBeTruthy();
100
- expect(getByText("Error message")).toBeTruthy();
101
- const inputFile = getByLabelText("File input label", { hidden: true });
102
- fireEvent.change(inputFile, { target: { files: [newFile] } });
103
- await waitFor(() => {
104
- expect(callbackFile).toHaveBeenCalledWith([
105
- {
106
- error: undefined,
107
- file: newFile,
108
- preview: (
109
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
110
- <path fill="none" d="M0 0h24v24H0V0z" />
111
- <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z" />
112
- </svg>
113
- ),
114
- },
115
- ]);
116
- });
117
- });
118
- test("Renders file items and delete one file", async () => {
119
- const callbackFile = jest.fn();
120
- const { getByText, getAllByRole } = render(
121
- <DxcFileInput
122
- label="File input label"
123
- helperText="File input helper text"
124
- value={files}
125
- callbackFile={callbackFile}
126
- />
127
- );
128
- expect(getByText("file1.png")).toBeTruthy();
129
- expect(getByText("file2.txt")).toBeTruthy();
130
- expect(getByText("Error message")).toBeTruthy();
131
- const removeBtn = getAllByRole("button")[1];
132
- userEvent.click(removeBtn);
133
- await waitFor(() => {
134
- expect(callbackFile).toHaveBeenCalledWith([{ error: "Error message", file: file2, preview: null }]);
135
- });
136
- });
137
-
138
- test("CallbackFile is correctly called", async () => {
139
- const newFile = new File(["newFile"], "newFile.pdf", { type: "pdf" });
140
- const callbackFile = jest.fn();
141
- const { getByLabelText } = render(
142
- <DxcFileInput
143
- label="File input label"
144
- helperText="File input helper text"
145
- value={files}
146
- callbackFile={callbackFile}
147
- />
148
- );
149
- const inputFile = getByLabelText("File input label", { hidden: true });
150
- fireEvent.change(inputFile, { target: { files: [newFile] } });
151
- await waitFor(() => {
152
- expect(callbackFile).toHaveBeenCalledWith([
153
- { error: null, preview: null, file: file1 },
154
- { error: "Error message", preview: null, file: file2 },
155
- {
156
- error: undefined,
157
- file: newFile,
158
- preview: (
159
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
160
- <path fill="none" d="M0 0h24v24H0V0z" />
161
- <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z" />
162
- </svg>
163
- ),
164
- },
165
- ]);
166
- });
167
- });
168
-
169
- test("Callback called correctly when a file size does not comply minSize or maxSize", async () => {
170
- const newFile = new File(["newFile"], "newFile.pdf", { type: "pdf" });
171
- const callbackFile = jest.fn();
172
- const { getByLabelText } = render(
173
- <DxcFileInput
174
- label="File input label"
175
- helperText="File input helper text"
176
- minSize={1000}
177
- maxSize={20000}
178
- value={files}
179
- callbackFile={callbackFile}
180
- />
181
- );
182
- const inputFile = getByLabelText("File input label", { hidden: true });
183
- fireEvent.change(inputFile, { target: { files: [newFile] } });
184
- await waitFor(() => {
185
- expect(callbackFile).toHaveBeenCalledWith([
186
- { error: null, preview: null, file: file1 },
187
- { error: "Error message", preview: null, file: file2 },
188
- {
189
- error: "File size must be greater than min size.",
190
- file: newFile,
191
- preview: (
192
- <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
193
- <path fill="none" d="M0 0h24v24H0V0z" />
194
- <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zM6 20V4h7v5h5v11H6z" />
195
- </svg>
196
- ),
197
- },
198
- ]);
199
- });
200
- });
201
- });
@@ -1,99 +0,0 @@
1
- import React from "react";
2
- import { render } from "@testing-library/react";
3
- import DxcFooter from "../src/footer/Footer";
4
- import icon from "../../app/src/images/linkedin.svg";
5
-
6
- describe("Footer component tests", () => {
7
- test("Footer renders with default logo", () => {
8
- const { getByRole } = render(<DxcFooter></DxcFooter>);
9
- expect(getByRole("img")).toBeTruthy();
10
- });
11
-
12
- test("Footer renders with logo", () => {
13
- const { getByRole } = render(<DxcFooter logoSrc={icon}></DxcFooter>);
14
- expect(getByRole("img")).toBeTruthy();
15
- });
16
-
17
- test("Footer renders with social links", () => {
18
- const social = [
19
- {
20
- href: "https://www.test.com/test",
21
- logoSrc: icon,
22
- },
23
- ];
24
- const { getByRole } = render(<DxcFooter socialLinks={social}></DxcFooter>);
25
- const socialIcon = getByRole("link");
26
- expect(socialIcon.getAttribute("href")).toBe("https://www.test.com/test");
27
- });
28
-
29
- test("Footer renders with bottom links", () => {
30
- const bottom = [
31
- {
32
- href: "https://www.test.com/test",
33
- text: "bottom-link-text",
34
- },
35
- ];
36
- const { getByText } = render(<DxcFooter bottomLinks={bottom}></DxcFooter>);
37
- const link = getByText("bottom-link-text");
38
- expect(link.getAttribute("href")).toBe("https://www.test.com/test");
39
- });
40
-
41
- test("Footer renders with copyright text", () => {
42
- const { getByText } = render(<DxcFooter copyright="test-copyright"></DxcFooter>);
43
- expect(getByText("test-copyright")).toBeTruthy();
44
- });
45
-
46
- test("Footer renders with correct children", () => {
47
- //We need to force the offsetWidth value
48
- Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 1024 });
49
-
50
- const { getByText } = render(
51
- <DxcFooter>
52
- <p>footer-child-text</p>
53
- </DxcFooter>
54
- );
55
-
56
- expect(getByText("footer-child-text")).toBeTruthy();
57
- });
58
-
59
- test("Footer renders without children in mobile", () => {
60
- //425 is mobile width
61
- Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 425 });
62
-
63
- const { queryByText } = render(
64
- <DxcFooter>
65
- <p>footer-child-text</p>
66
- </DxcFooter>
67
- );
68
-
69
- expect(queryByText("footer-child-text")).toBeFalsy();
70
- });
71
-
72
- test("Footer is fully rendered", () => {
73
- Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 1024 });
74
-
75
- const social = [
76
- {
77
- href: "https://www.test.com/social",
78
- logoSrc: icon,
79
- },
80
- ];
81
- const bottom = [
82
- {
83
- href: "https://www.test.com/bottom",
84
- text: "bottom-link-text",
85
- },
86
- ];
87
- const { getAllByRole, getByText } = render(
88
- <DxcFooter socialLinks={social} bottomLinks={bottom} copyright="test-copyright">
89
- <p>footer-child-text</p>
90
- </DxcFooter>
91
- );
92
- const socialIcon = getAllByRole("link")[0];
93
- expect(socialIcon.getAttribute("href")).toBe("https://www.test.com/social");
94
- const bottomLink = getByText("bottom-link-text");
95
- expect(bottomLink.getAttribute("href")).toBe("https://www.test.com/bottom");
96
- expect(getByText("test-copyright")).toBeTruthy();
97
- expect(getByText("footer-child-text")).toBeTruthy();
98
- });
99
- });
@@ -1,39 +0,0 @@
1
- import React from "react";
2
- import { render, fireEvent } from "@testing-library/react";
3
- import DxcHeader from "../src/header/Header";
4
- import icon from "../../app/src/images/linkedin.svg";
5
-
6
- describe("Header component tests", () => {
7
- test("Header renders with default logo", () => {
8
- const { getByRole } = render(<DxcHeader></DxcHeader>);
9
- expect(getByRole("img")).toBeTruthy();
10
- });
11
-
12
- test("Header renders with logo", () => {
13
- const { getByRole } = render(<DxcHeader logoSrc={icon}></DxcHeader>);
14
- expect(getByRole("img")).toBeTruthy();
15
- });
16
-
17
- test("Call correct function on logo click", () => {
18
- const onClick = jest.fn();
19
- const { getByRole } = render(<DxcHeader onClick={onClick}></DxcHeader>);
20
- const logo = getByRole("img");
21
- fireEvent.click(logo);
22
- expect(onClick).toHaveBeenCalled();
23
- });
24
-
25
- test("Header renders with correct children", () => {
26
- //We need to force the offsetWidth value
27
- Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 1024 });
28
-
29
- const { getByText } = render(<DxcHeader content={<p>header-child-text</p>}></DxcHeader>);
30
- expect(getByText("header-child-text")).toBeTruthy();
31
- });
32
-
33
- test("Header renders menu button in mobile", () => {
34
- Object.defineProperty(HTMLElement.prototype, "offsetWidth", { configurable: true, value: 425 });
35
-
36
- const { getByText } = render(<DxcHeader responsiveContent={(closeMenu) => <p>header-child-text</p>}></DxcHeader>);
37
- expect(getByText("Menu")).toBeTruthy();
38
- });
39
- });
@@ -1,35 +0,0 @@
1
- import React from "react";
2
- import { render } from "@testing-library/react";
3
- import DxcHeading from "../src/heading/Heading";
4
-
5
- describe("Heading component tests", () => {
6
- test("Footer renders with default level", () => {
7
- const { getByText } = render(<DxcHeading text="my-heading-test"></DxcHeading>);
8
- expect(getByText("my-heading-test")).toBeTruthy();
9
- });
10
-
11
- test("Footer renders with level 1", () => {
12
- const { getByText } = render(<DxcHeading text="my-heading-test" level={1}></DxcHeading>);
13
- expect(getByText("my-heading-test")).toBeTruthy();
14
- });
15
-
16
- test("Footer renders with level 2", () => {
17
- const { getByText } = render(<DxcHeading text="my-heading-test" level={2}></DxcHeading>);
18
- expect(getByText("my-heading-test")).toBeTruthy();
19
- });
20
-
21
- test("Footer renders with level 3", () => {
22
- const { getByText } = render(<DxcHeading text="my-heading-test" level={3}></DxcHeading>);
23
- expect(getByText("my-heading-test")).toBeTruthy();
24
- });
25
-
26
- test("Footer renders with level 4", () => {
27
- const { getByText } = render(<DxcHeading text="my-heading-test" level={4}></DxcHeading>);
28
- expect(getByText("my-heading-test")).toBeTruthy();
29
- });
30
-
31
- test("Footer renders with level 5", () => {
32
- const { getByText } = render(<DxcHeading text="my-heading-test" level={5}></DxcHeading>);
33
- expect(getByText("my-heading-test")).toBeTruthy();
34
- });
35
- });