@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,4 +1,3 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { RichTextEditor } from "@truedat/core/components";
4
3
 
@@ -1,5 +1,5 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useState, useEffect } from "react";
2
+ import { useState, useEffect } from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { Form } from "semantic-ui-react";
5
5
  import { HierarchySelector } from "@truedat/core/components";
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { Label, Popup, PopupContent, List, ListItem } from "semantic-ui-react";
5
4
 
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { useIntl } from "react-intl";
4
3
 
@@ -1,4 +1,4 @@
1
- import React, { useState } from "react";
1
+ import { useState } from "react";
2
2
  import PropTypes from "prop-types";
3
3
  import { Button, Message, Icon } from "semantic-ui-react";
4
4
  import { useIntl } from "react-intl";
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { Image, Modal } from "semantic-ui-react";
3
2
 
4
3
  export const ImagePreview = ({ value }) =>
@@ -1,19 +1,18 @@
1
1
  import _ from "lodash/fp";
2
2
  import PropTypes from "prop-types";
3
- import React from "react";
4
3
  import { Form } from "semantic-ui-react";
5
4
 
6
- const targetValue = e => {
5
+ const targetValue = (e) => {
7
6
  const target = _.path("target.value")(e);
8
7
  return _.isNil(target) || target === "" ? target : parseFloat(target);
9
8
  };
10
9
 
11
- const floatTargetValue = e => {
10
+ const floatTargetValue = (e) => {
12
11
  const target = _.path("target.value")(e);
13
12
  return _.isNil(target) || target === "" ? target : parseFloat(target);
14
13
  };
15
14
 
16
- const handleKeyDown = event => {
15
+ const handleKeyDown = (event) => {
17
16
  if (event.key === "." || event.key === ",") {
18
17
  event.preventDefault();
19
18
  }
@@ -27,7 +26,7 @@ export const NumberField = ({ field: { name, value, type }, onChange }) => {
27
26
  step="any"
28
27
  value={_.isNil(value) || _.isUndefined(value) ? "" : value}
29
28
  name={name}
30
- onChange={e => onChange(e, { name: name, value: floatTargetValue(e) })}
29
+ onChange={(e) => onChange(e, { name: name, value: floatTargetValue(e) })}
31
30
  />
32
31
  ) : (
33
32
  <Form.Input
@@ -36,14 +35,14 @@ export const NumberField = ({ field: { name, value, type }, onChange }) => {
36
35
  onKeyDown={handleKeyDown}
37
36
  value={_.isNil(value) || _.isUndefined(value) ? "" : value}
38
37
  name={name}
39
- onChange={e => onChange(e, { name: name, value: targetValue(e) })}
38
+ onChange={(e) => onChange(e, { name: name, value: targetValue(e) })}
40
39
  />
41
40
  );
42
41
  };
43
42
 
44
43
  NumberField.propTypes = {
45
44
  field: PropTypes.object,
46
- onChange: PropTypes.func
45
+ onChange: PropTypes.func,
47
46
  };
48
47
 
49
48
  export default NumberField;
@@ -1,5 +1,4 @@
1
1
  import { castArray, defaultTo, flow } from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { Form, Button } from "semantic-ui-react";
5
4
  import { dropAt, replaceAt } from "@truedat/core/services/arrays";
@@ -10,7 +9,7 @@ export const PairListField = ({ field: { name, value }, onChange }) => {
10
9
 
11
10
  const values = flow(defaultTo([]), castArray)(value);
12
11
 
13
- const handleAdd = e => {
12
+ const handleAdd = (e) => {
14
13
  e && e.preventDefault();
15
14
  onChange(e, { name, value: [...values, { url_name: "", url_value: "" }] });
16
15
  };
@@ -34,7 +33,7 @@ export const PairListField = ({ field: { name, value }, onChange }) => {
34
33
  name="url_name"
35
34
  onChange={(e, data) => handleChange(e, data, i)}
36
35
  placeholder={formatMessage({
37
- id: "fields.pairlist.url.name.placeholder"
36
+ id: "fields.pairlist.url.name.placeholder",
38
37
  })}
39
38
  value={url_name}
40
39
  />
@@ -42,11 +41,11 @@ export const PairListField = ({ field: { name, value }, onChange }) => {
42
41
  name="url_value"
43
42
  onChange={(e, data) => handleChange(e, data, i)}
44
43
  placeholder={formatMessage({
45
- id: "fields.pairlist.url.value.placeholder"
44
+ id: "fields.pairlist.url.value.placeholder",
46
45
  })}
47
46
  value={url_value}
48
47
  />
49
- <Button compact icon="minus" onClick={e => handleRemove(e, i)} />
48
+ <Button compact icon="minus" onClick={(e) => handleRemove(e, i)} />
50
49
  </Form.Group>
51
50
  ))}
52
51
  <Button
@@ -60,7 +59,7 @@ export const PairListField = ({ field: { name, value }, onChange }) => {
60
59
 
61
60
  PairListField.propTypes = {
62
61
  field: PropTypes.object,
63
- onChange: PropTypes.func
62
+ onChange: PropTypes.func,
64
63
  };
65
64
 
66
65
  export default PairListField;
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { Form } from "semantic-ui-react";
4
3
 
@@ -13,7 +12,7 @@ export const PasswordField = ({ field: { name, value }, onChange }) => (
13
12
 
14
13
  PasswordField.propTypes = {
15
14
  field: PropTypes.object,
16
- onChange: PropTypes.func
15
+ onChange: PropTypes.func,
17
16
  };
18
17
 
19
18
  export default PasswordField;
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { Form } from "semantic-ui-react";
5
4
 
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { useIntl } from "react-intl";
5
4
  import { connect } from "react-redux";
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { Form } from "semantic-ui-react";
4
3
  import { useIntl } from "react-intl";
@@ -1,9 +1,8 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { linkTo } from "@truedat/core/routes";
5
4
  import { Label } from "semantic-ui-react";
6
- import { Link } from "react-router-dom";
5
+ import { Link } from "react-router";
7
6
 
8
7
  export const SystemPreview = ({ value }) => {
9
8
  const systems = _.isArray(value) ? value : [value];
@@ -21,7 +20,7 @@ export const SystemPreview = ({ value }) => {
21
20
  };
22
21
 
23
22
  SystemPreview.propTypes = {
24
- value: PropTypes.oneOfType([PropTypes.object, PropTypes.array])
23
+ value: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
25
24
  };
26
25
 
27
26
  export default SystemPreview;
@@ -1,5 +1,4 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
2
  import PropTypes from "prop-types";
4
3
  import { Button, Icon, Table, Input } from "semantic-ui-react";
5
4
 
@@ -55,13 +54,13 @@ export const TableField = ({
55
54
  <Table.Row>
56
55
  {table_columns.map((v, i) => (
57
56
  <Table.HeaderCell key={i}>
58
- {v.name} {v.mandatory && <span className="is_required">*</span>}
57
+ {v.name}
58
+ {v.mandatory && <span className="is_required">*</span>}
59
59
  </Table.HeaderCell>
60
60
  ))}
61
- <Table.HeaderCell> </Table.HeaderCell>
61
+ <Table.HeaderCell />
62
62
  </Table.Row>
63
63
  </Table.Header>
64
-
65
64
  <Table.Body>
66
65
  {value &&
67
66
  value.map((row, i) => (
@@ -100,9 +99,10 @@ export const TableField = ({
100
99
  <Table.HeaderCell colSpan={`${table_columns.length + 1}`}>
101
100
  <Button
102
101
  compact
102
+ data-testid="add-button"
103
103
  floated="right"
104
104
  icon={{ name: "add", color: "green" }}
105
- name="add_buttom"
105
+ name="add_button"
106
106
  onClick={handleAddRow}
107
107
  size="small"
108
108
  />
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { Form } from "semantic-ui-react";
4
3
 
@@ -8,7 +7,7 @@ export const TextField = ({ field: { name, value }, onChange }) => (
8
7
 
9
8
  TextField.propTypes = {
10
9
  field: PropTypes.object,
11
- onChange: PropTypes.func
10
+ onChange: PropTypes.func,
12
11
  };
13
12
 
14
13
  export default TextField;
@@ -1,6 +1,5 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
3
- import { Form } from "semantic-ui-react";
1
+ import userEvent from "@testing-library/user-event";
2
+ import { render, waitForLoad } from "@truedat/test/render";
4
3
  import { CheckboxField } from "../CheckboxField";
5
4
 
6
5
  describe("<CheckboxField />", () => {
@@ -10,18 +9,26 @@ describe("<CheckboxField />", () => {
10
9
  const onChange = jest.fn();
11
10
  const props = { field: { label, name, value }, onChange };
12
11
 
13
- it("matches the latest snapshot", () => {
14
- const wrapper = shallow(<CheckboxField {...props} />);
15
- expect(wrapper).toMatchSnapshot();
12
+ it("matches the latest snapshot", async () => {
13
+ const rendered = render(<CheckboxField {...props} />);
14
+ await waitForLoad(rendered);
15
+ expect(rendered.container).toMatchSnapshot();
16
16
  });
17
17
 
18
- it("call onChange function", () => {
19
- const component = shallow(<CheckboxField {...props} />);
20
- component.simulate("change", null, { checked: true });
21
- expect(onChange).toBeCalledWith(null, { checked: true, value: "Si" });
18
+ it("call onChange function", async () => {
19
+ const user = userEvent.setup({ delay: null });
20
+ onChange.mockClear();
21
+ const rendered = render(<CheckboxField {...props} />);
22
+ await waitForLoad(rendered);
22
23
 
23
- component.simulate("change", null, { checked: false });
24
- expect(onChange).toBeCalledWith(null, { checked: false, value: "No" });
24
+ await user.click(rendered.getByRole("checkbox"));
25
+ expect(onChange).toHaveBeenCalledWith(
26
+ expect.anything(),
27
+ expect.objectContaining({
28
+ checked: true,
29
+ value: "Si",
30
+ })
31
+ );
25
32
  });
26
33
  });
27
34
 
@@ -37,19 +44,22 @@ describe("<CheckboxField /> Multiple", () => {
37
44
  const onChange = jest.fn();
38
45
  const props = { field, onChange };
39
46
 
40
- it("matches the latest snapshot for multiple", () => {
41
- const wrapper = shallow(<CheckboxField {...props} />);
42
- expect(wrapper).toMatchSnapshot();
47
+ it("matches the latest snapshot for multiple", async () => {
48
+ const rendered = render(<CheckboxField {...props} />);
49
+ await waitForLoad(rendered);
50
+ expect(rendered.container).toMatchSnapshot();
43
51
  });
44
52
 
45
- it("call onChange function for multiple", () => {
46
- const wrapper = shallow(<CheckboxField {...props} />);
47
- const checkBox = wrapper.find(Form.Checkbox).first().dive();
53
+ it("call onChange function for multiple", async () => {
54
+ const user = userEvent.setup({ delay: null });
55
+ onChange.mockClear();
56
+ const rendered = render(<CheckboxField {...props} />);
57
+ await waitForLoad(rendered);
48
58
 
49
- checkBox.simulate("change", null, { checked: true, value: "foo" });
50
- expect(onChange).toBeCalledWith(null, { value: ["foo"] });
51
-
52
- checkBox.simulate("change", null, { checked: false, value: "foo" });
53
- expect(onChange).toBeCalledWith(null, { value: [] });
59
+ await user.click(rendered.getAllByRole("checkbox")[0]);
60
+ expect(onChange).toHaveBeenCalledWith(
61
+ expect.anything(),
62
+ expect.objectContaining({ value: ["foo"] })
63
+ );
54
64
  });
55
65
  });
@@ -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 { ColorPickerField } from "../ColorPickerField";
4
3
 
5
4
  describe("<ColorPickerField />", () => {
@@ -10,15 +9,9 @@ describe("<ColorPickerField />", () => {
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(<ColorPickerField {...props} />);
15
- expect(wrapper).toMatchSnapshot();
16
- });
17
-
18
- it("call onChange function", () => {
19
- const color = { hex: "hex_value" };
20
- const component = shallow(<ColorPickerField {...props} />);
21
- component.find({ name: "color_picker" }).simulate("changeComplete", color);
22
- expect(onChange).toBeCalledWith(null, { name: "name", value: "hex_value" });
12
+ it("matches the latest snapshot", async () => {
13
+ const rendered = render(<ColorPickerField {...props} />);
14
+ await waitForLoad(rendered);
15
+ expect(rendered.container).toMatchSnapshot();
23
16
  });
24
17
  });
@@ -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 { DateField } from "../DateField";
4
3
 
5
4
  describe("<DateField />", () => {
@@ -10,8 +9,9 @@ describe("<DateField />", () => {
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(<DateField {...props} />);
15
- expect(wrapper).toMatchSnapshot();
12
+ it("matches the latest snapshot", async () => {
13
+ const rendered = render(<DateField {...props} />);
14
+ await waitForLoad(rendered);
15
+ expect(rendered.container).toMatchSnapshot();
16
16
  });
17
17
  });
@@ -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 { DateTimeField } from "../DateTimeField";
4
3
 
5
4
  describe("<DateTimeField />", () => {
@@ -10,8 +9,9 @@ describe("<DateTimeField />", () => {
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(<DateTimeField {...props} />);
15
- expect(wrapper).toMatchSnapshot();
12
+ it("matches the latest snapshot", async () => {
13
+ const rendered = render(<DateTimeField {...props} />);
14
+ await waitForLoad(rendered);
15
+ expect(rendered.container).toMatchSnapshot();
16
16
  });
17
17
  });
@@ -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 { DomainPreview } from "../DomainPreview";
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("<DomainPreview />", () => {
9
- const props = { domains: [{ id: 1, external_id: "external_id" }] };
5
+ const props = { domains: [{ id: "1", external_id: "external_id" }] };
10
6
 
11
- it("matches the latest snapshot when value is object", () => {
12
- const wrapper = shallow(<DomainPreview {...props} />);
13
- expect(wrapper).toMatchSnapshot();
7
+ it("matches the latest snapshot when value is object", async () => {
8
+ const rendered = render(<DomainPreview {...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
  domains: [
19
- { id: 1, external_id: "external_id", name: "name" },
20
- { id: 2, external_id: "external_id1", name: "name1" },
16
+ { id: "1", external_id: "external_id", name: "name" },
17
+ { id: "2", external_id: "external_id1", name: "name1" },
21
18
  ],
22
19
  };
23
- const wrapper = shallow(<DomainPreview {...props} />);
24
- expect(wrapper).toMatchSnapshot();
20
+ const rendered = render(<DomainPreview {...props} />);
21
+ await waitForLoad(rendered);
22
+ expect(rendered.container).toMatchSnapshot();
25
23
  });
26
24
  });
@@ -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 { DropdownDataLoader } from "../DropdownDataLoader";
4
3
 
5
4
  describe("<DropdownDataLoader />", () => {
@@ -8,8 +7,9 @@ describe("<DropdownDataLoader />", () => {
8
7
  type: "system",
9
8
  };
10
9
 
11
- it("matches the latest snapshot when type system", () => {
12
- const wrapper = shallow(<DropdownDataLoader {...props} />);
13
- expect(wrapper).toMatchSnapshot();
10
+ it("matches the latest snapshot when type system", async () => {
11
+ const rendered = render(<DropdownDataLoader {...props} />);
12
+ await waitForLoad(rendered);
13
+ expect(rendered.container).toMatchSnapshot();
14
14
  });
15
15
  });
@@ -1,14 +1,8 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
3
- import { render } from "@truedat/test/render";
4
- import { DOMAINS_QUERY } from "@truedat/core/api/queries";
5
- import defaultMessages from "@truedat/test/messages";
6
- import { waitFor } from "@testing-library/react";
2
+ import { render, waitForLoad } from "@truedat/test/render";
3
+ import { domainsMock } from "@truedat/test/mocks";
7
4
  import { DropdownField } from "../DropdownField";
8
5
 
9
- // workaround for enzyme issue with React.useContext
10
- // see https://github.com/airbnb/enzyme/issues/2176#issuecomment-532361526
11
-
12
6
  describe("<DropdownField />", () => {
13
7
  const label = "label";
14
8
  const name = "name";
@@ -31,44 +25,39 @@ describe("<DropdownField />", () => {
31
25
  loading: false,
32
26
  };
33
27
 
34
- const domains = [{ id: "2", name: "Truedat", parentId: "", actions: [] }];
35
- const domainsMock = {
36
- request: { query: DOMAINS_QUERY, variables: {} },
37
- result: { data: { domains: domains } },
28
+ const variables = {
29
+ action: "manageConcept",
30
+ domainActions: undefined,
31
+ ids: undefined,
38
32
  };
39
33
 
40
- const messages = {
41
- en: { ...defaultMessages.en },
42
- };
43
34
  const renderOpts = {
44
- mocks: [domainsMock],
45
- messages,
46
- fallback: "lazy",
35
+ mocks: [domainsMock(variables)],
47
36
  };
48
37
 
49
38
  it("matches the latest snapshot", async () => {
50
- const { container, queryByText } = render(<DropdownField {...props} />);
51
- await waitFor(() => expect(queryByText(/lazy/i)).not.toBeInTheDocument());
52
- expect(container).toMatchSnapshot();
39
+ const rendered = render(<DropdownField {...props} />, renderOpts);
40
+ await waitForLoad(rendered);
41
+ expect(rendered.container).toMatchSnapshot();
53
42
  });
54
43
 
55
44
  it("matches the latest snapshot when type domain", async () => {
56
45
  const field = { ...fieldData, type: "domain" };
57
- const { container, queryByText } = render(
58
- <DropdownField {...{ ...props, field }} />
46
+ const rendered = render(
47
+ <DropdownField {...{ ...props, field }} />,
48
+ renderOpts
59
49
  );
60
- await waitFor(() => expect(queryByText(/lazy/i)).not.toBeInTheDocument());
61
- expect(container).toMatchSnapshot();
50
+ await waitForLoad(rendered);
51
+ expect(rendered.container).toMatchSnapshot();
62
52
  });
63
53
 
64
54
  it("renders loader when type system", async () => {
65
55
  const field = { ...fieldData, type: "system" };
66
- const { container, queryByText } = render(
56
+ const rendered = render(
67
57
  <DropdownField {...{ ...props, field }} />,
68
58
  renderOpts
69
59
  );
70
-
71
- await waitFor(() => expect(queryByText(/lazy/i)).not.toBeInTheDocument());
72
- expect(container).toMatchSnapshot();
60
+ await waitForLoad(rendered);
61
+ expect(rendered.container).toMatchSnapshot();
73
62
  });
74
63
  });
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { within } from "@testing-library/react";
4
3
  import { DynamicField } from "../DynamicField";
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import HierarchyDropdown from "../HierarchyDropdown";
4
3
 
@@ -8,7 +7,7 @@ describe("<HierarchyDropdown />", () => {
8
7
  name: "foo",
9
8
  cardinality: "*",
10
9
  value: "",
11
- values: { hierarchy: { id: 50, min_depth: null } },
10
+ values: { hierarchy: { id: "50", min_depth: null } },
12
11
  },
13
12
  onChange: jest.fn(),
14
13
  };
@@ -23,7 +22,7 @@ describe("<HierarchyDropdown />", () => {
23
22
  name: "foo",
24
23
  cardinality: "*",
25
24
  value: "",
26
- values: { hierarchy: { id: 50, min_depth: 0 } },
25
+ values: { hierarchy: { id: "50", min_depth: 0 } },
27
26
  },
28
27
  onChange: jest.fn(),
29
28
  };
@@ -39,7 +38,7 @@ describe("<HierarchyDropdown />", () => {
39
38
  name: "foo",
40
39
  cardinality: "*",
41
40
  value: "",
42
- values: { hierarchy: { id: 50, min_depth: 2 } },
41
+ values: { hierarchy: { id: "50", min_depth: 2 } },
43
42
  },
44
43
  onChange: jest.fn(),
45
44
  };
@@ -55,7 +54,7 @@ describe("<HierarchyDropdown />", () => {
55
54
  name: "foo",
56
55
  cardinality: "*",
57
56
  value: "",
58
- values: { hierarchy: { id: 50 } },
57
+ values: { hierarchy: { id: "50" } },
59
58
  },
60
59
  onChange: jest.fn(),
61
60
  };
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { waitFor } from "@testing-library/react";
4
3
  import userEvent from "@testing-library/user-event";
@@ -1,12 +1,6 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
3
- import { intl } from "@truedat/test/intl-stub";
1
+ import { render, waitForLoad } from "@truedat/test/render";
4
2
  import { ImageField } from "../ImageField";
5
3
 
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
4
  describe("<ImageField />", () => {
11
5
  const label = "label";
12
6
  const name = "name";
@@ -15,8 +9,9 @@ describe("<ImageField />", () => {
15
9
  const onChange = jest.fn();
16
10
  const props = { field: { label, name, value }, onChange };
17
11
 
18
- it("matches the latest snapshot", () => {
19
- const wrapper = shallow(<ImageField {...props} />);
20
- expect(wrapper).toMatchSnapshot();
12
+ it("matches the latest snapshot", async () => {
13
+ const rendered = render(<ImageField {...props} />);
14
+ await waitForLoad(rendered);
15
+ expect(rendered.container).toMatchSnapshot();
21
16
  });
22
17
  });
@@ -1,5 +1,5 @@
1
- import React from "react";
2
- import { shallow } from "enzyme";
1
+ import userEvent from "@testing-library/user-event";
2
+ import { render, waitForLoad } from "@truedat/test/render";
3
3
  import { NumberField } from "../NumberField";
4
4
 
5
5
  describe("<NumberField />", () => {
@@ -11,8 +11,26 @@ describe("<NumberField />", () => {
11
11
  const onChange = jest.fn();
12
12
  const props = { field: { label, name, type, cardinality, value }, onChange };
13
13
 
14
- it("matches the latest snapshot", () => {
15
- const wrapper = shallow(<NumberField {...props} />);
16
- expect(wrapper).toMatchSnapshot();
14
+ it("matches the latest snapshot", async () => {
15
+ const rendered = render(<NumberField {...props} />);
16
+ await waitForLoad(rendered);
17
+ expect(rendered.container).toMatchSnapshot();
18
+ });
19
+
20
+ it("call onChange function", async () => {
21
+ const rendered = render(<NumberField {...props} />);
22
+ await waitForLoad(rendered);
23
+
24
+ // Find the number input and simulate a change
25
+ const numberInput = rendered.container.querySelector(
26
+ 'input[type="number"]'
27
+ );
28
+ userEvent.clear(numberInput);
29
+ userEvent.type(numberInput, "42");
30
+
31
+ // Trigger blur to ensure the change is applied
32
+ userEvent.tab();
33
+
34
+ expect(onChange).toHaveBeenCalled();
17
35
  });
18
36
  });