@truedat/df 7.5.9 → 7.5.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +43 -67
- package/src/components/DynamicFieldValue.js +0 -1
- package/src/components/DynamicForm.js +5 -4
- package/src/components/DynamicFormViewer.js +0 -1
- package/src/components/DynamicFormWithTranslations.js +3 -3
- package/src/components/EditableDynamicFieldValue.js +1 -2
- package/src/components/FieldGroupDetail.js +0 -1
- package/src/components/FieldGroupSegment.js +17 -29
- package/src/components/FieldGroupWithTranslations.js +19 -38
- package/src/components/FieldViewerValue.js +4 -7
- package/src/components/OriginLabel.js +0 -1
- package/src/components/SelectDynamicFormWithTranslations.js +4 -6
- package/src/components/SelectableDynamicForm.js +5 -11
- package/src/components/__tests__/DynamicFieldValue.spec.js +0 -1
- package/src/components/__tests__/DynamicForm.spec.js +25 -23
- package/src/components/__tests__/EditableDynamicFieldValue.spec.js +0 -1
- package/src/components/__tests__/FieldGroupDetail.spec.js +0 -1
- package/src/components/__tests__/FieldViewerValue.spec.js +1 -6
- package/src/components/__tests__/SelectableDynamicForm.spec.js +102 -46
- package/src/components/__tests__/__snapshots__/DynamicFieldValue.spec.js.snap +2 -2
- package/src/components/__tests__/__snapshots__/DynamicForm.spec.js.snap +94 -81
- package/src/components/__tests__/__snapshots__/FieldGroupDetail.spec.js.snap +2 -2
- package/src/components/__tests__/__snapshots__/FieldViewerValue.spec.js.snap +1 -7
- package/src/components/__tests__/__snapshots__/SelectableDynamicForm.spec.js.snap +39 -39
- package/src/components/hierarchies/Hierarchies.js +2 -4
- package/src/components/hierarchies/HierarchiesView.js +1 -2
- package/src/components/hierarchies/HierarchyCrumbs.js +1 -2
- package/src/components/hierarchies/HierarchyRoutes.js +44 -39
- package/src/components/hierarchies/HierarchyView.js +4 -7
- package/src/components/hierarchies/__tests__/Hierarchies.spec.js +2 -3
- package/src/components/hierarchies/__tests__/HierarchiesView.spec.js +3 -7
- package/src/components/hierarchies/__tests__/HierarchyCrumbs.spec.js +0 -1
- package/src/components/hierarchies/__tests__/HierarchyRoutes.spec.js +79 -0
- package/src/components/hierarchies/__tests__/HierarchyView.spec.js +2 -10
- package/src/components/hierarchies/__tests__/__snapshots__/Hierarchies.spec.js.snap +1 -0
- package/src/components/hierarchies/__tests__/__snapshots__/HierarchiesView.spec.js.snap +7 -5
- package/src/components/hierarchies/__tests__/__snapshots__/HierarchyCrumbs.spec.js.snap +4 -2
- package/src/components/hierarchies/__tests__/__snapshots__/HierarchyRoutes.spec.js.snap +60 -0
- package/src/components/hierarchies/__tests__/__snapshots__/HierarchyView.spec.js.snap +8 -6
- package/src/components/widgets/CheckboxField.js +0 -1
- package/src/components/widgets/ColorPickerField.js +2 -3
- package/src/components/widgets/DateField.js +0 -1
- package/src/components/widgets/DateTimeField.js +0 -1
- package/src/components/widgets/DomainDropdown.js +1 -1
- package/src/components/widgets/DomainPreview.js +1 -2
- package/src/components/widgets/DropdownDataLoader.js +3 -3
- package/src/components/widgets/DropdownField.js +5 -4
- package/src/components/widgets/DynamicField.js +0 -5
- package/src/components/widgets/EnrichedTextField.js +0 -1
- package/src/components/widgets/HierarchyDropdown.js +1 -1
- package/src/components/widgets/HierarchyPreview.js +0 -1
- package/src/components/widgets/IdentifierField.js +0 -1
- package/src/components/widgets/ImageField.js +1 -1
- package/src/components/widgets/ImagePreview.js +0 -1
- package/src/components/widgets/NumberField.js +6 -7
- package/src/components/widgets/PairListField.js +5 -6
- package/src/components/widgets/PasswordField.js +1 -2
- package/src/components/widgets/RadioField.js +0 -1
- package/src/components/widgets/StandardDropdown.js +0 -1
- package/src/components/widgets/StringField.js +0 -1
- package/src/components/widgets/SystemPreview.js +2 -3
- package/src/components/widgets/TableField.js +5 -5
- package/src/components/widgets/TextField.js +1 -2
- package/src/components/widgets/__tests__/CheckboxField.spec.js +33 -23
- package/src/components/widgets/__tests__/ColorPickerField.spec.js +5 -12
- package/src/components/widgets/__tests__/DateField.spec.js +5 -5
- package/src/components/widgets/__tests__/DateTimeField.spec.js +5 -5
- package/src/components/widgets/__tests__/DomainPreview.spec.js +12 -14
- package/src/components/widgets/__tests__/DropdownDataLoader.spec.js +5 -5
- package/src/components/widgets/__tests__/DropdownField.spec.js +18 -29
- package/src/components/widgets/__tests__/DynamicField.spec.js +0 -1
- package/src/components/widgets/__tests__/HierarchyDropdown.spec.js +4 -5
- package/src/components/widgets/__tests__/HierarchyPreview.spec.js +0 -1
- package/src/components/widgets/__tests__/ImageField.spec.js +5 -10
- package/src/components/widgets/__tests__/NumberField.spec.js +23 -5
- package/src/components/widgets/__tests__/PairListField.spec.js +69 -59
- package/src/components/widgets/__tests__/PasswordField.spec.js +3 -4
- package/src/components/widgets/__tests__/RadioField.spec.js +5 -5
- package/src/components/widgets/__tests__/StandardDropdown.spec.js +45 -46
- package/src/components/widgets/__tests__/StringField.spec.js +10 -13
- package/src/components/widgets/__tests__/SystemPreview.spec.js +13 -15
- package/src/components/widgets/__tests__/TableField.spec.js +32 -32
- package/src/components/widgets/__tests__/TextField.spec.js +5 -5
- package/src/components/widgets/__tests__/__snapshots__/CheckboxField.spec.js.snap +58 -29
- package/src/components/widgets/__tests__/__snapshots__/ColorPickerField.spec.js.snap +221 -36
- package/src/components/widgets/__tests__/__snapshots__/DateField.spec.js.snap +21 -16
- package/src/components/widgets/__tests__/__snapshots__/DateTimeField.spec.js.snap +21 -20
- package/src/components/widgets/__tests__/__snapshots__/DomainPreview.spec.js.snap +26 -21
- package/src/components/widgets/__tests__/__snapshots__/DropdownDataLoader.spec.js.snap +1 -1
- package/src/components/widgets/__tests__/__snapshots__/DropdownField.spec.js.snap +93 -43
- package/src/components/widgets/__tests__/__snapshots__/DynamicField.spec.js.snap +2 -14
- package/src/components/widgets/__tests__/__snapshots__/ImageField.spec.js.snap +16 -28
- package/src/components/widgets/__tests__/__snapshots__/NumberField.spec.js.snap +11 -9
- package/src/components/widgets/__tests__/__snapshots__/PairListField.spec.js.snap +53 -39
- package/src/components/widgets/__tests__/__snapshots__/PasswordField.spec.js.snap +15 -8
- package/src/components/widgets/__tests__/__snapshots__/RadioField.spec.js.snap +41 -22
- package/src/components/widgets/__tests__/__snapshots__/StandardDropdown.spec.js.snap +78 -31
- package/src/components/widgets/__tests__/__snapshots__/StringField.spec.js.snap +78 -38
- package/src/components/widgets/__tests__/__snapshots__/SystemPreview.spec.js.snap +24 -21
- package/src/components/widgets/__tests__/__snapshots__/TableField.spec.js.snap +138 -174
- package/src/components/widgets/__tests__/__snapshots__/TextField.spec.js.snap +12 -7
- package/src/reducers/__tests__/dfMessage.spec.js +14 -18
- package/src/reducers/dfMessage.js +8 -7
- package/src/selectors/index.js +0 -1
- package/src/templates/components/NewTemplate.js +0 -1
- package/src/templates/components/Template.js +10 -3
- package/src/templates/components/TemplateCard.js +3 -4
- package/src/templates/components/TemplateCrumbs.js +2 -3
- package/src/templates/components/TemplateFilters.js +0 -1
- package/src/templates/components/TemplateLoader.js +25 -101
- package/src/templates/components/TemplateRoutes.js +29 -45
- package/src/templates/components/Templates.js +1 -5
- package/src/templates/components/TemplatesContext.js +3 -7
- package/src/templates/components/TemplatesTable.js +1 -2
- package/src/templates/components/__tests__/NewTemplate.spec.js +5 -10
- package/src/templates/components/__tests__/Template.spec.js +0 -1
- package/src/templates/components/__tests__/TemplateLoader.spec.js +71 -109
- package/src/templates/components/__tests__/TemplateRoutes.spec.js +63 -0
- package/src/templates/components/__tests__/TemplatesTable.spec.js +15 -9
- package/src/templates/components/__tests__/__snapshots__/NewTemplate.spec.js.snap +335 -22
- package/src/templates/components/__tests__/__snapshots__/Template.spec.js.snap +49 -48
- package/src/templates/components/__tests__/__snapshots__/TemplateLoader.spec.js.snap +7 -1
- package/src/templates/components/__tests__/__snapshots__/TemplateRoutes.spec.js.snap +38 -0
- package/src/templates/components/__tests__/__snapshots__/TemplatesTable.spec.js.snap +94 -1
- package/src/templates/components/index.js +1 -2
- package/src/templates/components/templateForm/ActiveGroupForm.js +1 -4
- package/src/templates/components/templateForm/ConditionalFieldForm.js +0 -1
- package/src/templates/components/templateForm/DefaultValue.js +0 -1
- package/src/templates/components/templateForm/DependentDomain.js +0 -1
- package/src/templates/components/templateForm/DependentFormField.js +0 -1
- package/src/templates/components/templateForm/FieldForm.js +5 -5
- package/src/templates/components/templateForm/GroupsList.js +0 -1
- package/src/templates/components/templateForm/HierarchiesList.js +1 -2
- package/src/templates/components/templateForm/MandatoryConditional.js +0 -1
- package/src/templates/components/templateForm/SwitchListForm.js +2 -2
- package/src/templates/components/templateForm/SwitchSegment.js +0 -1
- package/src/templates/components/templateForm/TemplateForm.js +1 -1
- package/src/templates/components/templateForm/TemplateFormActions.js +3 -4
- package/src/templates/components/templateForm/ValuesField.js +1 -3
- package/src/templates/components/templateForm/ValuesListForm.js +3 -3
- package/src/templates/components/templateForm/ValuesSelector.js +0 -1
- package/src/templates/components/templateForm/__tests__/ActiveGroupForm.spec.js +8 -13
- package/src/templates/components/templateForm/__tests__/DefaultValue.spec.js +198 -113
- package/src/templates/components/templateForm/__tests__/DependentDomain.spec.js +0 -1
- package/src/templates/components/templateForm/__tests__/DependentFormField.spec.js +0 -1
- package/src/templates/components/templateForm/__tests__/FieldForm.spec.js +106 -72
- package/src/templates/components/templateForm/__tests__/GroupsList.spec.js +7 -12
- package/src/templates/components/templateForm/__tests__/MandatoryConditional.spec.js +0 -1
- package/src/templates/components/templateForm/__tests__/SwitchListForm.spec.js +71 -50
- package/src/templates/components/templateForm/__tests__/SwitchSegment.spec.js +37 -62
- package/src/templates/components/templateForm/__tests__/TemplateForm.spec.js +0 -1
- package/src/templates/components/templateForm/__tests__/TemplateFormActions.spec.js +19 -15
- package/src/templates/components/templateForm/__tests__/ValuesField.spec.js +84 -62
- package/src/templates/components/templateForm/__tests__/ValuesListForm.spec.js +108 -144
- package/src/templates/components/templateForm/__tests__/ValuesSelector.spec.js +36 -36
- package/src/templates/components/templateForm/__tests__/__snapshots__/ActiveGroupForm.spec.js.snap +654 -86
- package/src/templates/components/templateForm/__tests__/__snapshots__/DefaultValue.spec.js.snap +45 -23
- package/src/templates/components/templateForm/__tests__/__snapshots__/FieldForm.spec.js.snap +1700 -1025
- package/src/templates/components/templateForm/__tests__/__snapshots__/GroupsList.spec.js.snap +44 -39
- package/src/templates/components/templateForm/__tests__/__snapshots__/SwitchListForm.spec.js.snap +225 -60
- package/src/templates/components/templateForm/__tests__/__snapshots__/SwitchSegment.spec.js.snap +1 -1
- package/src/templates/components/templateForm/__tests__/__snapshots__/TemplateForm.spec.js.snap +89 -92
- package/src/templates/components/templateForm/__tests__/__snapshots__/TemplateFormActions.spec.js.snap +66 -100
- package/src/templates/components/templateForm/__tests__/__snapshots__/ValuesField.spec.js.snap +542 -231
- package/src/templates/components/templateForm/__tests__/__snapshots__/ValuesListForm.spec.js.snap +264 -268
- package/src/templates/components/templateForm/__tests__/__snapshots__/ValuesSelector.spec.js.snap +146 -11
- package/src/templates/reducers/__tests__/allTemplates.spec.js +1 -1
- package/src/templates/reducers/__tests__/template.spec.js +3 -2
- package/src/templates/reducers/__tests__/templateLoading.spec.js +2 -2
- package/src/templates/reducers/__tests__/templates.spec.js +1 -1
- package/src/templates/reducers/__tests__/templatesLoading.spec.js +1 -1
- package/src/templates/reducers/allTemplates.js +1 -2
- package/src/templates/reducers/template.js +2 -1
- package/src/templates/reducers/templateRedirect.js +1 -1
- package/src/templates/reducers/templates.js +1 -1
- package/src/templates/reducers/templatesLoading.js +1 -1
- package/src/templates/routines.js +0 -2
- package/src/templates/sagas/__tests__/deleteTemplate.spec.js +2 -2
- package/src/templates/sagas/__tests__/fetchTemplates.spec.js +3 -6
- package/src/templates/sagas/__tests__/updateTemplate.spec.js +4 -4
- package/src/templates/sagas/deleteTemplate.js +1 -1
- package/src/templates/sagas/fetchTemplate.js +1 -1
- package/src/templates/sagas/fetchTemplates.js +1 -1
- package/src/templates/sagas/updateTemplate.js +1 -1
- package/src/templates/utils/filterSwitches.js +2 -2
- package/src/templates/utils/filterValues.js +2 -2
- package/src/api/hierarchies.js +0 -4
- package/src/components/FieldGroupCopy.js +0 -108
- package/src/components/FieldGroupSubSegment/FieldGroupSubSegment.js +0 -181
- package/src/components/FieldGroupSubSegment/__tests__/FieldGroupSubSegment.spec.js +0 -221
- package/src/components/FieldGroupSubSegment/__tests__/__snapshots__/FieldGroupSubSegment.spec.js.snap +0 -230
- package/src/components/FieldGroupSubSegment/constants.js +0 -68
- package/src/components/FieldGroupSubSegment/copyValidations.js +0 -75
- package/src/components/FieldGroupSubSegment/handleCopyModule.js +0 -186
- package/src/components/__tests__/FieldGroupCopy.spec.js +0 -14
- package/src/components/__tests__/__snapshots__/FieldGroupCopy.spec.js.snap +0 -307
- package/src/components/widgets/CopyField/CopyField.js +0 -270
- package/src/components/widgets/CopyField/CopyFieldCell.js +0 -138
- package/src/components/widgets/CopyField/CopyFieldColumn.js +0 -53
- package/src/components/widgets/CopyField/CopyFieldSelectableCell.js +0 -71
- package/src/components/widgets/CopyField/CustomStyles.js +0 -91
- package/src/components/widgets/CopyField/__tests__/CopyField.spec.js +0 -82
- package/src/components/widgets/CopyField/__tests__/CopyFieldCell.spec.js +0 -67
- package/src/components/widgets/CopyField/__tests__/CopyFieldColumn.spec.js +0 -33
- package/src/components/widgets/CopyField/__tests__/CopyFieldSelectableCell.spec.js +0 -49
- package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyField.spec.js.snap +0 -279
- package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyFieldCell.spec.js.snap +0 -67
- package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyFieldColumn.spec.js.snap +0 -42
- package/src/components/widgets/CopyField/__tests__/__snapshots__/CopyFieldSelectableCell.spec.js.snap +0 -60
- package/src/hooks/useHierarchies.js +0 -112
- package/src/selectors/subscopedTemplates.js +0 -16
- package/src/templates/components/TemplatesLoader.js +0 -24
- package/src/templates/components/__tests__/TemplatesLoader.spec.js +0 -29
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { render } from "@truedat/test/render";
|
|
4
|
-
import { intl } from "@truedat/test/intl-stub";
|
|
1
|
+
import userEvent from "@testing-library/user-event";
|
|
2
|
+
import { render, waitForLoad } from "@truedat/test/render";
|
|
5
3
|
import { FieldForm } from "../FieldForm";
|
|
6
4
|
|
|
7
|
-
// workaround for enzyme issue with React.useContext
|
|
8
|
-
// see https://github.com/airbnb/enzyme/issues/2176#issuecomment-532361526
|
|
9
|
-
jest.spyOn(React, "useContext").mockImplementation(() => intl);
|
|
10
|
-
|
|
11
5
|
describe("<FieldForm />", () => {
|
|
12
|
-
it("matches the latest snapshot", () => {
|
|
6
|
+
it("matches the latest snapshot", async () => {
|
|
13
7
|
const onDelete = jest.fn();
|
|
14
8
|
const onMove = jest.fn();
|
|
15
9
|
const onChange = jest.fn();
|
|
@@ -26,11 +20,12 @@ describe("<FieldForm />", () => {
|
|
|
26
20
|
const fieldIndex = 0;
|
|
27
21
|
const fieldCount = 1;
|
|
28
22
|
const props = { field, fieldIndex, fieldCount, onDelete, onMove, onChange };
|
|
29
|
-
const
|
|
30
|
-
|
|
23
|
+
const rendered = render(<FieldForm {...props} />);
|
|
24
|
+
await waitForLoad(rendered);
|
|
25
|
+
expect(rendered.container).toMatchSnapshot();
|
|
31
26
|
});
|
|
32
27
|
|
|
33
|
-
it("renders a FormInput disabled if editMode and disabled field are true", () => {
|
|
28
|
+
it("renders a FormInput disabled if editMode and disabled field are true", async () => {
|
|
34
29
|
const onDelete = jest.fn();
|
|
35
30
|
const onMove = jest.fn();
|
|
36
31
|
const onChange = jest.fn();
|
|
@@ -57,11 +52,14 @@ describe("<FieldForm />", () => {
|
|
|
57
52
|
onChange,
|
|
58
53
|
editMode,
|
|
59
54
|
};
|
|
60
|
-
const
|
|
61
|
-
|
|
55
|
+
const rendered = render(<FieldForm {...props} />);
|
|
56
|
+
await waitForLoad(rendered);
|
|
57
|
+
expect(
|
|
58
|
+
rendered.container.querySelector("input[name='undefined.fields[0].name']")
|
|
59
|
+
).toHaveAttribute("disabled");
|
|
62
60
|
});
|
|
63
61
|
|
|
64
|
-
it("renders ValuesField and manages onChange", () => {
|
|
62
|
+
it("renders ValuesField and manages onChange", async () => {
|
|
65
63
|
const onDelete = jest.fn();
|
|
66
64
|
const onMove = jest.fn();
|
|
67
65
|
const onChange = jest.fn();
|
|
@@ -85,25 +83,30 @@ describe("<FieldForm />", () => {
|
|
|
85
83
|
onMove,
|
|
86
84
|
onChange,
|
|
87
85
|
};
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
86
|
+
const rendered = render(<FieldForm {...props} />);
|
|
87
|
+
await waitForLoad(rendered);
|
|
88
|
+
expect(rendered.container).toMatchSnapshot();
|
|
89
|
+
|
|
90
|
+
const user = userEvent.setup({ delay: null });
|
|
91
|
+
const fixedTupleOption = rendered.getByText(
|
|
92
|
+
"template.field.values.fixed_tuple"
|
|
93
|
+
);
|
|
94
|
+
await user.click(fixedTupleOption);
|
|
95
|
+
|
|
96
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
97
|
+
expect.anything(),
|
|
98
|
+
expect.objectContaining({
|
|
99
|
+
name: "Group.fields[0].subscribable",
|
|
100
|
+
value: false,
|
|
101
|
+
})
|
|
102
|
+
);
|
|
103
|
+
expect(onChange).toHaveBeenCalledWith(null, {
|
|
101
104
|
name: "Group.fields[0].values",
|
|
102
105
|
value: { fixed_tuple: null },
|
|
103
106
|
});
|
|
104
107
|
});
|
|
105
108
|
|
|
106
|
-
it("manages handleWidgetChange", () => {
|
|
109
|
+
it("manages handleWidgetChange", async () => {
|
|
107
110
|
const onDelete = jest.fn();
|
|
108
111
|
const onMove = jest.fn();
|
|
109
112
|
const onChange = jest.fn();
|
|
@@ -127,26 +130,34 @@ describe("<FieldForm />", () => {
|
|
|
127
130
|
onMove,
|
|
128
131
|
onChange,
|
|
129
132
|
};
|
|
130
|
-
const
|
|
131
|
-
|
|
133
|
+
const rendered = render(<FieldForm {...props} />);
|
|
134
|
+
await waitForLoad(rendered);
|
|
132
135
|
|
|
133
|
-
|
|
134
|
-
|
|
136
|
+
const user = userEvent.setup({ delay: null });
|
|
137
|
+
const stringOption = rendered.getByText("Text Input");
|
|
138
|
+
await user.click(stringOption);
|
|
139
|
+
|
|
140
|
+
expect(onChange).toHaveBeenCalledWith(null, {
|
|
135
141
|
name: "Group.fields[0].values",
|
|
136
142
|
value: null,
|
|
137
143
|
});
|
|
138
|
-
expect(onChange).
|
|
144
|
+
expect(onChange).toHaveBeenCalledWith(expect.anything(), {
|
|
139
145
|
name: "Group.fields[0].default",
|
|
140
146
|
value: { value: "", origin: "default" },
|
|
141
147
|
});
|
|
142
|
-
expect(onChange).
|
|
148
|
+
expect(onChange).toHaveBeenCalledWith(expect.anything(), {
|
|
143
149
|
name: "Group.fields[0].subscribable",
|
|
144
150
|
value: false,
|
|
145
151
|
});
|
|
146
|
-
expect(onChange).
|
|
152
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
153
|
+
expect.anything(),
|
|
154
|
+
expect.objectContaining({
|
|
155
|
+
value: "string",
|
|
156
|
+
})
|
|
157
|
+
);
|
|
147
158
|
});
|
|
148
159
|
|
|
149
|
-
it("manages handleTypeChange", () => {
|
|
160
|
+
it("manages handleTypeChange", async () => {
|
|
150
161
|
const onDelete = jest.fn();
|
|
151
162
|
const onMove = jest.fn();
|
|
152
163
|
const onChange = jest.fn();
|
|
@@ -170,26 +181,43 @@ describe("<FieldForm />", () => {
|
|
|
170
181
|
onMove,
|
|
171
182
|
onChange,
|
|
172
183
|
};
|
|
173
|
-
const
|
|
174
|
-
|
|
184
|
+
const rendered = render(<FieldForm {...props} />);
|
|
185
|
+
await waitForLoad(rendered);
|
|
175
186
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
187
|
+
const user = userEvent.setup({ delay: null });
|
|
188
|
+
const stringOption = rendered.getByText("template.field.type.string");
|
|
189
|
+
await user.click(stringOption);
|
|
190
|
+
|
|
191
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
192
|
+
null,
|
|
193
|
+
expect.objectContaining({
|
|
194
|
+
name: "Group.fields[0].values",
|
|
195
|
+
value: { fixed: null },
|
|
196
|
+
})
|
|
197
|
+
);
|
|
198
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
199
|
+
expect.anything(),
|
|
200
|
+
expect.objectContaining({
|
|
201
|
+
name: "Group.fields[0].default",
|
|
202
|
+
value: { value: "", origin: "default" },
|
|
203
|
+
})
|
|
204
|
+
);
|
|
205
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
206
|
+
expect.anything(),
|
|
207
|
+
expect.objectContaining({
|
|
208
|
+
name: "Group.fields[0].subscribable",
|
|
209
|
+
value: false,
|
|
210
|
+
})
|
|
211
|
+
);
|
|
212
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
213
|
+
expect.anything(),
|
|
214
|
+
expect.objectContaining({
|
|
215
|
+
value: "string",
|
|
216
|
+
})
|
|
217
|
+
);
|
|
190
218
|
});
|
|
191
219
|
|
|
192
|
-
it("renders MandatoryConditional", () => {
|
|
220
|
+
it("renders MandatoryConditional", async () => {
|
|
193
221
|
const allFields = [
|
|
194
222
|
{
|
|
195
223
|
name: "foo",
|
|
@@ -239,13 +267,15 @@ describe("<FieldForm />", () => {
|
|
|
239
267
|
onMove,
|
|
240
268
|
onChange,
|
|
241
269
|
};
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
expect(
|
|
270
|
+
const rendered = render(<FieldForm {...props} />);
|
|
271
|
+
await waitForLoad(rendered);
|
|
272
|
+
expect(rendered.container).toMatchSnapshot();
|
|
273
|
+
expect(
|
|
274
|
+
rendered.getByText(/template.field.mandatory.depends.to_be/i)
|
|
275
|
+
).toBeInTheDocument();
|
|
246
276
|
});
|
|
247
277
|
|
|
248
|
-
it("manages handleCardinalityChange", () => {
|
|
278
|
+
it("manages handleCardinalityChange", async () => {
|
|
249
279
|
const allFields = [
|
|
250
280
|
{
|
|
251
281
|
name: "foo",
|
|
@@ -280,6 +310,7 @@ describe("<FieldForm />", () => {
|
|
|
280
310
|
const field = {
|
|
281
311
|
name: "name",
|
|
282
312
|
label: "Name",
|
|
313
|
+
widget: "dropdown",
|
|
283
314
|
mandatory: { on: "bar", to_be: ["3"] },
|
|
284
315
|
cardinality: "?",
|
|
285
316
|
};
|
|
@@ -295,20 +326,23 @@ describe("<FieldForm />", () => {
|
|
|
295
326
|
onMove,
|
|
296
327
|
onChange,
|
|
297
328
|
};
|
|
298
|
-
const
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
name: "Group.fields[0].cardinality",
|
|
305
|
-
value: "1",
|
|
306
|
-
});
|
|
307
|
-
expect(onChange.mock.calls[0][1]).toEqual({
|
|
308
|
-
name: "Group.fields[0].cardinality",
|
|
309
|
-
value: "1",
|
|
329
|
+
const rendered = render(<FieldForm {...props} />);
|
|
330
|
+
await waitForLoad(rendered);
|
|
331
|
+
|
|
332
|
+
const user = userEvent.setup({ delay: null });
|
|
333
|
+
const oneOption = rendered.getByRole("option", {
|
|
334
|
+
name: "template.field.cardinality.1",
|
|
310
335
|
});
|
|
311
|
-
|
|
336
|
+
await user.click(oneOption);
|
|
337
|
+
|
|
338
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
339
|
+
expect.anything(),
|
|
340
|
+
expect.objectContaining({
|
|
341
|
+
name: "Group.fields[0].cardinality",
|
|
342
|
+
value: "1",
|
|
343
|
+
})
|
|
344
|
+
);
|
|
345
|
+
expect(onChange).toHaveBeenCalledWith(expect.anything(), {
|
|
312
346
|
name: "Group.fields[0].mandatory",
|
|
313
347
|
value: null,
|
|
314
348
|
});
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { shallow } from "enzyme";
|
|
3
|
-
import { intl } from "@truedat/test/intl-stub";
|
|
1
|
+
import { render, waitForLoad } from "@truedat/test/render";
|
|
4
2
|
import { GroupsList } from "../GroupsList";
|
|
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("<GroupsList />", () => {
|
|
11
|
-
it("matches the latest snapshot", () => {
|
|
5
|
+
it("matches the latest snapshot", async () => {
|
|
12
6
|
const groups = [
|
|
13
7
|
{ name: "group1", fields: [] },
|
|
14
8
|
{ name: "group2", fields: [] },
|
|
15
|
-
{ name: "group3", fields: [] }
|
|
9
|
+
{ name: "group3", fields: [] },
|
|
16
10
|
];
|
|
17
11
|
const activeGroup = 1;
|
|
18
12
|
const onAddGroup = jest.fn();
|
|
@@ -21,9 +15,10 @@ describe("<GroupsList />", () => {
|
|
|
21
15
|
groups,
|
|
22
16
|
activeGroup,
|
|
23
17
|
onAddGroup,
|
|
24
|
-
onSelectGroup
|
|
18
|
+
onSelectGroup,
|
|
25
19
|
};
|
|
26
|
-
const
|
|
27
|
-
|
|
20
|
+
const rendered = render(<GroupsList {...props} />);
|
|
21
|
+
await waitForLoad(rendered);
|
|
22
|
+
expect(rendered.container).toMatchSnapshot();
|
|
28
23
|
});
|
|
29
24
|
});
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
1
|
+
import userEvent from "@testing-library/user-event";
|
|
2
|
+
import { render, waitForLoad } from "@truedat/test/render";
|
|
3
|
+
import SwitchListForm from "../SwitchListForm";
|
|
4
4
|
|
|
5
5
|
describe("<SwitchListForm />", () => {
|
|
6
|
-
it("matches the latest snapshot for null values", () => {
|
|
6
|
+
it("matches the latest snapshot for null values", async () => {
|
|
7
7
|
const values = {
|
|
8
8
|
on: "test",
|
|
9
9
|
values: {
|
|
@@ -17,11 +17,13 @@ describe("<SwitchListForm />", () => {
|
|
|
17
17
|
onChange,
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
-
const
|
|
21
|
-
|
|
20
|
+
const rendered = render(<SwitchListForm {...props} />);
|
|
21
|
+
await waitForLoad(rendered);
|
|
22
|
+
expect(rendered.container).toMatchSnapshot();
|
|
22
23
|
});
|
|
23
24
|
|
|
24
|
-
it("test change field on", () => {
|
|
25
|
+
it("test change field on", async () => {
|
|
26
|
+
const user = userEvent.setup({ delay: null });
|
|
25
27
|
const values = {
|
|
26
28
|
on: "test",
|
|
27
29
|
values: {
|
|
@@ -34,14 +36,18 @@ describe("<SwitchListForm />", () => {
|
|
|
34
36
|
values,
|
|
35
37
|
onChange,
|
|
36
38
|
};
|
|
37
|
-
const
|
|
39
|
+
const rendered = render(<SwitchListForm {...props} />);
|
|
40
|
+
await waitForLoad(rendered);
|
|
38
41
|
|
|
39
|
-
const input =
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
const input = rendered.getByPlaceholderText(
|
|
43
|
+
/template.field.values.switch_field/i
|
|
44
|
+
);
|
|
45
|
+
await user.type(input, "1");
|
|
46
|
+
expect(onChange).toHaveBeenCalledWith({ ...values, on: "test1" });
|
|
42
47
|
});
|
|
43
48
|
|
|
44
|
-
it("test remove value", () => {
|
|
49
|
+
it("test remove value", async () => {
|
|
50
|
+
const user = userEvent.setup({ delay: null });
|
|
45
51
|
const values = {
|
|
46
52
|
on: "test",
|
|
47
53
|
values: {
|
|
@@ -54,18 +60,21 @@ describe("<SwitchListForm />", () => {
|
|
|
54
60
|
values,
|
|
55
61
|
onChange,
|
|
56
62
|
};
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
const rendered = render(<SwitchListForm {...props} />);
|
|
64
|
+
await waitForLoad(rendered);
|
|
65
|
+
|
|
66
|
+
const deleteButton = rendered.container.querySelectorAll(
|
|
67
|
+
".remove.circle.link.icon"
|
|
68
|
+
)[0];
|
|
69
|
+
await user.click(deleteButton);
|
|
70
|
+
expect(onChange).toHaveBeenCalledWith({
|
|
71
|
+
...values,
|
|
72
|
+
values: { b: ["3", "4"] },
|
|
73
|
+
});
|
|
66
74
|
});
|
|
67
75
|
|
|
68
|
-
it("test change list value", () => {
|
|
76
|
+
it("test change list value", async () => {
|
|
77
|
+
const user = userEvent.setup({ delay: null });
|
|
69
78
|
const values = {
|
|
70
79
|
on: "test",
|
|
71
80
|
values: {
|
|
@@ -78,21 +87,26 @@ describe("<SwitchListForm />", () => {
|
|
|
78
87
|
values,
|
|
79
88
|
onChange,
|
|
80
89
|
};
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
.
|
|
86
|
-
|
|
90
|
+
const rendered = render(<SwitchListForm {...props} />);
|
|
91
|
+
await waitForLoad(rendered);
|
|
92
|
+
|
|
93
|
+
const valueInput = rendered.getAllByPlaceholderText(
|
|
94
|
+
/template.field.values.add_value/i
|
|
95
|
+
)[0];
|
|
96
|
+
await user.clear(valueInput);
|
|
97
|
+
await user.type(valueInput, "5{enter}");
|
|
98
|
+
|
|
99
|
+
expect(onChange).toHaveBeenCalledWith({
|
|
87
100
|
...values,
|
|
88
101
|
values: {
|
|
89
|
-
a: ["5"],
|
|
102
|
+
a: ["1", "2", "5"],
|
|
90
103
|
b: ["3", "4"],
|
|
91
104
|
},
|
|
92
105
|
});
|
|
93
106
|
});
|
|
94
107
|
|
|
95
|
-
it("test add new value", () => {
|
|
108
|
+
it("test add new value", async () => {
|
|
109
|
+
const user = userEvent.setup({ delay: null });
|
|
96
110
|
const values = {
|
|
97
111
|
on: "test",
|
|
98
112
|
values: {
|
|
@@ -105,16 +119,16 @@ describe("<SwitchListForm />", () => {
|
|
|
105
119
|
values,
|
|
106
120
|
onChange,
|
|
107
121
|
};
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
const input = wrapper.find("FormInput").at(1);
|
|
111
|
-
input.simulate("change", null, { value: "Test" });
|
|
122
|
+
const rendered = render(<SwitchListForm {...props} />);
|
|
123
|
+
await waitForLoad(rendered);
|
|
112
124
|
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
125
|
+
const newValueInput = rendered.container.querySelector(
|
|
126
|
+
"input[placeholder='template.field.values.add_switch_value']"
|
|
127
|
+
);
|
|
128
|
+
await user.type(newValueInput, "Test");
|
|
129
|
+
await user.keyboard("{Enter}");
|
|
116
130
|
|
|
117
|
-
expect(onChange).
|
|
131
|
+
expect(onChange).toHaveBeenCalledWith({
|
|
118
132
|
...values,
|
|
119
133
|
values: {
|
|
120
134
|
Test: [],
|
|
@@ -124,7 +138,8 @@ describe("<SwitchListForm />", () => {
|
|
|
124
138
|
});
|
|
125
139
|
});
|
|
126
140
|
|
|
127
|
-
it("test input error", () => {
|
|
141
|
+
it("test input error", async () => {
|
|
142
|
+
const user = userEvent.setup({ delay: null });
|
|
128
143
|
const values = {
|
|
129
144
|
on: "test",
|
|
130
145
|
values: {
|
|
@@ -137,21 +152,27 @@ describe("<SwitchListForm />", () => {
|
|
|
137
152
|
values,
|
|
138
153
|
onChange,
|
|
139
154
|
};
|
|
140
|
-
const
|
|
155
|
+
const rendered = render(<SwitchListForm {...props} />);
|
|
156
|
+
await waitForLoad(rendered);
|
|
141
157
|
|
|
142
|
-
const
|
|
143
|
-
|
|
158
|
+
const newValueInput = rendered.getByPlaceholderText(
|
|
159
|
+
/template.field.values.add_switch_value/i
|
|
160
|
+
);
|
|
161
|
+
await user.type(newValueInput, "a");
|
|
144
162
|
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
expect(
|
|
148
|
-
input2.simulate("keyPress", { key: "Enter" });
|
|
163
|
+
const field = newValueInput.parentElement.parentElement;
|
|
164
|
+
// Check for error state
|
|
165
|
+
expect(field.classList.contains("error")).toBe(true);
|
|
149
166
|
|
|
167
|
+
// Try to submit with error
|
|
168
|
+
await user.keyboard("{Enter}");
|
|
150
169
|
expect(onChange).not.toHaveBeenCalled();
|
|
151
170
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
171
|
+
// Fix the error
|
|
172
|
+
await user.clear(newValueInput);
|
|
173
|
+
await user.type(newValueInput, "aa");
|
|
174
|
+
|
|
175
|
+
// Check error is gone
|
|
176
|
+
expect(field.classList.contains("error")).toBe(false);
|
|
156
177
|
});
|
|
157
178
|
});
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { waitFor } from "@testing-library/react";
|
|
3
1
|
import userEvent from "@testing-library/user-event";
|
|
4
|
-
import { render } from "@truedat/test/render";
|
|
2
|
+
import { render, waitForLoad } from "@truedat/test/render";
|
|
5
3
|
import { SwitchSegment } from "../SwitchSegment";
|
|
6
4
|
|
|
7
5
|
describe("<SwitchSegment />", () => {
|
|
@@ -23,79 +21,56 @@ describe("<SwitchSegment />", () => {
|
|
|
23
21
|
value,
|
|
24
22
|
title,
|
|
25
23
|
};
|
|
26
|
-
const renderOpts = {
|
|
27
|
-
messages: {
|
|
28
|
-
en: {
|
|
29
|
-
"template.field.values.default.omit": "omit",
|
|
30
|
-
"template.field.values.default": "default",
|
|
31
|
-
"template.field.values.add_value": "add",
|
|
32
|
-
"template.field.values.add_value.label": "List value",
|
|
33
|
-
"template.field.values.add_text": "add text",
|
|
34
|
-
"template.field.values.add_format": "add format",
|
|
35
|
-
"template.field.values.add_file_config": "file config",
|
|
36
|
-
"template.widget.copy.char.separator.format": "separator",
|
|
37
|
-
"template.widget.copy.without.fixed.column": "column",
|
|
38
|
-
"template.widget.copy.fixed.column": "fixed column",
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
};
|
|
42
24
|
|
|
43
|
-
it("matches the latest snapshot", () => {
|
|
44
|
-
const
|
|
45
|
-
|
|
25
|
+
it("matches the latest snapshot", async () => {
|
|
26
|
+
const rendered = render(<SwitchSegment {...props} />);
|
|
27
|
+
await waitForLoad(rendered);
|
|
28
|
+
expect(rendered.container).toMatchSnapshot();
|
|
46
29
|
});
|
|
47
30
|
|
|
48
31
|
it("handles onDefaultValueChange addition", async () => {
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
renderOpts
|
|
52
|
-
);
|
|
53
|
-
await waitFor(() => {
|
|
54
|
-
expect(findByText(/foo/)).toBeTruthy();
|
|
55
|
-
});
|
|
32
|
+
const rendered = render(<SwitchSegment {...props} />);
|
|
33
|
+
await waitForLoad(rendered);
|
|
56
34
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
35
|
+
expect(rendered.getByText(/foo/i)).toBeInTheDocument();
|
|
36
|
+
expect(rendered.getByText(/bar/i)).toBeInTheDocument();
|
|
37
|
+
expect(rendered.getByText(/baz/i)).toBeInTheDocument();
|
|
60
38
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
);
|
|
69
|
-
expect(onDefaultValueChange).toHaveBeenCalledWith({ 1: "foo" });
|
|
70
|
-
});
|
|
39
|
+
const user = userEvent.setup({ delay: null });
|
|
40
|
+
await user.click(
|
|
41
|
+
rendered.container.querySelectorAll(
|
|
42
|
+
'[class="circle outline link icon"]'
|
|
43
|
+
)[0]
|
|
44
|
+
);
|
|
45
|
+
expect(onDefaultValueChange).toHaveBeenCalledWith({ 1: "foo" });
|
|
71
46
|
|
|
72
|
-
await
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
)
|
|
76
|
-
|
|
77
|
-
});
|
|
47
|
+
await user.click(
|
|
48
|
+
rendered.container.querySelectorAll(
|
|
49
|
+
'[class="circle outline link icon"]'
|
|
50
|
+
)[1]
|
|
51
|
+
);
|
|
52
|
+
expect(onDefaultValueChange).toHaveBeenCalledWith({ 1: "bar" });
|
|
78
53
|
|
|
79
|
-
await
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
)
|
|
83
|
-
|
|
84
|
-
});
|
|
54
|
+
await user.click(
|
|
55
|
+
rendered.container.querySelectorAll(
|
|
56
|
+
'[class="circle outline link icon"]'
|
|
57
|
+
)[2]
|
|
58
|
+
);
|
|
59
|
+
expect(onDefaultValueChange).toHaveBeenCalledWith({ 1: "baz" });
|
|
85
60
|
});
|
|
86
61
|
|
|
87
62
|
it("handles onDefaultValueChange removal", async () => {
|
|
88
63
|
onDefaultValueChange.mockClear();
|
|
89
64
|
const updatedProps = { ...props, defaultValue: { 1: "foo" } };
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
65
|
+
const rendered = render(<SwitchSegment {...updatedProps} />);
|
|
66
|
+
await waitForLoad(rendered);
|
|
67
|
+
|
|
68
|
+
const user = userEvent.setup({ delay: null });
|
|
69
|
+
await user.click(
|
|
70
|
+
rendered.container.querySelector(
|
|
71
|
+
'[class="check circle outline link icon"]'
|
|
72
|
+
)
|
|
93
73
|
);
|
|
94
|
-
await waitFor(() => {
|
|
95
|
-
userEvent.click(
|
|
96
|
-
container.querySelector('[class="check circle outline link icon"]')
|
|
97
|
-
);
|
|
98
|
-
});
|
|
99
74
|
expect(onDefaultValueChange).toHaveBeenCalledWith({});
|
|
100
75
|
});
|
|
101
76
|
});
|