@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,7 +1,6 @@
1
- import React from "react";
2
1
  import PropTypes from "prop-types";
3
2
  import { connect } from "react-redux";
4
- import { useHistory } from "react-router-dom";
3
+ import { useNavigate } from "react-router";
5
4
  import { Button, Container } from "semantic-ui-react";
6
5
  import { TEMPLATES } from "@truedat/core/routes";
7
6
  import { FormattedMessage } from "react-intl";
@@ -12,8 +11,8 @@ export const TemplateFormActions = ({
12
11
  onSave,
13
12
  isInvalid,
14
13
  }) => {
15
- const history = useHistory();
16
- const onCancel = () => history.push(TEMPLATES);
14
+ const navigate = useNavigate();
15
+ const onCancel = () => navigate(TEMPLATES);
17
16
  return (
18
17
  <Container textAlign="right">
19
18
  <Button
@@ -1,5 +1,5 @@
1
1
  import _ from "lodash/fp";
2
- import React, { useEffect } from "react";
2
+ import { useEffect } from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { Form, Segment } from "semantic-ui-react";
5
5
  import { useIntl } from "react-intl";
@@ -84,7 +84,6 @@ export const ValuesField = ({
84
84
  }
85
85
  />
86
86
  </Form.Field>
87
-
88
87
  {hasAiSuggestion ? (
89
88
  <Form.Field>
90
89
  <Form.Checkbox
@@ -100,7 +99,6 @@ export const ValuesField = ({
100
99
  />
101
100
  </Form.Field>
102
101
  ) : null}
103
-
104
102
  {_.includes(scope)(searchableEnabledScopes) ? (
105
103
  <Form.Field>
106
104
  <Form.Checkbox
@@ -1,5 +1,5 @@
1
1
  import _ from "lodash/fp";
2
- import React from "react";
2
+ import { Component } from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import { FormattedMessage } from "react-intl";
5
5
  import { Form, Icon, Label, List, Popup } from "semantic-ui-react";
@@ -14,7 +14,7 @@ const initialState = {
14
14
  domain: "",
15
15
  column_mandatory: false,
16
16
  };
17
- export class ValuesListForm extends React.Component {
17
+ export class ValuesListForm extends Component {
18
18
  state = initialState;
19
19
 
20
20
  handleSubmit = ({ key }) => {
@@ -107,7 +107,7 @@ export class ValuesListForm extends React.Component {
107
107
  } else {
108
108
  return (
109
109
  <List.Content>
110
- {value.value} / {value.text}
110
+ {value.value}/ {value.text}
111
111
  </List.Content>
112
112
  );
113
113
  }
@@ -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 { FormattedMessage } from "react-intl";
5
4
  import { Form, Label } from "semantic-ui-react";
@@ -1,19 +1,13 @@
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 { ActiveGroupForm } from "../ActiveGroupForm";
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("<ActiveGroupForm />", () => {
11
- it("matches the latest snapshot", () => {
5
+ it("matches the latest snapshot", async () => {
12
6
  const content = [
13
7
  {
14
8
  name: "Group name",
15
- fields: [{ name: "field_name" }]
16
- }
9
+ fields: [{ name: "field_name" }],
10
+ },
17
11
  ];
18
12
  const activeGroup = 0;
19
13
  const setActiveGroup = jest.fn();
@@ -23,9 +17,10 @@ describe("<ActiveGroupForm />", () => {
23
17
  content,
24
18
  activeGroup,
25
19
  setActiveGroup,
26
- onChange
20
+ onChange,
27
21
  };
28
- const wrapper = shallow(<ActiveGroupForm {...props} />);
29
- expect(wrapper).toMatchSnapshot();
22
+ const rendered = render(<ActiveGroupForm {...props} />);
23
+ await waitForLoad(rendered);
24
+ expect(rendered.container).toMatchSnapshot();
30
25
  });
31
26
  });
@@ -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 { DefaultValue } from "../DefaultValue";
4
4
 
5
5
  describe("<DefaultValue />", () => {
@@ -11,19 +11,20 @@ describe("<DefaultValue />", () => {
11
11
  const defaultField = "name.default";
12
12
  const props = {
13
13
  defaultField,
14
- field: { values, cardinality: "*" },
14
+ field: { values, cardinality: "*", default: { value: "x" } },
15
15
  fieldType,
16
16
  formatMessage,
17
17
  onChange,
18
18
  type,
19
19
  };
20
20
 
21
- it("matches the latest snapshot for null values", () => {
22
- const wrapper = shallow(<DefaultValue {...props} />);
23
- expect(wrapper).toMatchSnapshot();
21
+ it("matches the latest snapshot for null values", async () => {
22
+ const rendered = render(<DefaultValue {...props} />);
23
+ await waitForLoad(rendered);
24
+ expect(rendered.container).toMatchSnapshot();
24
25
  });
25
26
 
26
- it("renders date input when type is null and fieldType is date", () => {
27
+ it("renders date input when type is null and fieldType is date", async () => {
27
28
  const props = {
28
29
  defaultField,
29
30
  field: { [type]: "2020-05-19", cardinality: "+" },
@@ -32,13 +33,15 @@ describe("<DefaultValue />", () => {
32
33
  onChange,
33
34
  type: null,
34
35
  };
35
- const wrapper = shallow(<DefaultValue {...props} />);
36
- expect(wrapper.find("DateField").length).toBe(1);
37
- expect(wrapper.find("FormInput").length).toBe(0);
38
- expect(wrapper.find("FormDropdown").length).toBe(0);
36
+ const rendered = render(<DefaultValue {...props} />);
37
+ await waitForLoad(rendered);
38
+ expect(rendered.getByPlaceholderText(/date/i)).toBeInTheDocument();
39
+ expect(
40
+ rendered.container.querySelector(".dropdown")
41
+ ).not.toBeInTheDocument();
39
42
  });
40
43
 
41
- it("renders date time input when type is null and fieldType is date time", () => {
44
+ it("renders date time input when type is null and fieldType is date time", async () => {
42
45
  const props = {
43
46
  defaultField,
44
47
  field: { [type]: "2020-05-19 23:00", cardinality: "+" },
@@ -47,13 +50,15 @@ describe("<DefaultValue />", () => {
47
50
  onChange,
48
51
  type: null,
49
52
  };
50
- const wrapper = shallow(<DefaultValue {...props} />);
51
- expect(wrapper.find("DateTimeField").length).toBe(1);
52
- expect(wrapper.find("FormInput").length).toBe(0);
53
- expect(wrapper.find("FormDropdown").length).toBe(0);
53
+ const rendered = render(<DefaultValue {...props} />);
54
+ await waitForLoad(rendered);
55
+ expect(rendered.getByPlaceholderText(/date time/i)).toBeInTheDocument();
56
+ expect(
57
+ rendered.container.querySelector(".dropdown")
58
+ ).not.toBeInTheDocument();
54
59
  });
55
60
 
56
- it("renders number input when type is null and fieldType is number", () => {
61
+ it("renders number input when type is null and fieldType is number", async () => {
57
62
  const props = {
58
63
  defaultField,
59
64
  field: { [type]: 2, cardinality: "+" },
@@ -62,13 +67,20 @@ describe("<DefaultValue />", () => {
62
67
  onChange,
63
68
  type: null,
64
69
  };
65
- const wrapper = shallow(<DefaultValue {...props} />);
66
- expect(wrapper.find("NumberField").length).toBe(1);
67
- expect(wrapper.find("FormInput").length).toBe(0);
68
- expect(wrapper.find("FormDropdown").length).toBe(0);
70
+ const rendered = render(<DefaultValue {...props} />);
71
+ await waitForLoad(rendered);
72
+ expect(
73
+ rendered.container.querySelector("input[type='number']")
74
+ ).toBeInTheDocument();
75
+ expect(
76
+ rendered.container.querySelector("input[type='text']")
77
+ ).not.toBeInTheDocument();
78
+ expect(
79
+ rendered.container.querySelector(".dropdown")
80
+ ).not.toBeInTheDocument();
69
81
  });
70
82
 
71
- it("renders number input when type is null and fieldType is float", () => {
83
+ it("renders number input when type is null and fieldType is float", async () => {
72
84
  const props = {
73
85
  defaultField,
74
86
  field: { [type]: 2.4, cardinality: "+" },
@@ -77,28 +89,43 @@ describe("<DefaultValue />", () => {
77
89
  onChange,
78
90
  type: null,
79
91
  };
80
- const wrapper = shallow(<DefaultValue {...props} />);
81
- expect(wrapper.find("NumberField").length).toBe(1);
82
- expect(wrapper.find("FormInput").length).toBe(0);
83
- expect(wrapper.find("FormDropdown").length).toBe(0);
92
+ const rendered = render(<DefaultValue {...props} />);
93
+ await waitForLoad(rendered);
94
+ expect(
95
+ rendered.container.querySelector("input[type='number']")
96
+ ).toBeInTheDocument();
97
+ expect(
98
+ rendered.container.querySelector("input[type='text']")
99
+ ).not.toBeInTheDocument();
100
+ expect(
101
+ rendered.container.querySelector(".dropdown")
102
+ ).not.toBeInTheDocument();
84
103
  });
85
104
 
86
- it("renders form input when type is null and fieldType different from url, date, datetime and number", () => {
87
- const wrapper = shallow(<DefaultValue {...props} type={null} />);
88
- expect(wrapper.find("FormInput").length).toBe(1);
89
- expect(wrapper.find("FormDropdown").length).toBe(0);
105
+ it("renders form input when type is null and fieldType different from url, date, datetime and number", async () => {
106
+ const rendered = render(<DefaultValue {...props} type={null} />);
107
+ await waitForLoad(rendered);
108
+ expect(
109
+ rendered.container.querySelector("input[type='text']")
110
+ ).toBeInTheDocument();
111
+ expect(
112
+ rendered.container.querySelector(".dropdown")
113
+ ).not.toBeInTheDocument();
90
114
  });
91
115
 
92
- it("renders form dropdown when type is fixed", () => {
93
- const wrapper = shallow(<DefaultValue {...props} />);
94
- expect(wrapper.find("FormInput").length).toBe(0);
95
- expect(wrapper.find("FormDropdown").length).toBe(1);
116
+ it("renders form dropdown when type is fixed", async () => {
117
+ const rendered = render(<DefaultValue {...props} />);
118
+ await waitForLoad(rendered);
119
+ expect(
120
+ rendered.container.querySelector("input[type='text']")
121
+ ).not.toBeInTheDocument();
122
+ expect(rendered.container.querySelector(".dropdown")).toBeInTheDocument();
96
123
  });
97
124
 
98
- it("renders form dropdown when type is fixed, widget is dropdown, fieldType is string and cardinality ? or 1", () => {
99
- const cardinalityes = ["?", "1"];
125
+ it("renders form dropdown when type is fixed, widget is dropdown, fieldType is string and cardinality ? or 1", async () => {
126
+ const cardinalities = ["?", "1"];
100
127
 
101
- cardinalityes.forEach((cardinality) => {
128
+ for (const cardinality of cardinalities) {
102
129
  const props = {
103
130
  defaultField,
104
131
  field: { cardinality: cardinality, widget: "dropdown" },
@@ -108,18 +135,25 @@ describe("<DefaultValue />", () => {
108
135
  type: "fixed",
109
136
  };
110
137
 
111
- const wrapper = shallow(<DefaultValue {...props} />);
112
- expect(wrapper.find("DateTimeField").length).toBe(0);
113
- expect(wrapper.find("FormInput").length).toBe(0);
114
- expect(wrapper.find("FormDropdown").length).toBe(1);
115
- expect(wrapper.find("FormDropdown").prop("multiple")).toBe(undefined);
116
- });
138
+ const rendered = render(<DefaultValue {...props} />);
139
+ await waitForLoad(rendered);
140
+ expect(
141
+ rendered.container.querySelector("input[type='datetime-local']")
142
+ ).not.toBeInTheDocument();
143
+ expect(
144
+ rendered.container.querySelector("input[type='text']")
145
+ ).not.toBeInTheDocument();
146
+ expect(rendered.container.querySelector(".dropdown")).toBeInTheDocument();
147
+ expect(
148
+ rendered.container.querySelector(".dropdown.multiple")
149
+ ).not.toBeInTheDocument();
150
+ }
117
151
  });
118
152
 
119
- it("renders form dropdown multiple when widget is dropdown, fieldType is string and cardinality * or +", () => {
120
- const cardinalityes = ["*", "+"];
153
+ it("renders form dropdown multiple when widget is dropdown, fieldType is string and cardinality * or +", async () => {
154
+ const cardinalities = ["*", "+"];
121
155
 
122
- cardinalityes.forEach((cardinality) => {
156
+ for (const cardinality of cardinalities) {
123
157
  const props = {
124
158
  defaultField,
125
159
  field: { cardinality: cardinality, widget: "dropdown" },
@@ -129,18 +163,25 @@ describe("<DefaultValue />", () => {
129
163
  type: null,
130
164
  };
131
165
 
132
- const wrapper = shallow(<DefaultValue {...props} />);
133
- expect(wrapper.find("DateTimeField").length).toBe(0);
134
- expect(wrapper.find("FormInput").length).toBe(0);
135
- expect(wrapper.find("FormDropdown").length).toBe(1);
136
- expect(wrapper.find("FormDropdown").prop("multiple")).toBe(true);
137
- });
166
+ const rendered = render(<DefaultValue {...props} />);
167
+ await waitForLoad(rendered);
168
+ expect(
169
+ rendered.container.querySelector("input[type='datetime-local']")
170
+ ).not.toBeInTheDocument();
171
+ expect(
172
+ rendered.container.querySelector("input[type='text']")
173
+ ).not.toBeInTheDocument();
174
+ expect(rendered.container.querySelector(".dropdown")).toBeInTheDocument();
175
+ expect(
176
+ rendered.container.querySelector(".dropdown.multiple")
177
+ ).toBeInTheDocument();
178
+ }
138
179
  });
139
180
 
140
- it("renders form dropdown when widget is checkbox, fieldType is string and cardinality ? or 1", () => {
141
- const cardinalityes = ["?", "1"];
181
+ it("renders form dropdown when widget is checkbox, fieldType is string and cardinality ? or 1", async () => {
182
+ const cardinalities = ["?", "1"];
142
183
 
143
- cardinalityes.forEach((cardinality) => {
184
+ for (const cardinality of cardinalities) {
144
185
  const props = {
145
186
  defaultField,
146
187
  field: { cardinality: cardinality, widget: "checkbox" },
@@ -150,18 +191,25 @@ describe("<DefaultValue />", () => {
150
191
  type: "fixed",
151
192
  };
152
193
 
153
- const wrapper = shallow(<DefaultValue {...props} />);
154
- expect(wrapper.find("DateTimeField").length).toBe(0);
155
- expect(wrapper.find("FormInput").length).toBe(0);
156
- expect(wrapper.find("FormDropdown").length).toBe(1);
157
- expect(wrapper.find("FormDropdown").prop("multiple")).toBe(undefined);
158
- });
194
+ const rendered = render(<DefaultValue {...props} />);
195
+ await waitForLoad(rendered);
196
+ expect(
197
+ rendered.container.querySelector("input[type='datetime-local']")
198
+ ).not.toBeInTheDocument();
199
+ expect(
200
+ rendered.container.querySelector("input[type='text']")
201
+ ).not.toBeInTheDocument();
202
+ expect(rendered.container.querySelector(".dropdown")).toBeInTheDocument();
203
+ expect(
204
+ rendered.container.querySelector(".dropdown.multiple")
205
+ ).not.toBeInTheDocument();
206
+ }
159
207
  });
160
208
 
161
- it("renders form dropdown multiple when widget is checkbox, fieldType is string and cardinality * or +", () => {
162
- const cardinalityes = ["*", "+"];
209
+ it("renders form dropdown multiple when widget is checkbox, fieldType is string and cardinality * or +", async () => {
210
+ const cardinalities = ["*", "+"];
163
211
 
164
- cardinalityes.forEach((cardinality) => {
212
+ for (const cardinality of cardinalities) {
165
213
  const props = {
166
214
  defaultField,
167
215
  field: { cardinality: cardinality, widget: "checkbox" },
@@ -171,22 +219,31 @@ describe("<DefaultValue />", () => {
171
219
  type: null,
172
220
  };
173
221
 
174
- const wrapper = shallow(<DefaultValue {...props} />);
175
- expect(wrapper.find("DateTimeField").length).toBe(0);
176
- expect(wrapper.find("FormInput").length).toBe(0);
177
- expect(wrapper.find("FormDropdown").length).toBe(1);
178
- expect(wrapper.find("FormDropdown").prop("multiple")).toBe(true);
179
- expect(wrapper.find("FormDropdown").prop("search")).toBe(undefined);
180
- expect(wrapper.find("FormDropdown").prop("allowAdditions")).toBe(
181
- undefined
182
- );
183
- });
222
+ const rendered = render(<DefaultValue {...props} />);
223
+ await waitForLoad(rendered);
224
+ expect(
225
+ rendered.container.querySelector("input[type='datetime-local']")
226
+ ).not.toBeInTheDocument();
227
+ expect(
228
+ rendered.container.querySelector("input[type='text']")
229
+ ).not.toBeInTheDocument();
230
+ expect(rendered.container.querySelector(".dropdown")).toBeInTheDocument();
231
+ expect(
232
+ rendered.container.querySelector(".dropdown.multiple")
233
+ ).toBeInTheDocument();
234
+ expect(
235
+ rendered.container.querySelector(".dropdown.search")
236
+ ).not.toBeInTheDocument();
237
+ expect(
238
+ rendered.container.querySelector(".dropdown.allowAdditions")
239
+ ).not.toBeInTheDocument();
240
+ }
184
241
  });
185
242
 
186
- it("renders form input when fieldType is string and cardinality ? or 1", () => {
187
- const cardinalityes = ["?", "1"];
243
+ it("renders form input when fieldType is string and cardinality ? or 1", async () => {
244
+ const cardinalities = ["?", "1"];
188
245
 
189
- cardinalityes.forEach((cardinality) => {
246
+ for (const cardinality of cardinalities) {
190
247
  const props = {
191
248
  defaultField,
192
249
  field: { cardinality: cardinality, widget: "string" },
@@ -196,17 +253,24 @@ describe("<DefaultValue />", () => {
196
253
  type: null,
197
254
  };
198
255
 
199
- const wrapper = shallow(<DefaultValue {...props} />);
200
- expect(wrapper.find("DateTimeField").length).toBe(0);
201
- expect(wrapper.find("FormInput").length).toBe(1);
202
- expect(wrapper.find("FormDropdown").length).toBe(0);
203
- });
256
+ const rendered = render(<DefaultValue {...props} />);
257
+ await waitForLoad(rendered);
258
+ expect(
259
+ rendered.container.querySelector("input[type='datetime-local']")
260
+ ).not.toBeInTheDocument();
261
+ expect(
262
+ rendered.container.querySelector("input[type='text']")
263
+ ).toBeInTheDocument();
264
+ expect(
265
+ rendered.container.querySelector(".dropdown")
266
+ ).not.toBeInTheDocument();
267
+ }
204
268
  });
205
269
 
206
- it("renders form input when widget is string, fieldType is string and cardinality ? or 1", () => {
207
- const cardinalityes = ["?", "1"];
270
+ it("renders form input when widget is string, fieldType is string and cardinality ? or 1", async () => {
271
+ const cardinalities = ["?", "1"];
208
272
 
209
- cardinalityes.forEach((cardinality) => {
273
+ for (const cardinality of cardinalities) {
210
274
  const props = {
211
275
  defaultField,
212
276
  field: { cardinality: cardinality, widget: "string" },
@@ -216,17 +280,24 @@ describe("<DefaultValue />", () => {
216
280
  type: null,
217
281
  };
218
282
 
219
- const wrapper = shallow(<DefaultValue {...props} />);
220
- expect(wrapper.find("DateTimeField").length).toBe(0);
221
- expect(wrapper.find("FormInput").length).toBe(1);
222
- expect(wrapper.find("FormDropdown").length).toBe(0);
223
- });
283
+ const rendered = render(<DefaultValue {...props} />);
284
+ await waitForLoad(rendered);
285
+ expect(
286
+ rendered.container.querySelector("input[type='datetime-local']")
287
+ ).not.toBeInTheDocument();
288
+ expect(
289
+ rendered.container.querySelector("input[type='text']")
290
+ ).toBeInTheDocument();
291
+ expect(
292
+ rendered.container.querySelector(".dropdown")
293
+ ).not.toBeInTheDocument();
294
+ }
224
295
  });
225
296
 
226
- it("renders form dropdown multiple and allow additions when widget is string, fieldType is string and cardinality * or +", () => {
227
- const cardinalityes = ["*", "+"];
297
+ it("renders form dropdown multiple and allow additions when widget is string, fieldType is string and cardinality * or +", async () => {
298
+ const cardinalities = ["*", "+"];
228
299
 
229
- cardinalityes.forEach((cardinality) => {
300
+ for (const cardinality of cardinalities) {
230
301
  const props = {
231
302
  defaultField,
232
303
  field: { cardinality: cardinality, widget: "string" },
@@ -236,35 +307,49 @@ describe("<DefaultValue />", () => {
236
307
  type: null,
237
308
  };
238
309
 
239
- const wrapper = shallow(<DefaultValue {...props} />);
240
- expect(wrapper.find("DateTimeField").length).toBe(0);
241
- expect(wrapper.find("FormInput").length).toBe(0);
242
- expect(wrapper.find("FormDropdown").length).toBe(1);
243
- expect(wrapper.find("FormDropdown").prop("multiple")).toBe(true);
244
- expect(wrapper.find("FormDropdown").prop("search")).toBe(true);
245
- expect(wrapper.find("FormDropdown").prop("allowAdditions")).toBe(true);
246
- });
310
+ const rendered = render(<DefaultValue {...props} />);
311
+ await waitForLoad(rendered);
312
+ expect(
313
+ rendered.container.querySelector("input[type='datetime-local']")
314
+ ).not.toBeInTheDocument();
315
+ expect(rendered.container.querySelector(".dropdown")).toBeInTheDocument();
316
+ expect(
317
+ rendered.container.querySelector(".dropdown.multiple")
318
+ ).toBeInTheDocument();
319
+ expect(
320
+ rendered.container.querySelector(".dropdown.search")
321
+ ).toBeInTheDocument();
322
+ }
247
323
  });
248
324
 
249
- it("calls dropdown change", () => {
250
- const wrapper = shallow(<DefaultValue {...props} />);
251
- const input = wrapper.find("FormDropdown");
252
- input.simulate("change", null, { value: 3 });
253
- expect(onChange).toBeCalledWith(null, {
325
+ it("calls dropdown change", async () => {
326
+ const rendered = render(<DefaultValue {...props} />);
327
+ await waitForLoad(rendered);
328
+
329
+ const user = userEvent.setup({ delay: null });
330
+ const dropdown = rendered.container.querySelector(".dropdown");
331
+ await user.click(dropdown);
332
+ await user.click(rendered.getByText(/1/i));
333
+
334
+ expect(onChange).toHaveBeenCalledWith(null, {
254
335
  name: defaultField,
255
- value: { value: [3], origin: "default" },
336
+ value: { value: [1], origin: "default" },
256
337
  });
257
338
  });
258
339
 
259
- it("calls input change", () => {
260
- const wrapper = shallow(
340
+ it("calls input change", async () => {
341
+ const rendered = render(
261
342
  <DefaultValue {...props} type={null} field={{ cardinality: "1" }} />
262
343
  );
263
- const input = wrapper.find("FormInput");
264
- input.simulate("change", null, { value: 3 });
265
- expect(onChange).toBeCalledWith(null, {
344
+ await waitForLoad(rendered);
345
+
346
+ const user = userEvent.setup({ delay: null });
347
+ const input = rendered.container.querySelector("input");
348
+ await user.type(input, "3");
349
+
350
+ expect(onChange).toHaveBeenCalledWith(null, {
266
351
  name: defaultField,
267
- value: { value: 3, origin: "default" },
352
+ value: { value: "3", origin: "default" },
268
353
  });
269
354
  });
270
355
  });
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { waitFor } from "@testing-library/react";
3
2
  import userEvent from "@testing-library/user-event";
4
3
  import { render } from "@truedat/test/render";
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import { render } from "@truedat/test/render";
3
2
  import { DependentFormField } from "../DependentFormField";
4
3