@truedat/df 7.5.9 → 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,8 +1,7 @@
1
- import React from "react";
2
- import { waitFor, waitForElementToBeRemoved } from "@testing-library/react";
3
1
  import userEvent from "@testing-library/user-event";
4
- import { render } from "@truedat/test/render";
5
-
2
+ import { waitFor } from "@testing-library/react";
3
+ import { render, waitForLoad } from "@truedat/test/render";
4
+ import { TEMPLATES_QUERY } from "@truedat/core/api/queries";
6
5
  import {
7
6
  errorTemplateMock,
8
7
  multipleTemplatesMock,
@@ -28,27 +27,70 @@ describe("<SelectableDynamicForm />", () => {
28
27
  };
29
28
 
30
29
  it("matches the latest snapshot", async () => {
31
- const { container, queryByText } = render(
32
- <SelectableDynamicForm {...props} />,
33
- renderOpts
34
- );
35
- await waitForElementToBeRemoved(() => queryByText(/loading/i));
36
- expect(container).toMatchSnapshot();
30
+ const rendered = render(<SelectableDynamicForm {...props} />, renderOpts);
31
+ await waitForLoad(rendered);
32
+ expect(rendered.container).toMatchSnapshot();
37
33
  });
38
34
 
39
- it("matches the latest snapshot for error query", async () => {
40
- const renderOpts = {
41
- mocks: [errorTemplateMock(variables)],
42
- };
43
- const { container, queryByText } = render(
44
- <SelectableDynamicForm {...props} />,
45
- renderOpts
46
- );
47
- await waitForElementToBeRemoved(() => queryByText(/loading/i));
48
- expect(container).toMatchSnapshot();
35
+ it("shows and hides loading states correctly", async () => {
36
+ const rendered = render(<SelectableDynamicForm {...props} />, renderOpts);
37
+
38
+ expect(rendered.getByText(/loading/i)).toBeInTheDocument();
39
+ expect(
40
+ rendered.container.querySelector(".ui.loader")
41
+ ).not.toBeInTheDocument();
42
+
43
+ await waitFor(() => {
44
+ expect(rendered.queryByText(/loading/i)).not.toBeInTheDocument();
45
+ });
46
+
47
+ await waitForLoad(rendered);
48
+
49
+ expect(rendered.queryByText(/loading/i)).not.toBeInTheDocument();
50
+ expect(
51
+ rendered.container.querySelector(".ui.loader")
52
+ ).not.toBeInTheDocument();
53
+ });
54
+
55
+ it("handles template selection loading states", async () => {
56
+ const rendered = render(<SelectableDynamicForm {...props} />, renderOpts);
57
+ await waitForLoad(rendered);
58
+
59
+ const user = userEvent.setup({ delay: null });
60
+ await user.click(await rendered.findByText(/template1/i));
61
+ expect(
62
+ rendered.container.querySelector(".ui.loader")
63
+ ).not.toBeInTheDocument();
49
64
  });
50
65
 
51
- it("calls onNameChange and onChange functions when selecting template", async () => {
66
+ it("handles quick template selection", async () => {
67
+ const rendered = render(<SelectableDynamicForm {...props} />, renderOpts);
68
+ await waitForLoad(rendered);
69
+
70
+ const user = userEvent.setup({ delay: null });
71
+ const templateOption = await rendered.findByText(/template1/i);
72
+ await user.click(templateOption);
73
+ await user.click(templateOption);
74
+
75
+ expect(
76
+ rendered.container.querySelector(".ui.loader")
77
+ ).not.toBeInTheDocument();
78
+ });
79
+
80
+ it("shows loading states when changing templates", async () => {
81
+ const rendered = render(<SelectableDynamicForm {...props} />, renderOpts);
82
+ await waitForLoad(rendered);
83
+
84
+ const user = userEvent.setup({ delay: null });
85
+ await user.click(await rendered.findByText(/template1/i));
86
+ await user.click(await rendered.findByText(/template2/i));
87
+
88
+ expect(
89
+ rendered.container.querySelector(".ui.loader")
90
+ ).not.toBeInTheDocument();
91
+ });
92
+
93
+ it("calls callbacks when selecting template", async () => {
52
94
  const onChange = jest.fn();
53
95
  const onNameChange = jest.fn();
54
96
  const thisProps = {
@@ -56,42 +98,41 @@ describe("<SelectableDynamicForm />", () => {
56
98
  onChange,
57
99
  onNameChange,
58
100
  };
59
- const { container, findByText, queryByText } = render(
101
+ const rendered = render(
60
102
  <SelectableDynamicForm {...thisProps} />,
61
103
  renderOpts
62
104
  );
105
+ await waitForLoad(rendered);
63
106
 
64
- await waitForElementToBeRemoved(() => queryByText(/loading/i));
65
- userEvent.click(await findByText("template1"));
107
+ const user = userEvent.setup({ delay: null });
108
+ await user.click(await rendered.findByText(/template1/i));
66
109
 
67
110
  expect(onChange).toHaveBeenCalledWith({ content: {}, valid: [] });
68
111
  expect(onNameChange).toHaveBeenCalledWith("template1");
112
+ });
69
113
 
70
- const input = container.querySelector('[name="field1"]');
71
- userEvent.type(input, "A");
72
- expect(onChange).toHaveBeenCalledWith({
73
- content: { field1: { value: "A", origin: "user" } },
74
- valid: [],
75
- });
114
+ it("matches error snapshot", async () => {
115
+ const errorOpts = {
116
+ mocks: [errorTemplateMock(variables)],
117
+ };
118
+ const rendered = render(<SelectableDynamicForm {...props} />, errorOpts);
119
+ await waitForLoad(rendered);
120
+ expect(rendered.container).toMatchSnapshot();
76
121
  });
77
122
  });
78
123
 
79
- describe("with a single template", () => {
124
+ describe("with single template", () => {
80
125
  const renderOpts = {
81
126
  mocks: [singleTemplateMock(variables)],
82
127
  };
83
128
 
84
129
  it("matches the latest snapshot", async () => {
85
- const { container, queryByText } = render(
86
- <SelectableDynamicForm {...props} />,
87
- renderOpts
88
- );
89
- await waitForElementToBeRemoved(() => queryByText(/loading/i));
90
- expect(queryByText("template1")).not.toBeInTheDocument();
91
- expect(container).toMatchSnapshot();
130
+ const rendered = render(<SelectableDynamicForm {...props} />, renderOpts);
131
+ await waitForLoad(rendered);
132
+ expect(rendered.container).toMatchSnapshot();
92
133
  });
93
134
 
94
- it("calls onNameChange function to select the unique template", async () => {
135
+ it("auto-selects template", async () => {
95
136
  const onNameChange = jest.fn();
96
137
  const thisProps = {
97
138
  ...props,
@@ -106,17 +147,32 @@ describe("<SelectableDynamicForm />", () => {
106
147
 
107
148
  describe("with no domains", () => {
108
149
  const renderOpts = {
109
- mocks: [multipleTemplatesMock(variablesEmptyDomains)],
150
+ mocks: [
151
+ {
152
+ request: {
153
+ query: TEMPLATES_QUERY,
154
+ variables: { scope: "foo" },
155
+ },
156
+ result: {
157
+ data: {
158
+ templates: [],
159
+ },
160
+ },
161
+ },
162
+ ],
110
163
  };
111
164
 
112
- it("matches the latest snapshot", async () => {
113
- const { container, queryByText } = render(
114
- <SelectableDynamicForm {...props} />,
165
+ it("renders empty state", async () => {
166
+ const rendered = render(
167
+ <SelectableDynamicForm
168
+ {...variablesEmptyDomains}
169
+ onChange={jest.fn()}
170
+ onNameChange={jest.fn()}
171
+ />,
115
172
  renderOpts
116
173
  );
117
- await waitForElementToBeRemoved(() => queryByText(/loading/i));
118
- expect(queryByText("template1")).not.toBeInTheDocument();
119
- expect(container).toMatchSnapshot();
174
+ await waitForLoad(rendered);
175
+ expect(rendered.container).toMatchSnapshot();
120
176
  });
121
177
  });
122
178
  });
@@ -112,7 +112,7 @@ exports[`<DynamicFieldValue /> matches the latest snapshot with field changed 1`
112
112
  >
113
113
  <div
114
114
  class="header dynamic-field-header template-field-changed"
115
- title="This field has been changed"
115
+ title="template.field.changed"
116
116
  >
117
117
  label
118
118
  </div>
@@ -135,7 +135,7 @@ exports[`<DynamicFieldValue /> matches the latest snapshot with field changed 1`
135
135
  >
136
136
  <div
137
137
  class="header dynamic-field-header template-field-changed"
138
- title="This field has been changed"
138
+ title="template.field.changed"
139
139
  >
140
140
  label
141
141
  </div>
@@ -1,89 +1,102 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`<DynamicForm /> matches snapshot for default field 1`] = `
4
- <FieldGroupSegment
5
- fields={
6
- [
7
- {
8
- "name": "test",
9
- "required": false,
10
- "value": undefined,
11
- },
12
- ]
13
- }
14
- key="0"
15
- name="test-group"
16
- onFieldChange={[Function]}
17
- />
3
+ exports[`<DynamicForm /> matches the latest snapshot for default field 1`] = `
4
+ <div>
5
+ <div
6
+ class="ui segment"
7
+ >
8
+ <h4
9
+ class="ui header"
10
+ >
11
+ test-group
12
+ </h4>
13
+ <div
14
+ class="field"
15
+ data-testid="form-field"
16
+ >
17
+ <label />
18
+ <div
19
+ class="field"
20
+ >
21
+ <div
22
+ class="ui input"
23
+ >
24
+ <input
25
+ name="test"
26
+ type="text"
27
+ value=""
28
+ />
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ </div>
18
34
  `;
19
35
 
20
- exports[`<DynamicForm /> matches snapshot for domain values 1`] = `
21
- <FieldGroupSegment
22
- fields={
23
- [
24
- {
25
- "name": "test",
26
- "parsedValues": [
27
- {
28
- "text": "a",
29
- "value": "a",
30
- },
31
- {
32
- "text": "b",
33
- "value": "b",
34
- },
35
- {
36
- "text": "c",
37
- "value": "c",
38
- },
39
- ],
40
- "required": false,
41
- "value": undefined,
42
- "values": {
43
- "domain": {
44
- "1": [
45
- "a",
46
- "b",
47
- "c",
48
- ],
49
- },
50
- },
51
- },
52
- ]
53
- }
54
- key="0"
55
- name="test-group"
56
- onFieldChange={[Function]}
57
- />
36
+ exports[`<DynamicForm /> matches the latest snapshot for domain values 1`] = `
37
+ <div>
38
+ <div
39
+ class="ui segment"
40
+ >
41
+ <h4
42
+ class="ui header"
43
+ >
44
+ test-group
45
+ </h4>
46
+ <div
47
+ class="field"
48
+ data-testid="form-field"
49
+ >
50
+ <label />
51
+ <div
52
+ class="field"
53
+ >
54
+ <div
55
+ class="ui input"
56
+ >
57
+ <input
58
+ name="test"
59
+ type="text"
60
+ value=""
61
+ />
62
+ </div>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ </div>
58
67
  `;
59
68
 
60
- exports[`<DynamicForm /> matches snapshot for empty content 1`] = `null`;
69
+ exports[`<DynamicForm /> matches the latest snapshot for empty content 1`] = `<div />`;
61
70
 
62
- exports[`<DynamicForm /> matches snapshot for role_users values 1`] = `
63
- <FieldGroupSegment
64
- fields={
65
- [
66
- {
67
- "name": "test",
68
- "parsedValues": [
69
- {
70
- "text": "user1",
71
- "value": "user1",
72
- },
73
- ],
74
- "required": false,
75
- "value": undefined,
76
- "values": {
77
- "processed_users": [
78
- "user1",
79
- ],
80
- "role_users": "role",
81
- },
82
- },
83
- ]
84
- }
85
- key="0"
86
- name="test-group"
87
- onFieldChange={[Function]}
88
- />
71
+ exports[`<DynamicForm /> matches the latest snapshot for role_users values 1`] = `
72
+ <div>
73
+ <div
74
+ class="ui segment"
75
+ >
76
+ <h4
77
+ class="ui header"
78
+ >
79
+ test-group
80
+ </h4>
81
+ <div
82
+ class="field"
83
+ data-testid="form-field"
84
+ >
85
+ <label />
86
+ <div
87
+ class="field"
88
+ >
89
+ <div
90
+ class="ui input"
91
+ >
92
+ <input
93
+ name="test"
94
+ type="text"
95
+ value=""
96
+ />
97
+ </div>
98
+ </div>
99
+ </div>
100
+ </div>
101
+ </div>
89
102
  `;
@@ -184,7 +184,7 @@ exports[`<FieldGroupDetail /> matches the latest snapshot with field differences
184
184
  >
185
185
  <div
186
186
  class="header dynamic-field-header template-field-changed"
187
- title="This field has been changed"
187
+ title="template.field.changed"
188
188
  >
189
189
  foo field
190
190
  </div>
@@ -238,7 +238,7 @@ exports[`<FieldGroupDetail /> matches the latest snapshot with field differences
238
238
  >
239
239
  <div
240
240
  class="header dynamic-field-header template-field-changed"
241
- title="This field has been changed"
241
+ title="template.field.changed"
242
242
  >
243
243
  foo field
244
244
  </div>
@@ -10,12 +10,6 @@ exports[`<FieldViewerValue /> matches the latest snapshot for multiple 1`] = `
10
10
  </div>
11
11
  `;
12
12
 
13
- exports[`<FieldViewerValue /> matches the latest snapshot with type: copy 1`] = `
14
- <div>
15
- Error: copy has wrong format
16
- </div>
17
- `;
18
-
19
13
  exports[`<FieldViewerValue /> matches the latest snapshot with type: date 1`] = `
20
14
  <div>
21
15
  <div
@@ -72,6 +66,7 @@ exports[`<FieldViewerValue /> matches the latest snapshot with type: system 1`]
72
66
  class="ui label"
73
67
  >
74
68
  <a
69
+ data-discover="true"
75
70
  href="/systems/1/structures"
76
71
  >
77
72
  name
@@ -174,7 +169,6 @@ exports[`<FieldViewerValue /> matches the latest snapshot with type: user_group
174
169
  aria-hidden="true"
175
170
  class="group icon"
176
171
  />
177
-
178
172
  group_name
179
173
  </div>
180
174
  `;
@@ -1,40 +1,6 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`<SelectableDynamicForm /> with a single template matches the latest snapshot 1`] = `
4
- <div>
5
- <div
6
- class="ui segment"
7
- >
8
- <h4
9
- class="ui header"
10
- >
11
- g1
12
- </h4>
13
- <div
14
- class="field"
15
- data-testid="form-field"
16
- >
17
- <label>
18
- field1
19
- </label>
20
- <div
21
- class="field"
22
- >
23
- <div
24
- class="ui input"
25
- >
26
- <input
27
- name="field1"
28
- placeholder="field1"
29
- type="text"
30
- value=""
31
- />
32
- </div>
33
- </div>
34
- </div>
35
- </div>
36
- </div>
37
- `;
3
+ exports[`<SelectableDynamicForm /> with multiple templates matches error snapshot 1`] = `<div />`;
38
4
 
39
5
  exports[`<SelectableDynamicForm /> with multiple templates matches the latest snapshot 1`] = `
40
6
  <div>
@@ -42,7 +8,7 @@ exports[`<SelectableDynamicForm /> with multiple templates matches the latest sn
42
8
  class="field"
43
9
  >
44
10
  <label>
45
- Template
11
+ template.selector.label
46
12
  </label>
47
13
  <div
48
14
  class="field"
@@ -68,7 +34,7 @@ exports[`<SelectableDynamicForm /> with multiple templates matches the latest sn
68
34
  class="divider default text"
69
35
  role="alert"
70
36
  >
71
- Select a template...
37
+ template.selector.placeholder
72
38
  </div>
73
39
  <i
74
40
  aria-hidden="true"
@@ -111,6 +77,40 @@ exports[`<SelectableDynamicForm /> with multiple templates matches the latest sn
111
77
  </div>
112
78
  `;
113
79
 
114
- exports[`<SelectableDynamicForm /> with multiple templates matches the latest snapshot for error query 1`] = `<div />`;
80
+ exports[`<SelectableDynamicForm /> with no domains renders empty state 1`] = `<div />`;
115
81
 
116
- exports[`<SelectableDynamicForm /> with no domains matches the latest snapshot 1`] = `<div />`;
82
+ exports[`<SelectableDynamicForm /> with single template matches the latest snapshot 1`] = `
83
+ <div>
84
+ <div
85
+ class="ui segment"
86
+ >
87
+ <h4
88
+ class="ui header"
89
+ >
90
+ g1
91
+ </h4>
92
+ <div
93
+ class="field"
94
+ data-testid="form-field"
95
+ >
96
+ <label>
97
+ field1
98
+ </label>
99
+ <div
100
+ class="field"
101
+ >
102
+ <div
103
+ class="ui input"
104
+ >
105
+ <input
106
+ name="field1"
107
+ placeholder="field1"
108
+ type="text"
109
+ value=""
110
+ />
111
+ </div>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ </div>
116
+ `;
@@ -1,10 +1,9 @@
1
- import React from "react";
2
1
  import { Table } from "semantic-ui-react";
3
- import { Link } from "react-router-dom";
2
+ import { Link } from "react-router";
4
3
  import { Loading } from "@truedat/core/components";
5
4
  import { FormattedMessage } from "react-intl";
6
5
  import { linkTo } from "@truedat/core/routes";
7
- import { useHierarchies } from "../../hooks/useHierarchies";
6
+ import { useHierarchies } from "@truedat/core/hooks/useHierarchies";
8
7
 
9
8
  export const Hierarchies = () => {
10
9
  const { data: hierarchies, loading } = useHierarchies();
@@ -22,7 +21,6 @@ export const Hierarchies = () => {
22
21
  </Table.HeaderCell>
23
22
  </Table.Row>
24
23
  </Table.Header>
25
-
26
24
  <Table.Body>
27
25
  {hierarchies.map((hierarchy) => {
28
26
  const { id, name, description } = hierarchy;
@@ -1,6 +1,5 @@
1
- import React from "react";
2
1
  import { Button, Header, Icon, Segment } from "semantic-ui-react";
3
- import { Link } from "react-router-dom";
2
+ import { Link } from "react-router";
4
3
  import { FormattedMessage, useIntl } from "react-intl";
5
4
  import { HIERARCHY_CREATE } from "@truedat/core/routes";
6
5
  import Hierarchies from "./Hierarchies";
@@ -1,7 +1,6 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { Breadcrumb } from "semantic-ui-react";
4
- import { Link } from "react-router-dom";
3
+ import { Link } from "react-router";
5
4
  import { FormattedMessage } from "react-intl";
6
5
  import { HIERARCHIES } from "@truedat/core/routes";
7
6