@truedat/df 7.5.7 → 7.5.10

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 (212) hide show
  1. package/package.json +43 -67
  2. package/src/components/DynamicFieldValue.js +0 -1
  3. package/src/components/DynamicForm.js +5 -4
  4. package/src/components/DynamicFormViewer.js +0 -1
  5. package/src/components/DynamicFormWithTranslations.js +3 -3
  6. package/src/components/EditableDynamicFieldValue.js +1 -2
  7. package/src/components/FieldGroupDetail.js +0 -1
  8. package/src/components/FieldGroupSegment.js +17 -29
  9. package/src/components/FieldGroupWithTranslations.js +19 -38
  10. package/src/components/FieldViewerValue.js +4 -7
  11. package/src/components/OriginLabel.js +0 -1
  12. package/src/components/SelectDynamicFormWithTranslations.js +4 -6
  13. package/src/components/SelectableDynamicForm.js +5 -11
  14. package/src/components/__tests__/DynamicFieldValue.spec.js +0 -1
  15. package/src/components/__tests__/DynamicForm.spec.js +25 -23
  16. package/src/components/__tests__/EditableDynamicFieldValue.spec.js +0 -1
  17. package/src/components/__tests__/FieldGroupDetail.spec.js +0 -1
  18. package/src/components/__tests__/FieldViewerValue.spec.js +1 -6
  19. package/src/components/__tests__/SelectableDynamicForm.spec.js +102 -46
  20. package/src/components/__tests__/__snapshots__/DynamicFieldValue.spec.js.snap +2 -2
  21. package/src/components/__tests__/__snapshots__/DynamicForm.spec.js.snap +94 -81
  22. package/src/components/__tests__/__snapshots__/FieldGroupDetail.spec.js.snap +2 -2
  23. package/src/components/__tests__/__snapshots__/FieldViewerValue.spec.js.snap +1 -7
  24. package/src/components/__tests__/__snapshots__/SelectableDynamicForm.spec.js.snap +39 -39
  25. package/src/components/hierarchies/Hierarchies.js +2 -4
  26. package/src/components/hierarchies/HierarchiesView.js +1 -2
  27. package/src/components/hierarchies/HierarchyCrumbs.js +1 -2
  28. package/src/components/hierarchies/HierarchyRoutes.js +44 -39
  29. package/src/components/hierarchies/HierarchyView.js +4 -7
  30. package/src/components/hierarchies/__tests__/Hierarchies.spec.js +2 -3
  31. package/src/components/hierarchies/__tests__/HierarchiesView.spec.js +3 -7
  32. package/src/components/hierarchies/__tests__/HierarchyCrumbs.spec.js +0 -1
  33. package/src/components/hierarchies/__tests__/HierarchyRoutes.spec.js +79 -0
  34. package/src/components/hierarchies/__tests__/HierarchyView.spec.js +2 -10
  35. package/src/components/hierarchies/__tests__/__snapshots__/Hierarchies.spec.js.snap +1 -0
  36. package/src/components/hierarchies/__tests__/__snapshots__/HierarchiesView.spec.js.snap +7 -5
  37. package/src/components/hierarchies/__tests__/__snapshots__/HierarchyCrumbs.spec.js.snap +4 -2
  38. package/src/components/hierarchies/__tests__/__snapshots__/HierarchyRoutes.spec.js.snap +60 -0
  39. package/src/components/hierarchies/__tests__/__snapshots__/HierarchyView.spec.js.snap +8 -6
  40. package/src/components/widgets/CheckboxField.js +0 -1
  41. package/src/components/widgets/ColorPickerField.js +2 -3
  42. package/src/components/widgets/DateField.js +0 -1
  43. package/src/components/widgets/DateTimeField.js +0 -1
  44. package/src/components/widgets/DomainDropdown.js +1 -1
  45. package/src/components/widgets/DomainPreview.js +1 -2
  46. package/src/components/widgets/DropdownDataLoader.js +3 -3
  47. package/src/components/widgets/DropdownField.js +5 -4
  48. package/src/components/widgets/DynamicField.js +0 -5
  49. package/src/components/widgets/EnrichedTextField.js +0 -1
  50. package/src/components/widgets/HierarchyDropdown.js +1 -1
  51. package/src/components/widgets/HierarchyPreview.js +0 -1
  52. package/src/components/widgets/IdentifierField.js +0 -1
  53. package/src/components/widgets/ImageField.js +1 -1
  54. package/src/components/widgets/ImagePreview.js +0 -1
  55. package/src/components/widgets/NumberField.js +6 -7
  56. package/src/components/widgets/PairListField.js +5 -6
  57. package/src/components/widgets/PasswordField.js +1 -2
  58. package/src/components/widgets/RadioField.js +0 -1
  59. package/src/components/widgets/StandardDropdown.js +0 -1
  60. package/src/components/widgets/StringField.js +0 -1
  61. package/src/components/widgets/SystemPreview.js +2 -3
  62. package/src/components/widgets/TableField.js +5 -5
  63. package/src/components/widgets/TextField.js +1 -2
  64. package/src/components/widgets/__tests__/CheckboxField.spec.js +33 -23
  65. package/src/components/widgets/__tests__/ColorPickerField.spec.js +5 -12
  66. package/src/components/widgets/__tests__/DateField.spec.js +5 -5
  67. package/src/components/widgets/__tests__/DateTimeField.spec.js +5 -5
  68. package/src/components/widgets/__tests__/DomainPreview.spec.js +12 -14
  69. package/src/components/widgets/__tests__/DropdownDataLoader.spec.js +5 -5
  70. package/src/components/widgets/__tests__/DropdownField.spec.js +18 -29
  71. package/src/components/widgets/__tests__/DynamicField.spec.js +0 -1
  72. package/src/components/widgets/__tests__/HierarchyDropdown.spec.js +4 -5
  73. package/src/components/widgets/__tests__/HierarchyPreview.spec.js +0 -1
  74. package/src/components/widgets/__tests__/ImageField.spec.js +5 -10
  75. package/src/components/widgets/__tests__/NumberField.spec.js +23 -5
  76. package/src/components/widgets/__tests__/PairListField.spec.js +69 -59
  77. package/src/components/widgets/__tests__/PasswordField.spec.js +3 -4
  78. package/src/components/widgets/__tests__/RadioField.spec.js +5 -5
  79. package/src/components/widgets/__tests__/StandardDropdown.spec.js +45 -46
  80. package/src/components/widgets/__tests__/StringField.spec.js +10 -13
  81. package/src/components/widgets/__tests__/SystemPreview.spec.js +13 -15
  82. package/src/components/widgets/__tests__/TableField.spec.js +32 -32
  83. package/src/components/widgets/__tests__/TextField.spec.js +5 -5
  84. package/src/components/widgets/__tests__/__snapshots__/CheckboxField.spec.js.snap +58 -29
  85. package/src/components/widgets/__tests__/__snapshots__/ColorPickerField.spec.js.snap +221 -36
  86. package/src/components/widgets/__tests__/__snapshots__/DateField.spec.js.snap +21 -16
  87. package/src/components/widgets/__tests__/__snapshots__/DateTimeField.spec.js.snap +21 -20
  88. package/src/components/widgets/__tests__/__snapshots__/DomainPreview.spec.js.snap +26 -21
  89. package/src/components/widgets/__tests__/__snapshots__/DropdownDataLoader.spec.js.snap +1 -1
  90. package/src/components/widgets/__tests__/__snapshots__/DropdownField.spec.js.snap +93 -43
  91. package/src/components/widgets/__tests__/__snapshots__/DynamicField.spec.js.snap +2 -14
  92. package/src/components/widgets/__tests__/__snapshots__/ImageField.spec.js.snap +16 -28
  93. package/src/components/widgets/__tests__/__snapshots__/NumberField.spec.js.snap +11 -9
  94. package/src/components/widgets/__tests__/__snapshots__/PairListField.spec.js.snap +53 -39
  95. package/src/components/widgets/__tests__/__snapshots__/PasswordField.spec.js.snap +15 -8
  96. package/src/components/widgets/__tests__/__snapshots__/RadioField.spec.js.snap +41 -22
  97. package/src/components/widgets/__tests__/__snapshots__/StandardDropdown.spec.js.snap +78 -31
  98. package/src/components/widgets/__tests__/__snapshots__/StringField.spec.js.snap +78 -38
  99. package/src/components/widgets/__tests__/__snapshots__/SystemPreview.spec.js.snap +24 -21
  100. package/src/components/widgets/__tests__/__snapshots__/TableField.spec.js.snap +138 -174
  101. package/src/components/widgets/__tests__/__snapshots__/TextField.spec.js.snap +12 -7
  102. package/src/reducers/__tests__/dfMessage.spec.js +14 -18
  103. package/src/reducers/dfMessage.js +8 -7
  104. package/src/selectors/index.js +0 -1
  105. package/src/templates/components/NewTemplate.js +0 -1
  106. package/src/templates/components/Template.js +0 -2
  107. package/src/templates/components/TemplateCard.js +3 -4
  108. package/src/templates/components/TemplateCrumbs.js +2 -3
  109. package/src/templates/components/TemplateFilters.js +0 -1
  110. package/src/templates/components/TemplateLoader.js +25 -101
  111. package/src/templates/components/TemplateRoutes.js +29 -45
  112. package/src/templates/components/Templates.js +1 -5
  113. package/src/templates/components/TemplatesContext.js +3 -7
  114. package/src/templates/components/TemplatesTable.js +1 -2
  115. package/src/templates/components/__tests__/NewTemplate.spec.js +5 -10
  116. package/src/templates/components/__tests__/Template.spec.js +0 -1
  117. package/src/templates/components/__tests__/TemplateLoader.spec.js +71 -109
  118. package/src/templates/components/__tests__/TemplateRoutes.spec.js +63 -0
  119. package/src/templates/components/__tests__/TemplatesTable.spec.js +15 -9
  120. package/src/templates/components/__tests__/__snapshots__/NewTemplate.spec.js.snap +335 -22
  121. package/src/templates/components/__tests__/__snapshots__/Template.spec.js.snap +49 -48
  122. package/src/templates/components/__tests__/__snapshots__/TemplateLoader.spec.js.snap +7 -1
  123. package/src/templates/components/__tests__/__snapshots__/TemplateRoutes.spec.js.snap +38 -0
  124. package/src/templates/components/__tests__/__snapshots__/TemplatesTable.spec.js.snap +94 -1
  125. package/src/templates/components/index.js +1 -2
  126. package/src/templates/components/templateForm/ActiveGroupForm.js +1 -4
  127. package/src/templates/components/templateForm/ConditionalFieldForm.js +0 -1
  128. package/src/templates/components/templateForm/DefaultValue.js +0 -1
  129. package/src/templates/components/templateForm/DependentDomain.js +0 -1
  130. package/src/templates/components/templateForm/DependentFormField.js +0 -1
  131. package/src/templates/components/templateForm/FieldForm.js +5 -5
  132. package/src/templates/components/templateForm/GroupsList.js +0 -1
  133. package/src/templates/components/templateForm/HierarchiesList.js +1 -2
  134. package/src/templates/components/templateForm/MandatoryConditional.js +0 -1
  135. package/src/templates/components/templateForm/SwitchListForm.js +2 -2
  136. package/src/templates/components/templateForm/SwitchSegment.js +0 -1
  137. package/src/templates/components/templateForm/TemplateForm.js +1 -1
  138. package/src/templates/components/templateForm/TemplateFormActions.js +3 -4
  139. package/src/templates/components/templateForm/ValuesField.js +1 -3
  140. package/src/templates/components/templateForm/ValuesListForm.js +3 -3
  141. package/src/templates/components/templateForm/ValuesSelector.js +0 -1
  142. package/src/templates/components/templateForm/__tests__/ActiveGroupForm.spec.js +8 -13
  143. package/src/templates/components/templateForm/__tests__/DefaultValue.spec.js +198 -113
  144. package/src/templates/components/templateForm/__tests__/DependentDomain.spec.js +0 -1
  145. package/src/templates/components/templateForm/__tests__/DependentFormField.spec.js +0 -1
  146. package/src/templates/components/templateForm/__tests__/FieldForm.spec.js +106 -72
  147. package/src/templates/components/templateForm/__tests__/GroupsList.spec.js +7 -12
  148. package/src/templates/components/templateForm/__tests__/MandatoryConditional.spec.js +0 -1
  149. package/src/templates/components/templateForm/__tests__/SwitchListForm.spec.js +71 -50
  150. package/src/templates/components/templateForm/__tests__/SwitchSegment.spec.js +37 -62
  151. package/src/templates/components/templateForm/__tests__/TemplateForm.spec.js +0 -1
  152. package/src/templates/components/templateForm/__tests__/TemplateFormActions.spec.js +19 -15
  153. package/src/templates/components/templateForm/__tests__/ValuesField.spec.js +84 -62
  154. package/src/templates/components/templateForm/__tests__/ValuesListForm.spec.js +108 -144
  155. package/src/templates/components/templateForm/__tests__/ValuesSelector.spec.js +36 -36
  156. package/src/templates/components/templateForm/__tests__/__snapshots__/ActiveGroupForm.spec.js.snap +654 -86
  157. package/src/templates/components/templateForm/__tests__/__snapshots__/DefaultValue.spec.js.snap +45 -23
  158. package/src/templates/components/templateForm/__tests__/__snapshots__/FieldForm.spec.js.snap +1700 -1025
  159. package/src/templates/components/templateForm/__tests__/__snapshots__/GroupsList.spec.js.snap +44 -39
  160. package/src/templates/components/templateForm/__tests__/__snapshots__/SwitchListForm.spec.js.snap +225 -60
  161. package/src/templates/components/templateForm/__tests__/__snapshots__/SwitchSegment.spec.js.snap +1 -1
  162. package/src/templates/components/templateForm/__tests__/__snapshots__/TemplateForm.spec.js.snap +89 -92
  163. package/src/templates/components/templateForm/__tests__/__snapshots__/TemplateFormActions.spec.js.snap +66 -100
  164. package/src/templates/components/templateForm/__tests__/__snapshots__/ValuesField.spec.js.snap +542 -231
  165. package/src/templates/components/templateForm/__tests__/__snapshots__/ValuesListForm.spec.js.snap +264 -268
  166. package/src/templates/components/templateForm/__tests__/__snapshots__/ValuesSelector.spec.js.snap +146 -11
  167. package/src/templates/reducers/__tests__/allTemplates.spec.js +1 -1
  168. package/src/templates/reducers/__tests__/template.spec.js +3 -2
  169. package/src/templates/reducers/__tests__/templateLoading.spec.js +2 -2
  170. package/src/templates/reducers/__tests__/templates.spec.js +1 -1
  171. package/src/templates/reducers/__tests__/templatesLoading.spec.js +1 -1
  172. package/src/templates/reducers/allTemplates.js +1 -2
  173. package/src/templates/reducers/template.js +2 -1
  174. package/src/templates/reducers/templates.js +1 -1
  175. package/src/templates/reducers/templatesLoading.js +1 -1
  176. package/src/templates/routines.js +0 -2
  177. package/src/templates/sagas/__tests__/deleteTemplate.spec.js +2 -2
  178. package/src/templates/sagas/__tests__/fetchTemplates.spec.js +3 -6
  179. package/src/templates/sagas/__tests__/updateTemplate.spec.js +4 -4
  180. package/src/templates/sagas/deleteTemplate.js +1 -1
  181. package/src/templates/sagas/fetchTemplate.js +1 -1
  182. package/src/templates/sagas/fetchTemplates.js +1 -1
  183. package/src/templates/sagas/updateTemplate.js +1 -1
  184. package/src/templates/utils/filterSwitches.js +2 -2
  185. package/src/templates/utils/filterValues.js +2 -2
  186. package/src/api/hierarchies.js +0 -4
  187. package/src/components/FieldGroupCopy.js +0 -108
  188. package/src/components/FieldGroupSubSegment/FieldGroupSubSegment.js +0 -181
  189. package/src/components/FieldGroupSubSegment/__tests__/FieldGroupSubSegment.spec.js +0 -221
  190. package/src/components/FieldGroupSubSegment/__tests__/__snapshots__/FieldGroupSubSegment.spec.js.snap +0 -230
  191. package/src/components/FieldGroupSubSegment/constants.js +0 -68
  192. package/src/components/FieldGroupSubSegment/copyValidations.js +0 -75
  193. package/src/components/FieldGroupSubSegment/handleCopyModule.js +0 -186
  194. package/src/components/__tests__/FieldGroupCopy.spec.js +0 -14
  195. package/src/components/__tests__/__snapshots__/FieldGroupCopy.spec.js.snap +0 -307
  196. package/src/components/widgets/CopyField/CopyField.js +0 -270
  197. package/src/components/widgets/CopyField/CopyFieldCell.js +0 -138
  198. package/src/components/widgets/CopyField/CopyFieldColumn.js +0 -53
  199. package/src/components/widgets/CopyField/CopyFieldSelectableCell.js +0 -71
  200. package/src/components/widgets/CopyField/CustomStyles.js +0 -91
  201. package/src/components/widgets/CopyField/__tests__/CopyField.spec.js +0 -82
  202. package/src/components/widgets/CopyField/__tests__/CopyFieldCell.spec.js +0 -67
  203. package/src/components/widgets/CopyField/__tests__/CopyFieldColumn.spec.js +0 -33
  204. package/src/components/widgets/CopyField/__tests__/CopyFieldSelectableCell.spec.js +0 -49
  205. package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyField.spec.js.snap +0 -279
  206. package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyFieldCell.spec.js.snap +0 -67
  207. package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyFieldColumn.spec.js.snap +0 -42
  208. package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyFieldSelectableCell.spec.js.snap +0 -60
  209. package/src/hooks/useHierarchies.js +0 -112
  210. package/src/selectors/subscopedTemplates.js +0 -16
  211. package/src/templates/components/TemplatesLoader.js +0 -24
  212. package/src/templates/components/__tests__/TemplatesLoader.spec.js +0 -29
@@ -1,6 +1,5 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
3
- import { TemplateFormActions } from "../TemplateFormActions";
1
+ import { render, waitForLoad } from "@truedat/test/render";
2
+ import TemplateFormActions from "../TemplateFormActions";
4
3
 
5
4
  describe("<TemplateFormActions />", () => {
6
5
  const onSave = jest.fn();
@@ -11,6 +10,7 @@ describe("<TemplateFormActions />", () => {
11
10
  const templateSaving = false;
12
11
  const templateDeleting = false;
13
12
  const isInvalid = false;
13
+
14
14
  const props = {
15
15
  template,
16
16
  templateSaving,
@@ -19,25 +19,29 @@ describe("<TemplateFormActions />", () => {
19
19
  isInvalid,
20
20
  };
21
21
 
22
- it("matches the latest snapshot", () => {
23
- const wrapper = shallow(<TemplateFormActions {...props} />);
24
- expect(wrapper).toMatchSnapshot();
22
+ it("matches the latest snapshot", async () => {
23
+ const rendered = render(<TemplateFormActions {...props} />);
24
+ await waitForLoad(rendered);
25
+ expect(rendered.container).toMatchSnapshot();
25
26
  });
26
27
 
27
- it("matches the latest snapshot (saving)", () => {
28
- const wrapper = shallow(<TemplateFormActions {...props} templateSaving />);
29
- expect(wrapper).toMatchSnapshot();
28
+ it("matches the latest snapshot (saving)", async () => {
29
+ const rendered = render(<TemplateFormActions {...props} templateSaving />);
30
+ await waitForLoad(rendered);
31
+ expect(rendered.container).toMatchSnapshot();
30
32
  });
31
33
 
32
- it("matches the latest snapshot (deleting)", () => {
33
- const wrapper = shallow(
34
+ it("matches the latest snapshot (deleting)", async () => {
35
+ const rendered = render(
34
36
  <TemplateFormActions {...props} templateDeleting />
35
37
  );
36
- expect(wrapper).toMatchSnapshot();
38
+ await waitForLoad(rendered);
39
+ expect(rendered.container).toMatchSnapshot();
37
40
  });
38
41
 
39
- it("matches the latest snapshot (invalid)", () => {
40
- const wrapper = shallow(<TemplateFormActions {...props} isInvalid />);
41
- expect(wrapper).toMatchSnapshot();
42
+ it("matches the latest snapshot (invalid)", async () => {
43
+ const rendered = render(<TemplateFormActions {...props} isInvalid />);
44
+ await waitForLoad(rendered);
45
+ expect(rendered.container).toMatchSnapshot();
42
46
  });
43
47
  });
@@ -1,14 +1,9 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
3
- import { intl } from "@truedat/test/intl-stub";
4
- import { ValuesField } from "../ValuesField";
5
-
6
- // workaround for enzyme issue with React.useContext
7
- // see https://github.com/airbnb/enzyme/issues/2176#issuecomment-532361526
8
- jest.spyOn(React, "useContext").mockImplementation(() => intl);
1
+ import userEvent from "@testing-library/user-event";
2
+ import { render, waitForLoad } from "@truedat/test/render";
3
+ import ValuesField from "../ValuesField";
9
4
 
10
5
  describe("<ValuesField /> noPrefix", () => {
11
- it("matches the latest snapshot for null values", () => {
6
+ it("matches the latest snapshot for null values", async () => {
12
7
  const values = null;
13
8
  const name = "name.values";
14
9
  const onChange = jest.fn();
@@ -19,11 +14,12 @@ describe("<ValuesField /> noPrefix", () => {
19
14
  onSelectionChange,
20
15
  onChange,
21
16
  };
22
- const wrapper = shallow(<ValuesField {...props} />);
23
- expect(wrapper).toMatchSnapshot();
17
+ const rendered = render(<ValuesField {...props} />);
18
+ await waitForLoad(rendered);
19
+ expect(rendered.container).toMatchSnapshot();
24
20
  });
25
21
 
26
- it("test values dropdown", () => {
22
+ it("test values dropdown", async () => {
27
23
  const values = null;
28
24
  const name = "name.values";
29
25
  const onSelectionChange = jest.fn();
@@ -42,14 +38,22 @@ describe("<ValuesField /> noPrefix", () => {
42
38
  { id: "template.field.values.switch", value: "switch" },
43
39
  ],
44
40
  };
45
- const wrapper = shallow(<ValuesField {...props} />);
46
- wrapper.find("FormDropdown").simulate("change", null, { value: "fixed" });
47
- expect(onSelectionChange).toBeCalledWith(null, { value: "fixed" });
41
+ const rendered = render(<ValuesField {...props} />);
42
+ await waitForLoad(rendered);
43
+
44
+ const user = userEvent.setup({ delay: null });
45
+ await user.click(
46
+ await rendered.findByRole("option", {
47
+ name: "template.field.values.switch",
48
+ })
49
+ );
50
+
51
+ expect(onSelectionChange).toHaveBeenCalled();
48
52
  });
49
53
  });
50
54
 
51
55
  describe("<ValuesField /> fixed", () => {
52
- it("matches the latest snapshot for null values", () => {
56
+ it("matches the latest snapshot for null values", async () => {
53
57
  const values = { fixed: ["Foo", "Bar"] };
54
58
  const name = "name.values";
55
59
  const onSelectionChange = jest.fn();
@@ -59,11 +63,12 @@ describe("<ValuesField /> fixed", () => {
59
63
  onChange: jest.fn(),
60
64
  onSelectionChange,
61
65
  };
62
- const wrapper = shallow(<ValuesField {...props} />);
63
- expect(wrapper).toMatchSnapshot();
66
+ const rendered = render(<ValuesField {...props} />);
67
+ await waitForLoad(rendered);
68
+ expect(rendered.container).toMatchSnapshot();
64
69
  });
65
70
 
66
- it("test values dropdown changes to given value", () => {
71
+ it("test values dropdown changes to given value", async () => {
67
72
  const values = { fixed: ["Foo", "Bar"] };
68
73
  const onSelectionChange = jest.fn();
69
74
  const props = {
@@ -80,20 +85,21 @@ describe("<ValuesField /> fixed", () => {
80
85
  { id: "template.field.values.switch", value: "switch" },
81
86
  ],
82
87
  };
83
- const wrapper = shallow(<ValuesField {...props} />);
88
+ const rendered = render(<ValuesField {...props} />);
89
+ await waitForLoad(rendered);
84
90
 
85
- wrapper
86
- .find("FormDropdown")
87
- .at(0)
88
- .simulate("change", null, { value: "fixed_tuple" });
91
+ const user = userEvent.setup({ delay: null });
92
+ const dropdown = rendered.container.querySelector(".dropdown");
93
+ await user.click(dropdown);
94
+ await user.click(await rendered.findByText(/fixed_tuple/i));
89
95
 
90
- expect(onSelectionChange).toBeCalledWith(null, { value: "fixed_tuple" });
96
+ expect(onSelectionChange).toHaveBeenCalled();
91
97
  });
92
98
 
93
- it("renders subscribable checkbox", () => {
99
+ it("renders subscribable checkbox", async () => {
94
100
  const values = { fixed: ["Foo", "Bar"] };
95
101
  const onChange = jest.fn();
96
- const subscribableField = "foo";
102
+ const subscribableField = "subscribableField";
97
103
  const props = {
98
104
  field: { values, subscribable: false },
99
105
  onChange,
@@ -108,24 +114,35 @@ describe("<ValuesField /> fixed", () => {
108
114
  { id: "template.field.values.switch", value: "switch" },
109
115
  ],
110
116
  };
111
- const wrapper = shallow(<ValuesField {...props} />);
112
- expect(wrapper.find({ name: subscribableField })).toBeDefined();
113
- wrapper.find({ name: subscribableField }).simulate("change", null, {
114
- name: subscribableField,
115
- checked: true,
116
- });
117
- expect(onChange).toBeCalledWith(null, {
117
+ const rendered = render(<ValuesField {...props} />);
118
+ await waitForLoad(rendered);
119
+
120
+ const user = userEvent.setup({ delay: null });
121
+ const checkbox = rendered.container.querySelector(
122
+ `[name="${subscribableField}"]`
123
+ );
124
+ expect(checkbox).toBeInTheDocument();
125
+ await user.click(checkbox);
126
+
127
+ expect(onChange).toHaveBeenCalledWith(null, {
118
128
  name: subscribableField,
119
129
  value: true,
120
130
  });
121
131
 
122
- wrapper.setProps({ ...props, keyType: "fixed_tuple" });
123
- expect(wrapper.find({ name: subscribableField })).toBeDefined();
124
- wrapper.find({ name: subscribableField }).simulate("change", null, {
125
- name: subscribableField,
126
- checked: true,
132
+ // Test with fixed_tuple keyType
133
+ const renderedWithFixedTuple = render({
134
+ ...props,
135
+ keyType: "fixed_tuple",
127
136
  });
128
- expect(onChange).toBeCalledWith(null, {
137
+ await waitForLoad(renderedWithFixedTuple);
138
+
139
+ const checkboxFixedTuple = renderedWithFixedTuple.getByText(
140
+ "template.field.subscribable"
141
+ );
142
+ expect(checkboxFixedTuple).toBeInTheDocument();
143
+ await user.click(checkboxFixedTuple);
144
+
145
+ expect(onChange).toHaveBeenCalledWith(null, {
129
146
  name: subscribableField,
130
147
  value: true,
131
148
  });
@@ -133,7 +150,7 @@ describe("<ValuesField /> fixed", () => {
133
150
  });
134
151
 
135
152
  describe("<ValuesField /> fixed_tuple", () => {
136
- it("matches the latest snapshot for null values", () => {
153
+ it("matches the latest snapshot for null values", async () => {
137
154
  const values = { fixed_tuple: [{ value: "Foo", text: "Bar" }] };
138
155
  const name = "name.values";
139
156
  const onChange = jest.fn();
@@ -145,13 +162,14 @@ describe("<ValuesField /> fixed_tuple", () => {
145
162
  onSelectionChange,
146
163
  keyType: "fixed_tuple",
147
164
  };
148
- const wrapper = shallow(<ValuesField {...props} />);
149
- expect(wrapper).toMatchSnapshot();
165
+ const rendered = render(<ValuesField {...props} />);
166
+ await waitForLoad(rendered);
167
+ expect(rendered.container).toMatchSnapshot();
150
168
  });
151
169
  });
152
170
 
153
171
  describe("<ValuesField /> switch", () => {
154
- it("matches the latest snapshot for null values", () => {
172
+ it("matches the latest snapshot for null values", async () => {
155
173
  const values = {
156
174
  switch: {
157
175
  on: "test",
@@ -170,13 +188,14 @@ describe("<ValuesField /> switch", () => {
170
188
  onChange: jest.fn(),
171
189
  onSelectionChange,
172
190
  };
173
- const wrapper = shallow(<ValuesField {...props} />);
174
- expect(wrapper).toMatchSnapshot();
191
+ const rendered = render(<ValuesField {...props} />);
192
+ await waitForLoad(rendered);
193
+ expect(rendered.container).toMatchSnapshot();
175
194
  });
176
195
  });
177
196
 
178
197
  describe("<ValuesField /> role_users", () => {
179
- it("matches the latest snapshot for not null values", () => {
198
+ it("matches the latest snapshot for not null values", async () => {
180
199
  const values = { role_users: "test_role" };
181
200
  const name = "name.values";
182
201
  const onSelectionChange = jest.fn();
@@ -186,11 +205,12 @@ describe("<ValuesField /> role_users", () => {
186
205
  onChange: jest.fn(),
187
206
  onSelectionChange,
188
207
  };
189
- const wrapper = shallow(<ValuesField {...props} />);
190
- expect(wrapper).toMatchSnapshot();
208
+ const rendered = render(<ValuesField {...props} />);
209
+ await waitForLoad(rendered);
210
+ expect(rendered.container).toMatchSnapshot();
191
211
  });
192
212
 
193
- it("test role input", () => {
213
+ it("test role input", async () => {
194
214
  const values = { processed_users: ["user1"], role_users: "test_role" };
195
215
  const name = "name.values";
196
216
  const onSelectionChange = jest.fn();
@@ -203,23 +223,24 @@ describe("<ValuesField /> role_users", () => {
203
223
  widget: "dropdown",
204
224
  fieldType: "user",
205
225
  keyType: "role_users",
226
+ fieldNamePrefix: "foo",
206
227
  };
207
- const wrapper = shallow(<ValuesField {...props} />);
208
- const input = wrapper
209
- .find("ValuesSelector")
210
- .first()
211
- .dive()
212
- .find("FormInput");
213
- input.simulate("change", null, { value: "another_role" });
214
- expect(onChange).toBeCalledWith(null, {
228
+ const rendered = render(<ValuesField {...props} />);
229
+ await waitForLoad(rendered);
230
+
231
+ const user = userEvent.setup({ delay: null });
232
+
233
+ await user.type(rendered.getByRole("textbox"), "1");
234
+
235
+ expect(onChange).toHaveBeenCalledWith(null, {
215
236
  name: "name.values",
216
- value: { role_users: "another_role" },
237
+ value: { role_users: "test_role1" },
217
238
  });
218
239
  });
219
240
  });
220
241
 
221
242
  describe("<ValuesField /> table_columns", () => {
222
- it("matches the latest snapshot", () => {
243
+ it("matches the latest snapshot", async () => {
223
244
  const values = {
224
245
  table_columns: [
225
246
  { mandatory: true, name: "field1" },
@@ -230,7 +251,8 @@ describe("<ValuesField /> table_columns", () => {
230
251
  field: { values },
231
252
  onChange: jest.fn(),
232
253
  };
233
- const wrapper = shallow(<ValuesField {...props} />);
234
- expect(wrapper).toMatchSnapshot();
254
+ const rendered = render(<ValuesField {...props} />);
255
+ await waitForLoad(rendered);
256
+ expect(rendered.container).toMatchSnapshot();
235
257
  });
236
258
  });
@@ -1,6 +1,7 @@
1
- import React from "react";
2
- import { shallowWithIntl } from "@truedat/test/intl-stub";
3
- import { ValuesListForm } from "../ValuesListForm";
1
+ import userEvent from "@testing-library/user-event";
2
+ import { within } from "@testing-library/react";
3
+ import { render, waitForLoad } from "@truedat/test/render";
4
+ import ValuesListForm from "../ValuesListForm";
4
5
 
5
6
  describe("<ValuesListForm /> fixed", () => {
6
7
  const values = ["Foo", "Bar"];
@@ -9,189 +10,152 @@ describe("<ValuesListForm /> fixed", () => {
9
10
  const props = {
10
11
  values,
11
12
  type,
12
- onChange
13
+ onChange,
13
14
  };
14
- it("matches the latest snapshot for fixed", () => {
15
- const wrapper = shallowWithIntl(<ValuesListForm {...props} />);
16
- expect(wrapper).toMatchSnapshot();
15
+ it("matches the latest snapshot for fixed", async () => {
16
+ const rendered = render(<ValuesListForm {...props} />);
17
+ await waitForLoad(rendered);
18
+ expect(rendered.container).toMatchSnapshot();
17
19
  });
18
20
 
19
- it("test list simple actions", () => {
20
- const wrapper = shallowWithIntl(<ValuesListForm {...props} />);
21
+ it("test list simple actions", async () => {
22
+ const rendered = render(<ValuesListForm {...props} />);
23
+ await waitForLoad(rendered);
24
+
25
+ const user = userEvent.setup({ delay: null });
26
+ const upButton =
27
+ rendered.container.querySelectorAll(".chevron.circle.up")[1];
28
+ await user.click(upButton);
29
+ expect(onChange).toHaveBeenCalledWith(["Bar", "Foo"]);
30
+
31
+ const downButton = rendered.container.querySelectorAll(
32
+ ".chevron.circle.down"
33
+ )[0];
34
+ await user.click(downButton);
35
+ expect(onChange).toHaveBeenCalledWith(["Foo", "Bar"]);
36
+
37
+ const removeButton = rendered.container.querySelectorAll(
38
+ ".remove.circle.icon"
39
+ )[0];
40
+ await user.click(removeButton);
41
+ expect(onChange).toHaveBeenCalledWith(["Bar"]);
42
+ });
21
43
 
22
- const fooItemList = wrapper.find("ListItem").at(0);
23
- fooItemList.find({ name: "chevron circle up" }).simulate("click");
24
- expect(onChange).toBeCalledWith(["Foo", "Bar"]);
44
+ it("test input for fixed", async () => {
45
+ const customProps = { ...props, onChange: jest.fn() };
46
+ const rendered = render(<ValuesListForm {...customProps} />);
47
+ await waitForLoad(rendered);
25
48
 
26
- fooItemList.find({ name: "chevron circle down" }).simulate("click");
27
- expect(onChange).toBeCalledWith(["Bar", "Foo"]);
49
+ const user = userEvent.setup({ delay: null });
50
+ const input = rendered.container.querySelector("input[name='fixed_value']");
51
+ await user.type(input, "Test");
28
52
 
29
- const barItemList = wrapper.find("ListItem").at(0);
30
- barItemList.find({ name: "remove circle" }).simulate("click");
31
- expect(onChange).toBeCalledWith(["Foo"]);
32
- });
53
+ // Verify it changes the component value
54
+ expect(input.value).toBe("Test");
55
+
56
+ // Simulate Enter pressed
57
+ await user.type(input, "{enter}");
58
+
59
+ // Verify value is added and input is cleaned
60
+ expect(customProps.onChange).toHaveBeenCalledWith(["Bar", "Test"]);
33
61
 
34
- it("test input for fixed", () => {
35
- const wrapper = shallowWithIntl(<ValuesListForm {...props} />);
36
-
37
- //Write "Test" to input
38
- wrapper.find("FormInput").simulate("change", null, {
39
- name: "fixed_value",
40
- value: "Test"
41
- });
42
- //Verify it changes de component value
43
- expect(wrapper.find("FormInput").props().value).toBe("Test");
44
- //Simulate Enter pressed
45
- wrapper.find("FormInput").simulate("keyPress", { key: "Enter" });
46
-
47
- //Verify value in added and input is cleaned
48
- expect(onChange).toBeCalledWith(["Foo", "Test"]);
49
- expect(wrapper.find("FormInput").props().value).toBe("");
50
-
51
- //Write "Test" again
52
- wrapper.find("FormInput").simulate("change", null, {
53
- name: "fixed_value",
54
- value: "Foo"
55
- });
56
- expect(wrapper.find("FormInput").props().error).toBe(true);
62
+ // Type existing value to test error state
63
+ await user.type(input, "Bar");
64
+ const errorInput = rendered.container.querySelector(".error input");
65
+ expect(errorInput).toBeInTheDocument();
57
66
  });
58
67
  });
59
68
 
60
69
  describe("<ValuesListForm /> fixed_tuple", () => {
61
70
  const values = [
62
71
  { value: "foo", text: "Foo" },
63
- { value: "bar", text: "Bar" }
72
+ { value: "bar", text: "Bar" },
64
73
  ];
65
74
  const type = "fixed_tuple";
66
75
  const onChange = jest.fn();
67
76
  const props = {
68
77
  values,
69
78
  type,
70
- onChange
79
+ onChange,
71
80
  };
72
- it("matches the latest snapshot for fixed_tuple", () => {
73
- const wrapper = shallowWithIntl(<ValuesListForm {...props} />);
74
- expect(wrapper).toMatchSnapshot();
81
+ it("matches the latest snapshot for fixed_tuple", async () => {
82
+ const rendered = render(<ValuesListForm {...props} />);
83
+ await waitForLoad(rendered);
84
+ expect(rendered.container).toMatchSnapshot();
75
85
  });
76
86
 
77
- it("test input for fixed_tuple", () => {
78
- const wrapper = shallowWithIntl(<ValuesListForm {...props} />);
79
-
80
- //Write "Test" to input
81
- wrapper
82
- .find("FormInput")
83
- .at(0)
84
- .simulate("change", null, {
85
- name: "tuple_value",
86
- value: "test"
87
- });
88
- wrapper
89
- .find("FormInput")
90
- .at(1)
91
- .simulate("change", null, {
92
- name: "tuple_text",
93
- value: "TestText"
94
- });
95
- //Verify it changes de component value
96
- expect(
97
- wrapper
98
- .find("FormInput")
99
- .at(0)
100
- .props().value
101
- ).toBe("test");
102
- expect(
103
- wrapper
104
- .find("FormInput")
105
- .at(1)
106
- .props().value
107
- ).toBe("TestText");
108
- //Simulate Enter pressed
109
- wrapper
110
- .find("FormInput")
111
- .at(1)
112
- .simulate("keyPress", { key: "Enter" });
113
-
114
- //Verify value in added and input is cleaned
115
- expect(onChange).toBeCalledWith([
87
+ it("test input for fixed_tuple", async () => {
88
+ const rendered = render(<ValuesListForm {...props} />);
89
+ await waitForLoad(rendered);
90
+
91
+ const user = userEvent.setup({ delay: null });
92
+ // Write "Test" to inputs
93
+ const valueInput = rendered.container.querySelector(
94
+ "input[name='tuple_value']"
95
+ );
96
+ const textInput = rendered.container.querySelector(
97
+ "input[name='tuple_text']"
98
+ );
99
+
100
+ await user.type(valueInput, "test");
101
+ await user.type(textInput, "TestText");
102
+
103
+ // Verify it changes the component value
104
+ expect(valueInput.value).toBe("test");
105
+ expect(textInput.value).toBe("TestText");
106
+
107
+ // Simulate Enter pressed
108
+ await user.type(textInput, "{enter}");
109
+
110
+ // Verify value is added and inputs are cleaned
111
+ expect(onChange).toHaveBeenCalledWith([
116
112
  { text: "Foo", value: "foo" },
117
113
  { text: "Bar", value: "bar" },
118
- { text: "TestText", value: "test" }
114
+ { text: "TestText", value: "test" },
119
115
  ]);
120
- expect(
121
- wrapper
122
- .find("FormInput")
123
- .at(0)
124
- .props().value
125
- ).toBe("");
126
- expect(
127
- wrapper
128
- .find("FormInput")
129
- .at(1)
130
- .props().value
131
- ).toBe("");
132
-
133
- //Write "Test" again
134
- wrapper
135
- .find("FormInput")
136
- .at(0)
137
- .simulate("change", null, {
138
- name: "tuple_value",
139
- value: "foo"
140
- });
141
- expect(
142
- wrapper
143
- .find("FormInput")
144
- .at(0)
145
- .props().error
146
- ).toBe(true);
116
+
117
+ // Type existing value to test error state
118
+ await user.type(valueInput, "foo");
119
+ const errorInput = rendered.container.querySelector(".error input");
120
+ expect(errorInput).toBeInTheDocument();
147
121
  });
148
122
  });
149
123
 
150
124
  describe("<ValuesListForm /> table_columns", () => {
151
125
  const values = [
152
126
  { mandatory: true, name: "field1" },
153
- { mandatory: false, name: "field2" }
127
+ { mandatory: false, name: "field2" },
154
128
  ];
155
129
  const type = "table_columns";
156
130
  const onChange = jest.fn();
157
131
  const props = {
158
132
  values,
159
133
  type,
160
- onChange
134
+ onChange,
161
135
  };
162
- it("matches the latest snapshot for table_columns", () => {
163
- const wrapper = shallowWithIntl(<ValuesListForm {...props} />);
164
- expect(wrapper).toMatchSnapshot();
136
+ it("matches the latest snapshot for table_columns", async () => {
137
+ const rendered = render(<ValuesListForm {...props} />);
138
+ await waitForLoad(rendered);
139
+ expect(rendered.container).toMatchSnapshot();
165
140
  });
166
141
 
167
- it("test form for table_columns", () => {
168
- const wrapper = shallowWithIntl(<ValuesListForm {...props} />);
169
- expect(
170
- wrapper
171
- .find("ListItem")
172
- .at(0)
173
- .find("ListContent")
174
- .props().children[0]
175
- ).toBe("field1");
176
- expect(
177
- wrapper
178
- .find("ListItem")
179
- .at(1)
180
- .find("ListContent")
181
- .props().children[0]
182
- ).toBe("field2");
183
-
184
- wrapper.find("FormInput").simulate("change", null, {
185
- name: "column_name",
186
- value: "este si"
187
- });
188
- expect(wrapper.find("FormInput").props().value).toBe("este si");
189
-
190
- wrapper.find("FormInput").simulate("keyPress", { key: "Enter" });
191
- expect(onChange).toBeCalledWith([
142
+ it("test form for table_columns", async () => {
143
+ const rendered = render(<ValuesListForm {...props} />);
144
+ await waitForLoad(rendered);
145
+
146
+ expect(rendered.getByText(/field1/i)).toBeInTheDocument();
147
+ expect(rendered.getByText(/field2/i)).toBeInTheDocument();
148
+
149
+ const user = userEvent.setup({ delay: null });
150
+ const input = rendered.container.querySelector("input[name='column_name']");
151
+ await user.type(input, "este si");
152
+ expect(input.value).toBe("este si");
153
+
154
+ await user.type(input, "{enter}");
155
+ expect(onChange).toHaveBeenCalledWith([
192
156
  { mandatory: true, name: "field1" },
193
157
  { mandatory: false, name: "field2" },
194
- { mandatory: false, name: "este si" }
158
+ { mandatory: false, name: "este si" },
195
159
  ]);
196
160
  });
197
161
  });