@truedat/df 5.7.7 → 5.8.1
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 +5 -5
- package/src/components/hierarchies/HierarchyView.js +1 -0
- package/src/components/widgets/DynamicField.js +16 -1
- package/src/components/widgets/HierarchyDropdown.js +0 -1
- package/src/components/widgets/__tests__/HierarchyDropdown.spec.js +1 -1
- package/src/messages/en.js +3 -0
- package/src/messages/es.js +3 -0
- package/src/templates/components/templateForm/DefaultValue.js +62 -4
- package/src/templates/components/templateForm/HierarchiesList.js +18 -11
- package/src/templates/components/templateForm/__tests__/DefaultValue.spec.js +158 -7
- package/src/templates/components/templateForm/__tests__/__snapshots__/DefaultValue.spec.js.snap +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@truedat/df",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.8.1",
|
|
4
4
|
"description": "Truedat Web Data Quality Module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"jsnext:main": "src/index.js",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"@testing-library/jest-dom": "^5.16.5",
|
|
35
35
|
"@testing-library/react": "^12.0.0",
|
|
36
36
|
"@testing-library/user-event": "^13.2.1",
|
|
37
|
-
"@truedat/test": "5.
|
|
37
|
+
"@truedat/test": "5.8.1",
|
|
38
38
|
"babel-jest": "^28.1.0",
|
|
39
39
|
"babel-plugin-dynamic-import-node": "^2.3.3",
|
|
40
40
|
"babel-plugin-lodash": "^3.3.4",
|
|
@@ -87,8 +87,8 @@
|
|
|
87
87
|
},
|
|
88
88
|
"dependencies": {
|
|
89
89
|
"@apollo/client": "^3.7.1",
|
|
90
|
-
"@truedat/auth": "5.
|
|
91
|
-
"@truedat/core": "5.
|
|
90
|
+
"@truedat/auth": "5.8.1",
|
|
91
|
+
"@truedat/core": "5.8.1",
|
|
92
92
|
"decode-uri-component": "^0.2.2",
|
|
93
93
|
"path-to-regexp": "^1.7.0",
|
|
94
94
|
"prop-types": "^15.8.1",
|
|
@@ -109,5 +109,5 @@
|
|
|
109
109
|
"react-dom": ">= 16.8.6 < 17",
|
|
110
110
|
"semantic-ui-react": ">= 2.0.3 < 2.2"
|
|
111
111
|
},
|
|
112
|
-
"gitHead": "
|
|
112
|
+
"gitHead": "aacafb9e014ac8d1193a5dc2a37c92ea36c3d816"
|
|
113
113
|
}
|
|
@@ -82,9 +82,24 @@ export const DynamicField = ({
|
|
|
82
82
|
}) => (
|
|
83
83
|
<Form.Field disabled={!editable && isModification} data-testid="form-field">
|
|
84
84
|
<label>
|
|
85
|
-
{label
|
|
85
|
+
{(label && fieldProps.type != "hierarchy") ||
|
|
86
|
+
(fieldProps.type == "hierarchy" &&
|
|
87
|
+
fieldProps.values.hierarchy.min_depth == 0) ? (
|
|
86
88
|
<FormattedMessage id={`fields.${label}`} defaultMessage={label} />
|
|
87
89
|
) : null}
|
|
90
|
+
{label &&
|
|
91
|
+
fieldProps.type == "hierarchy" &&
|
|
92
|
+
fieldProps.values.hierarchy.min_depth > 0 ? (
|
|
93
|
+
<>
|
|
94
|
+
<FormattedMessage id={`fields.${label}`} defaultMessage={label} />
|
|
95
|
+
<Label pointing="left">
|
|
96
|
+
<FormattedMessage
|
|
97
|
+
id="hierarchy.selectable.mindepth"
|
|
98
|
+
values={{ depth: fieldProps.values.hierarchy.min_depth }}
|
|
99
|
+
/>
|
|
100
|
+
</Label>
|
|
101
|
+
</>
|
|
102
|
+
) : null}
|
|
88
103
|
{fieldProps?.required && (
|
|
89
104
|
<span
|
|
90
105
|
style={{
|
package/src/messages/en.js
CHANGED
|
@@ -26,6 +26,7 @@ export default {
|
|
|
26
26
|
"hierarchy.name": "Hierarchy name",
|
|
27
27
|
"hierarchy.new_node": "New node",
|
|
28
28
|
"hierarchy.node": "Node",
|
|
29
|
+
"hierarchy.selectable.mindepth": "Selectable minimum level: {depth}",
|
|
29
30
|
"navigation.admin.templates": "Templates",
|
|
30
31
|
"navigation.hierarchies": "Hierarchies",
|
|
31
32
|
"navigation.templates": "Templates",
|
|
@@ -69,6 +70,8 @@ export default {
|
|
|
69
70
|
"template.field.type.copy": "File Structure",
|
|
70
71
|
"template.field.type.date": "Date",
|
|
71
72
|
"template.field.type.datetime": "Date Time",
|
|
73
|
+
"template.field.type.depth":
|
|
74
|
+
"Selectable minimun level (to allow everything, set value: 0)",
|
|
72
75
|
"template.field.type.domain": "Domain",
|
|
73
76
|
"template.field.type.enriched_text": "Enriched text",
|
|
74
77
|
"template.field.type.float": "Float",
|
package/src/messages/es.js
CHANGED
|
@@ -26,6 +26,7 @@ export default {
|
|
|
26
26
|
"hierarchy.name": "Nombre de jerarquía",
|
|
27
27
|
"hierarchy.new_node": "Nuevo nodo",
|
|
28
28
|
"hierarchy.node": "Nodo",
|
|
29
|
+
"hierarchy.selectable.mindepth": "Nivel minimo seleccionable: {depth}",
|
|
29
30
|
"navigation.admin.templates": "Plantillas",
|
|
30
31
|
"navigation.hierarchies": "Jerarquías",
|
|
31
32
|
"navigation.templates": "Plantillas",
|
|
@@ -69,6 +70,8 @@ export default {
|
|
|
69
70
|
"template.field.type.copy": "Estructura de Fichero",
|
|
70
71
|
"template.field.type.date": "Fecha",
|
|
71
72
|
"template.field.type.datetime": "Fecha Hora",
|
|
73
|
+
"template.field.type.depth":
|
|
74
|
+
"Nivel mínimo seleccionable (para permitir todo, establecer valor: 0)",
|
|
72
75
|
"template.field.type.domain": "Dominio",
|
|
73
76
|
"template.field.type.enriched_text": "Texto enriquecido",
|
|
74
77
|
"template.field.type.float": "Decimal",
|
|
@@ -7,6 +7,14 @@ import DateTimeField from "../../../components/widgets/DateTimeField";
|
|
|
7
7
|
import DateField from "../../../components/widgets/DateField";
|
|
8
8
|
|
|
9
9
|
const defaultValueFormat = (d) => (_.isArray(d) ? _.first(d) : d);
|
|
10
|
+
const multipleDefaultValueFormat = (d) => {
|
|
11
|
+
switch (d) {
|
|
12
|
+
case "":
|
|
13
|
+
return [];
|
|
14
|
+
default:
|
|
15
|
+
return !_.isArray(d) ? [d] : d;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
10
18
|
|
|
11
19
|
export const DefaultValue = ({
|
|
12
20
|
defaultField,
|
|
@@ -36,7 +44,24 @@ export const DefaultValue = ({
|
|
|
36
44
|
});
|
|
37
45
|
};
|
|
38
46
|
|
|
47
|
+
const onMultipleDefaultValueChange = (e, { value }) => {
|
|
48
|
+
onChange(null, {
|
|
49
|
+
name: defaultField,
|
|
50
|
+
value: value,
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
|
|
39
54
|
const fixedValues = _.pathOr([], "values.fixed")(field) || [];
|
|
55
|
+
|
|
56
|
+
const multipleDefalultsAvaliableCardinality = ["*", "+"];
|
|
57
|
+
const multipleDefalultsAvaliableWidget = ["string", "dropdown", "checkbox"];
|
|
58
|
+
const multipleDefalultsDisableType = ["fixed_tuple", "switch", "domain"];
|
|
59
|
+
const multipleDefault =
|
|
60
|
+
fieldType === "string" &&
|
|
61
|
+
multipleDefalultsAvaliableCardinality.includes(field.cardinality) &&
|
|
62
|
+
multipleDefalultsAvaliableWidget.includes(field.widget) &&
|
|
63
|
+
!multipleDefalultsDisableType.includes(type);
|
|
64
|
+
|
|
40
65
|
return (
|
|
41
66
|
<>
|
|
42
67
|
{!type && fieldType === "date" && (
|
|
@@ -69,24 +94,24 @@ export const DefaultValue = ({
|
|
|
69
94
|
"datetime",
|
|
70
95
|
"integer",
|
|
71
96
|
"float",
|
|
72
|
-
]) &&
|
|
97
|
+
]) &&
|
|
98
|
+
!multipleDefault && (
|
|
73
99
|
<Form.Input
|
|
74
100
|
name="default_value"
|
|
75
|
-
|
|
101
|
+
label={formatMessage({
|
|
76
102
|
id: "template.field.values.default_value",
|
|
77
103
|
})}
|
|
78
104
|
value={_.get("default")(field)}
|
|
79
105
|
onChange={onDefaultValueChange}
|
|
80
106
|
/>
|
|
81
107
|
)}
|
|
82
|
-
{type == "fixed" && (
|
|
108
|
+
{type == "fixed" && !multipleDefault && (
|
|
83
109
|
<Form.Dropdown
|
|
84
110
|
fluid
|
|
85
111
|
selection
|
|
86
112
|
label={formatMessage({ id: "template.field.values.default_value" })}
|
|
87
113
|
onChange={onDefaultValueChange}
|
|
88
114
|
value={defaultValueFormat(_.get("default")(field))}
|
|
89
|
-
required
|
|
90
115
|
options={_.map((v) => ({
|
|
91
116
|
key: v,
|
|
92
117
|
value: v,
|
|
@@ -94,6 +119,39 @@ export const DefaultValue = ({
|
|
|
94
119
|
}))(["", ...fixedValues])}
|
|
95
120
|
/>
|
|
96
121
|
)}
|
|
122
|
+
{multipleDefault &&
|
|
123
|
+
(field.widget === "dropdown" || field.widget === "checkbox") && (
|
|
124
|
+
<Form.Dropdown
|
|
125
|
+
fluid
|
|
126
|
+
selection
|
|
127
|
+
multiple
|
|
128
|
+
label={formatMessage({ id: "template.field.values.default_value" })}
|
|
129
|
+
onChange={onMultipleDefaultValueChange}
|
|
130
|
+
value={multipleDefaultValueFormat(_.get("default")(field))}
|
|
131
|
+
options={_.map((v) => ({
|
|
132
|
+
key: v,
|
|
133
|
+
value: v,
|
|
134
|
+
text: v,
|
|
135
|
+
}))(["", ...fixedValues])}
|
|
136
|
+
/>
|
|
137
|
+
)}
|
|
138
|
+
{multipleDefault && field.widget === "string" && (
|
|
139
|
+
<Form.Dropdown
|
|
140
|
+
fluid
|
|
141
|
+
selection
|
|
142
|
+
multiple
|
|
143
|
+
search
|
|
144
|
+
allowAdditions
|
|
145
|
+
label={formatMessage({ id: "template.field.values.default_value" })}
|
|
146
|
+
onChange={onMultipleDefaultValueChange}
|
|
147
|
+
value={multipleDefaultValueFormat(_.get("default")(field))}
|
|
148
|
+
options={_.map((v) => ({
|
|
149
|
+
key: v,
|
|
150
|
+
value: v,
|
|
151
|
+
text: v,
|
|
152
|
+
}))(["", ...multipleDefaultValueFormat(_.get("default")(field))])}
|
|
153
|
+
/>
|
|
154
|
+
)}
|
|
97
155
|
</>
|
|
98
156
|
);
|
|
99
157
|
};
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import _ from "lodash/fp";
|
|
2
|
-
import React
|
|
2
|
+
import React from "react";
|
|
3
3
|
import PropTypes from "prop-types";
|
|
4
4
|
import { useIntl } from "react-intl";
|
|
5
5
|
import { Form } from "semantic-ui-react";
|
|
6
6
|
import { useHierarchies } from "../../../hooks/useHierarchies";
|
|
7
7
|
|
|
8
|
-
export const HierarchiesList = ({
|
|
9
|
-
hierarchies,
|
|
10
|
-
onChange,
|
|
11
|
-
values: value,
|
|
12
|
-
loading,
|
|
13
|
-
}) => {
|
|
8
|
+
export const HierarchiesList = ({ hierarchies, onChange, values, loading }) => {
|
|
14
9
|
const { formatMessage } = useIntl();
|
|
15
10
|
|
|
16
|
-
const handleChange = (_e, { value }) =>
|
|
11
|
+
const handleChange = (_e, { value, name }) =>
|
|
12
|
+
onChange({
|
|
13
|
+
...values,
|
|
14
|
+
[name]: value,
|
|
15
|
+
});
|
|
17
16
|
|
|
18
17
|
const options = _.flow(
|
|
19
18
|
_.map(({ id, name }) => ({ text: name, value: id })),
|
|
@@ -24,9 +23,10 @@ export const HierarchiesList = ({
|
|
|
24
23
|
<Form.Group size="small" widths="equal">
|
|
25
24
|
<Form.Dropdown
|
|
26
25
|
required
|
|
26
|
+
name="id"
|
|
27
27
|
selection
|
|
28
28
|
label={
|
|
29
|
-
|
|
29
|
+
values?.id === ""
|
|
30
30
|
? ""
|
|
31
31
|
: formatMessage({ id: "template.field.type.hierarchy" })
|
|
32
32
|
}
|
|
@@ -36,7 +36,15 @@ export const HierarchiesList = ({
|
|
|
36
36
|
})}
|
|
37
37
|
onChange={handleChange}
|
|
38
38
|
options={options}
|
|
39
|
-
value={
|
|
39
|
+
value={values?.id}
|
|
40
|
+
/>
|
|
41
|
+
<Form.Input
|
|
42
|
+
type="number"
|
|
43
|
+
required
|
|
44
|
+
name="min_depth"
|
|
45
|
+
label={formatMessage({ id: "template.field.type.depth" })}
|
|
46
|
+
onChange={handleChange}
|
|
47
|
+
value={values.min_depth}
|
|
40
48
|
/>
|
|
41
49
|
</Form.Group>
|
|
42
50
|
);
|
|
@@ -45,7 +53,6 @@ export const HierarchiesList = ({
|
|
|
45
53
|
HierarchiesList.propTypes = {
|
|
46
54
|
hierarchies: PropTypes.array,
|
|
47
55
|
onChange: PropTypes.func,
|
|
48
|
-
onDefaultValueChange: PropTypes.func,
|
|
49
56
|
values: PropTypes.number,
|
|
50
57
|
loading: PropTypes.bool,
|
|
51
58
|
};
|
|
@@ -15,7 +15,7 @@ describe("<DefaultValue />", () => {
|
|
|
15
15
|
fieldType,
|
|
16
16
|
formatMessage,
|
|
17
17
|
onChange,
|
|
18
|
-
type
|
|
18
|
+
type,
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
it("matches the latest snapshot for null values", () => {
|
|
@@ -30,7 +30,7 @@ describe("<DefaultValue />", () => {
|
|
|
30
30
|
fieldType: "date",
|
|
31
31
|
formatMessage,
|
|
32
32
|
onChange,
|
|
33
|
-
type: null
|
|
33
|
+
type: null,
|
|
34
34
|
};
|
|
35
35
|
const wrapper = shallow(<DefaultValue {...props} />);
|
|
36
36
|
expect(wrapper.find("DateField").length).toBe(1);
|
|
@@ -45,7 +45,7 @@ describe("<DefaultValue />", () => {
|
|
|
45
45
|
fieldType: "datetime",
|
|
46
46
|
formatMessage,
|
|
47
47
|
onChange,
|
|
48
|
-
type: null
|
|
48
|
+
type: null,
|
|
49
49
|
};
|
|
50
50
|
const wrapper = shallow(<DefaultValue {...props} />);
|
|
51
51
|
expect(wrapper.find("DateTimeField").length).toBe(1);
|
|
@@ -60,7 +60,7 @@ describe("<DefaultValue />", () => {
|
|
|
60
60
|
fieldType: "integer",
|
|
61
61
|
formatMessage,
|
|
62
62
|
onChange,
|
|
63
|
-
type: null
|
|
63
|
+
type: null,
|
|
64
64
|
};
|
|
65
65
|
const wrapper = shallow(<DefaultValue {...props} />);
|
|
66
66
|
expect(wrapper.find("NumberField").length).toBe(1);
|
|
@@ -75,7 +75,7 @@ describe("<DefaultValue />", () => {
|
|
|
75
75
|
fieldType: "float",
|
|
76
76
|
formatMessage,
|
|
77
77
|
onChange,
|
|
78
|
-
type: null
|
|
78
|
+
type: null,
|
|
79
79
|
};
|
|
80
80
|
const wrapper = shallow(<DefaultValue {...props} />);
|
|
81
81
|
expect(wrapper.find("NumberField").length).toBe(1);
|
|
@@ -95,13 +95,164 @@ describe("<DefaultValue />", () => {
|
|
|
95
95
|
expect(wrapper.find("FormDropdown").length).toBe(1);
|
|
96
96
|
});
|
|
97
97
|
|
|
98
|
+
it("renders form dropdown when type is fixed, widget is dropdown, fieldType is string and cardinality ? or 1", () => {
|
|
99
|
+
const cardinalityes = ["?", "1"];
|
|
100
|
+
|
|
101
|
+
cardinalityes.forEach((cardinality) => {
|
|
102
|
+
const props = {
|
|
103
|
+
defaultField,
|
|
104
|
+
field: { cardinality: cardinality, widget: "dropdown" },
|
|
105
|
+
fieldType: "string",
|
|
106
|
+
formatMessage,
|
|
107
|
+
onChange,
|
|
108
|
+
type: "fixed",
|
|
109
|
+
};
|
|
110
|
+
|
|
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
|
+
});
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
it("renders form dropdown multiple when widget is dropdown, fieldType is string and cardinality * or +", () => {
|
|
120
|
+
const cardinalityes = ["*", "+"];
|
|
121
|
+
|
|
122
|
+
cardinalityes.forEach((cardinality) => {
|
|
123
|
+
const props = {
|
|
124
|
+
defaultField,
|
|
125
|
+
field: { cardinality: cardinality, widget: "dropdown" },
|
|
126
|
+
fieldType: "string",
|
|
127
|
+
formatMessage,
|
|
128
|
+
onChange,
|
|
129
|
+
type: null,
|
|
130
|
+
};
|
|
131
|
+
|
|
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
|
+
});
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
it("renders form dropdown when widget is checkbox, fieldType is string and cardinality ? or 1", () => {
|
|
141
|
+
const cardinalityes = ["?", "1"];
|
|
142
|
+
|
|
143
|
+
cardinalityes.forEach((cardinality) => {
|
|
144
|
+
const props = {
|
|
145
|
+
defaultField,
|
|
146
|
+
field: { cardinality: cardinality, widget: "checkbox" },
|
|
147
|
+
fieldType: "string",
|
|
148
|
+
formatMessage,
|
|
149
|
+
onChange,
|
|
150
|
+
type: "fixed",
|
|
151
|
+
};
|
|
152
|
+
|
|
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
|
+
});
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
it("renders form dropdown multiple when widget is checkbox, fieldType is string and cardinality * or +", () => {
|
|
162
|
+
const cardinalityes = ["*", "+"];
|
|
163
|
+
|
|
164
|
+
cardinalityes.forEach((cardinality) => {
|
|
165
|
+
const props = {
|
|
166
|
+
defaultField,
|
|
167
|
+
field: { cardinality: cardinality, widget: "checkbox" },
|
|
168
|
+
fieldType: "string",
|
|
169
|
+
formatMessage,
|
|
170
|
+
onChange,
|
|
171
|
+
type: null,
|
|
172
|
+
};
|
|
173
|
+
|
|
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
|
+
});
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
it("renders form input when fieldType is string and cardinality ? or 1", () => {
|
|
187
|
+
const cardinalityes = ["?", "1"];
|
|
188
|
+
|
|
189
|
+
cardinalityes.forEach((cardinality) => {
|
|
190
|
+
const props = {
|
|
191
|
+
defaultField,
|
|
192
|
+
field: { cardinality: cardinality, widget: "string" },
|
|
193
|
+
fieldType: "string",
|
|
194
|
+
formatMessage,
|
|
195
|
+
onChange,
|
|
196
|
+
type: null,
|
|
197
|
+
};
|
|
198
|
+
|
|
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
|
+
});
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
it("renders form input when widget is string, fieldType is string and cardinality ? or 1", () => {
|
|
207
|
+
const cardinalityes = ["?", "1"];
|
|
208
|
+
|
|
209
|
+
cardinalityes.forEach((cardinality) => {
|
|
210
|
+
const props = {
|
|
211
|
+
defaultField,
|
|
212
|
+
field: { cardinality: cardinality, widget: "string" },
|
|
213
|
+
fieldType: "string",
|
|
214
|
+
formatMessage,
|
|
215
|
+
onChange,
|
|
216
|
+
type: null,
|
|
217
|
+
};
|
|
218
|
+
|
|
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
|
+
});
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
it("renders form dropdown multiple and allow additions when widget is string, fieldType is string and cardinality * or +", () => {
|
|
227
|
+
const cardinalityes = ["*", "+"];
|
|
228
|
+
|
|
229
|
+
cardinalityes.forEach((cardinality) => {
|
|
230
|
+
const props = {
|
|
231
|
+
defaultField,
|
|
232
|
+
field: { cardinality: cardinality, widget: "string" },
|
|
233
|
+
fieldType: "string",
|
|
234
|
+
formatMessage,
|
|
235
|
+
onChange,
|
|
236
|
+
type: null,
|
|
237
|
+
};
|
|
238
|
+
|
|
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
|
+
});
|
|
247
|
+
});
|
|
248
|
+
|
|
98
249
|
it("calls dropdown change", () => {
|
|
99
250
|
const wrapper = shallow(<DefaultValue {...props} />);
|
|
100
251
|
const input = wrapper.find("FormDropdown");
|
|
101
252
|
input.simulate("change", null, { value: 3 });
|
|
102
253
|
expect(onChange).toBeCalledWith(null, {
|
|
103
254
|
name: defaultField,
|
|
104
|
-
value: [3]
|
|
255
|
+
value: [3],
|
|
105
256
|
});
|
|
106
257
|
});
|
|
107
258
|
|
|
@@ -113,7 +264,7 @@ describe("<DefaultValue />", () => {
|
|
|
113
264
|
input.simulate("change", null, { value: 3 });
|
|
114
265
|
expect(onChange).toBeCalledWith(null, {
|
|
115
266
|
name: defaultField,
|
|
116
|
-
value: 3
|
|
267
|
+
value: 3,
|
|
117
268
|
});
|
|
118
269
|
});
|
|
119
270
|
});
|