@truedat/df 7.5.9 → 7.5.11

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 (213) 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 +10 -3
  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/templateRedirect.js +1 -1
  175. package/src/templates/reducers/templates.js +1 -1
  176. package/src/templates/reducers/templatesLoading.js +1 -1
  177. package/src/templates/routines.js +0 -2
  178. package/src/templates/sagas/__tests__/deleteTemplate.spec.js +2 -2
  179. package/src/templates/sagas/__tests__/fetchTemplates.spec.js +3 -6
  180. package/src/templates/sagas/__tests__/updateTemplate.spec.js +4 -4
  181. package/src/templates/sagas/deleteTemplate.js +1 -1
  182. package/src/templates/sagas/fetchTemplate.js +1 -1
  183. package/src/templates/sagas/fetchTemplates.js +1 -1
  184. package/src/templates/sagas/updateTemplate.js +1 -1
  185. package/src/templates/utils/filterSwitches.js +2 -2
  186. package/src/templates/utils/filterValues.js +2 -2
  187. package/src/api/hierarchies.js +0 -4
  188. package/src/components/FieldGroupCopy.js +0 -108
  189. package/src/components/FieldGroupSubSegment/FieldGroupSubSegment.js +0 -181
  190. package/src/components/FieldGroupSubSegment/__tests__/FieldGroupSubSegment.spec.js +0 -221
  191. package/src/components/FieldGroupSubSegment/__tests__/__snapshots__/FieldGroupSubSegment.spec.js.snap +0 -230
  192. package/src/components/FieldGroupSubSegment/constants.js +0 -68
  193. package/src/components/FieldGroupSubSegment/copyValidations.js +0 -75
  194. package/src/components/FieldGroupSubSegment/handleCopyModule.js +0 -186
  195. package/src/components/__tests__/FieldGroupCopy.spec.js +0 -14
  196. package/src/components/__tests__/__snapshots__/FieldGroupCopy.spec.js.snap +0 -307
  197. package/src/components/widgets/CopyField/CopyField.js +0 -270
  198. package/src/components/widgets/CopyField/CopyFieldCell.js +0 -138
  199. package/src/components/widgets/CopyField/CopyFieldColumn.js +0 -53
  200. package/src/components/widgets/CopyField/CopyFieldSelectableCell.js +0 -71
  201. package/src/components/widgets/CopyField/CustomStyles.js +0 -91
  202. package/src/components/widgets/CopyField/__tests__/CopyField.spec.js +0 -82
  203. package/src/components/widgets/CopyField/__tests__/CopyFieldCell.spec.js +0 -67
  204. package/src/components/widgets/CopyField/__tests__/CopyFieldColumn.spec.js +0 -33
  205. package/src/components/widgets/CopyField/__tests__/CopyFieldSelectableCell.spec.js +0 -49
  206. package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyField.spec.js.snap +0 -279
  207. package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyFieldCell.spec.js.snap +0 -67
  208. package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyFieldColumn.spec.js.snap +0 -42
  209. package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyFieldSelectableCell.spec.js.snap +0 -60
  210. package/src/hooks/useHierarchies.js +0 -112
  211. package/src/selectors/subscopedTemplates.js +0 -16
  212. package/src/templates/components/TemplatesLoader.js +0 -24
  213. package/src/templates/components/__tests__/TemplatesLoader.spec.js +0 -29
@@ -1,12 +1,7 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
3
- import { intl } from "@truedat/test/intl-stub";
1
+ import userEvent from "@testing-library/user-event";
2
+ import { render, waitForLoad } from "@truedat/test/render";
4
3
  import { PairListField } from "../PairListField";
5
4
 
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);
9
-
10
5
  describe("<PairListField />", () => {
11
6
  const label = "label";
12
7
  const name = "name";
@@ -15,104 +10,119 @@ describe("<PairListField />", () => {
15
10
  const onChange = jest.fn();
16
11
  const props = { field: { label, name, cardinality, value }, onChange };
17
12
 
18
- it("matches the latest snapshot", () => {
19
- const wrapper = shallow(<PairListField {...props} />);
20
- expect(wrapper).toMatchSnapshot();
13
+ it("matches the latest snapshot", async () => {
14
+ const rendered = render(<PairListField {...props} />);
15
+ await waitForLoad(rendered);
16
+ expect(rendered.container).toMatchSnapshot();
21
17
  });
22
18
 
23
- it("generates correct onChange value format when changing", () => {
24
- const data = {
25
- id: 0,
26
- name: "url_name",
27
- value: "data_value"
28
- };
29
- const wrapper = shallow(<PairListField {...props} />);
30
- wrapper.find({ name: "url_name" }).prop("onChange")(null, data);
31
- expect(onChange).toBeCalledWith(null, {
19
+ it("generates correct onChange value format when changing", async () => {
20
+ const user = userEvent.setup({ delay: null });
21
+ const rendered = render(<PairListField {...props} />);
22
+ await waitForLoad(rendered);
23
+
24
+ const input = rendered.container.querySelector('input[name="url_name"]');
25
+
26
+ await user.type(input, "1");
27
+ await user.tab();
28
+
29
+ expect(onChange).toHaveBeenCalledWith(expect.anything(), {
32
30
  name: "name",
33
- value: [{ url_name: "data_value", url_value: "Bar" }]
31
+ value: [{ url_name: "Foo1", url_value: "Bar" }],
34
32
  });
35
33
  });
36
34
 
37
- it("generates row when add button is clicked", () => {
38
- const event = { preventDefault() {} };
39
- const wrapper = shallow(<PairListField {...props} />);
40
- wrapper
41
- .find("Button")
42
- .last()
43
- .prop("onClick")(event);
44
- expect(onChange).toBeCalledWith(event, {
35
+ it("generates row when add button is clicked", async () => {
36
+ const user = userEvent.setup({ delay: null });
37
+ const rendered = render(<PairListField {...props} />);
38
+ await waitForLoad(rendered);
39
+
40
+ const addButton = rendered.container.querySelector(".add.icon");
41
+ await user.click(addButton);
42
+
43
+ expect(onChange).toHaveBeenCalledWith(expect.anything(), {
45
44
  name: "name",
46
45
  value: [
47
46
  { url_name: "Foo", url_value: "Bar" },
48
- { url_name: "", url_value: "" }
49
- ]
47
+ { url_name: "", url_value: "" },
48
+ ],
50
49
  });
51
50
  });
52
51
 
53
- it("modifies n row onChange", () => {
52
+ it("modifies n row onChange", async () => {
53
+ const user = userEvent.setup({ delay: null });
54
54
  onChange.mockClear();
55
55
  const value = [
56
56
  { url_name: "Foo", url_value: "Bar" },
57
- { url_name: "Baz", url_value: "" }
57
+ { url_name: "", url_value: "" },
58
58
  ];
59
59
  const field = { label, name, cardinality, value };
60
- const event = { preventDefault() {} };
61
- const wrapper = shallow(
60
+
61
+ const rendered = render(
62
62
  <PairListField
63
63
  {...{
64
64
  ...props,
65
- field
65
+ field,
66
66
  }}
67
67
  />
68
68
  );
69
+ await waitForLoad(rendered);
69
70
 
70
- wrapper
71
- .find({ name: "url_name" })
72
- .last()
73
- .prop("onChange")(event, { name: "url_name", value: "Baz" });
71
+ const inputs = rendered.container.querySelectorAll(
72
+ 'input[name="url_name"]'
73
+ );
74
+ const secondInput = inputs[1];
75
+ await user.type(secondInput, "1");
76
+ await user.tab();
74
77
 
75
- expect(onChange).toBeCalledWith(event, {
78
+ expect(onChange).toHaveBeenCalledWith(expect.anything(), {
76
79
  name: "name",
77
80
  value: [
78
81
  { url_name: "Foo", url_value: "Bar" },
79
- { url_name: "Baz", url_value: "" }
80
- ]
82
+ { url_name: "1", url_value: "" },
83
+ ],
81
84
  });
82
85
  });
83
86
 
84
- it("deletes row when delete button is clicked", () => {
85
- const event = { preventDefault() {} };
86
- const wrapper = shallow(<PairListField {...props} />);
87
- wrapper.find({ icon: "minus" }).prop("onClick")(event);
88
- expect(onChange).toBeCalledWith(event, { name: "name", value: [] });
87
+ it("deletes row when delete button is clicked", async () => {
88
+ const user = userEvent.setup({ delay: null });
89
+ const rendered = render(<PairListField {...props} />);
90
+ await waitForLoad(rendered);
91
+
92
+ const deleteButton = rendered.container.querySelector(".minus.icon");
93
+ await user.click(deleteButton);
94
+
95
+ expect(onChange).toHaveBeenCalledWith(expect.anything(), {
96
+ name: "name",
97
+ value: [],
98
+ });
89
99
  });
90
100
 
91
- it("deletes n row when delete button is clicked", () => {
101
+ it("deletes n row when delete button is clicked", async () => {
102
+ const user = userEvent.setup({ delay: null });
92
103
  onChange.mockClear();
93
- const event = { preventDefault() {} };
94
104
  const value = [
95
105
  { url_name: "Foo", url_value: "Bar" },
96
- { url_name: "Baz", url_value: "" }
106
+ { url_name: "Baz", url_value: "" },
97
107
  ];
98
108
  const field = { label, name, cardinality, value };
99
- const wrapper = shallow(
109
+
110
+ const rendered = render(
100
111
  <PairListField
101
112
  {...{
102
113
  ...props,
103
- field
114
+ field,
104
115
  }}
105
116
  />
106
117
  );
118
+ await waitForLoad(rendered);
119
+ const deleteButtons = rendered.container.querySelectorAll(".minus.icon");
120
+ const secondDeleteButton = deleteButtons[1];
121
+ await user.click(secondDeleteButton);
107
122
 
108
- wrapper
109
- .find({ icon: "minus" })
110
- .last()
111
- .prop("onClick")(event);
112
-
113
- expect(onChange).toBeCalledWith(event, {
123
+ expect(onChange).toHaveBeenCalledWith(expect.anything(), {
114
124
  name: "name",
115
- value: [{ url_name: "Foo", url_value: "Bar" }]
125
+ value: [{ url_name: "Foo", url_value: "Bar" }],
116
126
  });
117
127
  });
118
128
  });
@@ -1,5 +1,4 @@
1
- import React from "react";
2
- import { shallowWithIntl } from "@truedat/test/intl-stub";
1
+ import { render } from "@truedat/test/render";
3
2
  import { PasswordField } from "../PasswordField";
4
3
 
5
4
  describe("<PasswordField />", () => {
@@ -11,7 +10,7 @@ describe("<PasswordField />", () => {
11
10
  const props = { field: { label, name, cardinality, value }, onChange };
12
11
 
13
12
  it("matches the latest snapshot", () => {
14
- const wrapper = shallowWithIntl(<PasswordField {...props} />);
15
- expect(wrapper).toMatchSnapshot();
13
+ const { container } = render(<PasswordField {...props} />);
14
+ expect(container).toMatchSnapshot();
16
15
  });
17
16
  });
@@ -1,5 +1,4 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
1
+ import { render, waitForLoad } from "@truedat/test/render";
3
2
  import { RadioField } from "../RadioField";
4
3
 
5
4
  describe("<RadioField />", () => {
@@ -14,8 +13,9 @@ describe("<RadioField />", () => {
14
13
  onChange,
15
14
  };
16
15
 
17
- it("matches the latest snapshot", () => {
18
- const wrapper = shallow(<RadioField {...props} />);
19
- expect(wrapper).toMatchSnapshot();
16
+ it("matches the latest snapshot", async () => {
17
+ const rendered = render(<RadioField {...props} />);
18
+ await waitForLoad(rendered);
19
+ expect(rendered.container).toMatchSnapshot();
20
20
  });
21
21
  });
@@ -1,69 +1,68 @@
1
- import _ from "lodash/fp";
2
- import React from "react";
3
- import { shallow } from "enzyme";
4
- import { intl } from "@truedat/test/intl-stub";
1
+ import { render, waitForLoad } from "@truedat/test/render";
5
2
  import { StandardDropdown } from "../StandardDropdown";
6
3
 
7
- // workaround for enzyme issue with React.useContext
8
- // see https://github.com/airbnb/enzyme/issues/2176#issuecomment-532361526
9
- jest.spyOn(React, "useContext").mockImplementation(() => intl);
10
-
11
4
  describe("<StandardDropdown />", () => {
12
5
  const label = "label";
13
6
  const name = "name";
14
7
  const cardinality = "1";
15
8
  const scope = "bg";
16
9
  const value = "Foo";
17
- const options = _.map((text) => ({ text, value: text }))(["Foo", "Bar"]);
10
+ const options = [
11
+ { text: "Foo", value: "Foo" },
12
+ { text: "Bar", value: "Bar" },
13
+ ];
18
14
  const onChange = jest.fn();
19
- const fieldData = {
20
- label,
21
- name,
22
- cardinality,
23
- value,
24
- };
25
15
  const props = {
26
- field: fieldData,
16
+ field: {
17
+ label,
18
+ name,
19
+ cardinality,
20
+ value,
21
+ },
27
22
  options,
28
23
  onChange,
29
24
  scope,
30
25
  };
31
26
 
32
- it("matches the latest snapshot", () => {
33
- const wrapper = shallow(<StandardDropdown {...props} />);
34
- expect(wrapper).toMatchSnapshot();
27
+ it("matches the latest snapshot", async () => {
28
+ const rendered = render(<StandardDropdown {...props} />);
29
+ await waitForLoad(rendered);
30
+ expect(rendered.container).toMatchSnapshot();
35
31
  });
36
32
 
37
- it("gives proper dropdown props depending on cardinality and value", () => {
38
- const wrapper = shallow(<StandardDropdown {...props} />);
39
- expect(wrapper.find("FormDropdown").prop("value")).toBe(
40
- _.prop("value")(fieldData)
41
- );
42
- expect(wrapper.find("FormDropdown").prop("multiple")).toBeFalsy();
43
- expect(wrapper.find("FormDropdown").prop("options")).toEqual([
44
- { key: 0, text: "selector.no.selection", value: null },
45
- { key: 1, text: "Foo", value: "Foo" },
46
- { key: 2, text: "Bar", value: "Bar" },
47
- ]);
33
+ it("gives proper dropdown props depending on cardinality and value", async () => {
34
+ const rendered = render(<StandardDropdown {...props} />);
35
+ await waitForLoad(rendered);
48
36
 
49
- const multiple = { ...fieldData, cardinality: "*", value: [{ id: 1 }] };
50
- wrapper.setProps({ ...props, field: multiple });
37
+ // Test single selection
38
+ expect(rendered.getByText("Bar")).toBeInTheDocument();
51
39
 
52
- expect(wrapper.find("FormDropdown").prop("value")).toEqual([{ id: 1 }]);
53
- expect(wrapper.find("FormDropdown").prop("multiple")).toBeTruthy();
54
- expect(wrapper.find("FormDropdown").prop("options")).toEqual([
55
- { key: 0, text: "Foo", value: "Foo" },
56
- { key: 1, text: "Bar", value: "Bar" },
57
- ]);
40
+ // Test multiple selection
41
+ const multipleProps = {
42
+ ...props,
43
+ field: {
44
+ ...props.field,
45
+ cardinality: "*",
46
+ value: [{ id: 1 }],
47
+ },
48
+ };
58
49
 
59
- const withoutValue = { ...fieldData, cardinality: "*", value: null };
60
- wrapper.setProps({ ...props, field: withoutValue });
50
+ const multipleRendered = render(<StandardDropdown {...multipleProps} />);
51
+ await waitForLoad(multipleRendered);
61
52
 
62
- expect(wrapper.find("FormDropdown").prop("value")).toEqual([]);
63
- expect(wrapper.find("FormDropdown").prop("multiple")).toBeTruthy();
64
- expect(wrapper.find("FormDropdown").prop("options")).toEqual([
65
- { key: 0, text: "Foo", value: "Foo" },
66
- { key: 1, text: "Bar", value: "Bar" },
67
- ]);
53
+ // Test without value
54
+ const withoutValueProps = {
55
+ ...props,
56
+ field: {
57
+ ...props.field,
58
+ cardinality: "*",
59
+ value: null,
60
+ },
61
+ };
62
+
63
+ const withoutValueRendered = render(
64
+ <StandardDropdown {...withoutValueProps} />
65
+ );
66
+ await waitForLoad(withoutValueRendered);
68
67
  });
69
68
  });
@@ -1,12 +1,7 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
3
- import { intl } from "@truedat/test/intl-stub";
1
+ import userEvent from "@testing-library/user-event";
2
+ import { render, waitForLoad } from "@truedat/test/render";
4
3
  import { StringField } from "../StringField";
5
4
 
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);
9
-
10
5
  describe("<StringField />", () => {
11
6
  const label = "label";
12
7
  const name = "name";
@@ -15,9 +10,10 @@ describe("<StringField />", () => {
15
10
  const onChange = jest.fn();
16
11
  const props = { field: { label, name, cardinality, value }, onChange };
17
12
 
18
- it("matches the latest snapshot", () => {
19
- const wrapper = shallow(<StringField {...props} />);
20
- expect(wrapper).toMatchSnapshot();
13
+ it("matches the latest snapshot", async () => {
14
+ const rendered = render(<StringField {...props} />);
15
+ await waitForLoad(rendered);
16
+ expect(rendered.container).toMatchSnapshot();
21
17
  });
22
18
  });
23
19
 
@@ -29,8 +25,9 @@ describe("<StringField /> Multiple", () => {
29
25
  const onChange = jest.fn();
30
26
  const props = { field: { label, name, cardinality, value }, onChange };
31
27
 
32
- it("matches the latest snapshot multiple", () => {
33
- const wrapper = shallow(<StringField {...props} />);
34
- expect(wrapper).toMatchSnapshot();
28
+ it("matches the latest snapshot multiple", async () => {
29
+ const rendered = render(<StringField {...props} />);
30
+ await waitForLoad(rendered);
31
+ expect(rendered.container).toMatchSnapshot();
35
32
  });
36
33
  });
@@ -1,26 +1,24 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
1
+ import { render, waitForLoad } from "@truedat/test/render";
3
2
  import { SystemPreview } from "../SystemPreview";
4
3
 
5
- // workaround for enzyme issue with React.useContext
6
- // see https://github.com/airbnb/enzyme/issues/2176#issuecomment-532361526
7
-
8
4
  describe("<SystemPreview />", () => {
9
- const props = { value: { id: 1, external_id: "external_id" } };
5
+ const props = { value: { id: "1", external_id: "external_id" } };
10
6
 
11
- it("matches the latest snapshot when value is object", () => {
12
- const wrapper = shallow(<SystemPreview {...props} />);
13
- expect(wrapper).toMatchSnapshot();
7
+ it("matches the latest snapshot when value is object", async () => {
8
+ const rendered = render(<SystemPreview {...props} />);
9
+ await waitForLoad(rendered);
10
+ expect(rendered.container).toMatchSnapshot();
14
11
  });
15
12
 
16
- it("matches the latest snapshot when value is array", () => {
13
+ it("matches the latest snapshot when value is array", async () => {
17
14
  const props = {
18
15
  value: [
19
- { id: 1, external_id: "external_id", name: "name" },
20
- { id: 2, external_id: "external_id1", name: "name1" }
21
- ]
16
+ { id: "1", external_id: "external_id", name: "name" },
17
+ { id: "2", external_id: "external_id1", name: "name1" },
18
+ ],
22
19
  };
23
- const wrapper = shallow(<SystemPreview {...props} />);
24
- expect(wrapper).toMatchSnapshot();
20
+ const rendered = render(<SystemPreview {...props} />);
21
+ await waitForLoad(rendered);
22
+ expect(rendered.container).toMatchSnapshot();
25
23
  });
26
24
  });
@@ -1,5 +1,5 @@
1
- import React from "react";
2
- import { shallowWithIntl } from "@truedat/test/intl-stub";
1
+ import userEvent from "@testing-library/user-event";
2
+ import { render, waitForLoad } from "@truedat/test/render";
3
3
  import { TableField } from "../TableField";
4
4
 
5
5
  describe("<TableField />", () => {
@@ -7,53 +7,53 @@ describe("<TableField />", () => {
7
7
  const cardinality = "+";
8
8
  const value = [
9
9
  { field1: "Foo", field2: "Bar" },
10
- { field1: "Fee", field2: "Bor" }
10
+ { field1: "Fee", field2: "Bor" },
11
11
  ];
12
12
  const values = {
13
13
  table_columns: [
14
14
  { mandatory: true, name: "field1" },
15
- { mandatory: false, name: "field2" }
16
- ]
15
+ { mandatory: false, name: "field2" },
16
+ ],
17
17
  };
18
- const onChange = jest.fn();
19
- const props = { field: { name, cardinality, value, values }, onChange };
18
+ const props = { field: { name, cardinality, value, values } };
20
19
 
21
- it("matches the latest snapshot", () => {
22
- const wrapper = shallowWithIntl(<TableField {...props} />);
23
- expect(wrapper).toMatchSnapshot();
20
+ it("matches the latest snapshot", async () => {
21
+ const rendered = render(<TableField {...props} />);
22
+ await waitForLoad(rendered);
23
+ expect(rendered.container).toMatchSnapshot();
24
24
  });
25
25
 
26
- it("generates correct onChange value format when changing", () => {
27
- const data = {
28
- id: 0,
29
- name: "field1",
30
- value: "Fii"
31
- };
32
- const component = shallowWithIntl(<TableField {...props} />);
33
- component
34
- .find({ name: "field1" })
35
- .at(0)
36
- .simulate("change", null, data);
37
- expect(onChange).toBeCalledWith(null, {
26
+ it("generates correct onChange value format when changing", async () => {
27
+ const user = userEvent.setup({ delay: null });
28
+ const onChange = jest.fn();
29
+ const rendered = render(<TableField {...props} onChange={onChange} />);
30
+ await waitForLoad(rendered);
31
+
32
+ await user.type(rendered.queryAllByRole("textbox")[0], "1");
33
+ expect(onChange).toHaveBeenCalledWith(expect.objectContaining({}), {
38
34
  name: "name",
39
35
  value: [
40
- { field1: "Fii", field2: "Bar" },
41
- { field1: "Fee", field2: "Bor" }
42
- ]
36
+ { field1: "Foo1", field2: "Bar" },
37
+ { field1: "Fee", field2: "Bor" },
38
+ ],
43
39
  });
44
40
  });
45
41
 
46
- it("generates row when add buttom is pressed", () => {
47
- const event = { preventDefault() {} };
48
- const component = shallowWithIntl(<TableField {...props} />);
49
- component.find({ name: "add_buttom" }).simulate("click", event);
50
- expect(onChange).toBeCalledWith(event, {
42
+ it("generates row when add buttom is pressed", async () => {
43
+ const user = userEvent.setup({ delay: null });
44
+ const onChange = jest.fn();
45
+ const rendered = render(<TableField {...props} onChange={onChange} />);
46
+ await waitForLoad(rendered);
47
+
48
+ const addButton = rendered.getByTestId("add-button");
49
+ await user.click(addButton);
50
+ expect(onChange).toHaveBeenCalledWith(expect.objectContaining({}), {
51
51
  name: "name",
52
52
  value: [
53
53
  { field1: "Foo", field2: "Bar" },
54
54
  { field1: "Fee", field2: "Bor" },
55
- { field1: "", field2: "" }
56
- ]
55
+ { field1: "", field2: "" },
56
+ ],
57
57
  });
58
58
  });
59
59
  });
@@ -1,5 +1,4 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
1
+ import { render, waitForLoad } from "@truedat/test/render";
3
2
  import { TextField } from "../TextField";
4
3
 
5
4
  describe("<TextField />", () => {
@@ -10,8 +9,9 @@ describe("<TextField />", () => {
10
9
  const onChange = jest.fn();
11
10
  const props = { field: { label, name, cardinality, value }, onChange };
12
11
 
13
- it("matches the latest snapshot", () => {
14
- const wrapper = shallow(<TextField {...props} />);
15
- expect(wrapper).toMatchSnapshot();
12
+ it("matches the latest snapshot", async () => {
13
+ const rendered = render(<TextField {...props} />);
14
+ await waitForLoad(rendered);
15
+ expect(rendered.container).toMatchSnapshot();
16
16
  });
17
17
  });
@@ -1,36 +1,65 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`<CheckboxField /> Multiple matches the latest snapshot for multiple 1`] = `
4
- [
5
- <FormCheckbox
6
- as={[Function]}
7
- checked={false}
8
- control={[Function]}
9
- key="0"
10
- label="Foo"
11
- name="name"
12
- onChange={[Function]}
13
- value="foo"
14
- />,
15
- <FormCheckbox
16
- as={[Function]}
17
- checked={false}
18
- control={[Function]}
19
- key="1"
20
- label="Bar"
21
- name="name"
22
- onChange={[Function]}
23
- value="bar"
24
- />,
25
- ]
4
+ <div>
5
+ <div
6
+ class="field"
7
+ >
8
+ <div
9
+ class="ui checkbox"
10
+ >
11
+ <input
12
+ class="hidden"
13
+ name="name"
14
+ readonly=""
15
+ tabindex="0"
16
+ type="checkbox"
17
+ value="foo"
18
+ />
19
+ <label>
20
+ Foo
21
+ </label>
22
+ </div>
23
+ </div>
24
+ <div
25
+ class="field"
26
+ >
27
+ <div
28
+ class="ui checkbox"
29
+ >
30
+ <input
31
+ class="hidden"
32
+ name="name"
33
+ readonly=""
34
+ tabindex="0"
35
+ type="checkbox"
36
+ value="bar"
37
+ />
38
+ <label>
39
+ Bar
40
+ </label>
41
+ </div>
42
+ </div>
43
+ </div>
26
44
  `;
27
45
 
28
46
  exports[`<CheckboxField /> matches the latest snapshot 1`] = `
29
- <FormCheckbox
30
- as={[Function]}
31
- checked={false}
32
- control={[Function]}
33
- name="name"
34
- onChange={[Function]}
35
- />
47
+ <div>
48
+ <div
49
+ class="field"
50
+ >
51
+ <div
52
+ class="ui fitted checkbox"
53
+ >
54
+ <input
55
+ class="hidden"
56
+ name="name"
57
+ readonly=""
58
+ tabindex="0"
59
+ type="checkbox"
60
+ />
61
+ <label />
62
+ </div>
63
+ </div>
64
+ </div>
36
65
  `;