@ukhomeoffice/cop-react-form-renderer 4.5.0 → 4.7.0
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/dist/components/CollectionPage/CollectionPage.js +1 -0
- package/dist/components/FormPage/FormPage.js +1 -4
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +8 -1
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +71 -1
- package/dist/utils/Operate/persistValueInFormData.js +46 -0
- package/dist/utils/Operate/persistValueInFormData.test.js +105 -0
- package/dist/utils/Operate/runPageOperations.js +35 -23
- package/dist/utils/Operate/runPageOperations.test.js +51 -13
- package/dist/utils/Operate/{getValueFromFormData.js → setValueInFormData.js} +2 -2
- package/dist/utils/Operate/{getValueFromFormData.test.js → setValueInFormData.test.js} +6 -6
- package/package.json +1 -1
|
@@ -68,6 +68,7 @@ var CollectionPage = function CollectionPage(_ref) {
|
|
|
68
68
|
var onPageChange = function onPageChange(_ref2) {
|
|
69
69
|
var target = _ref2.target;
|
|
70
70
|
page.formData[target.name] = target.value;
|
|
71
|
+
data = page.formData[page.collection.name] || patch[page.collection.name] || [];
|
|
71
72
|
setPatch(function (prev) {
|
|
72
73
|
return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, target.name, target.value));
|
|
73
74
|
});
|
|
@@ -89,10 +89,7 @@ var FormPage = function FormPage(_ref) {
|
|
|
89
89
|
label: _utils.default.interpolateString(action.label, page.formData)
|
|
90
90
|
}) : action;
|
|
91
91
|
});
|
|
92
|
-
|
|
93
|
-
var operationResults = _utils.default.Operate.runPageOperations(page, _objectSpread(_objectSpread({}, page.formData), patch));
|
|
94
|
-
|
|
95
|
-
page.formData = _objectSpread(_objectSpread(_objectSpread({}, page.formData), patch), operationResults);
|
|
92
|
+
page.formData = _utils.default.Operate.runPageOperations(page, _objectSpread(_objectSpread({}, page.formData), patch), onWrapperChange || onPageChange);
|
|
96
93
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
97
94
|
className: classes('page'),
|
|
98
95
|
key: page.id
|
|
@@ -9,6 +9,8 @@ var _models = require("../../models");
|
|
|
9
9
|
|
|
10
10
|
var _getCYARow = _interopRequireDefault(require("./getCYARow"));
|
|
11
11
|
|
|
12
|
+
var _getCYARowsForCollection = _interopRequireDefault(require("./getCYARowsForCollection"));
|
|
13
|
+
|
|
12
14
|
var _showComponentCYA = _interopRequireDefault(require("./showComponentCYA"));
|
|
13
15
|
|
|
14
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -24,11 +26,16 @@ var getCYARowsForContainer = function getCYARowsForContainer(page, container, fo
|
|
|
24
26
|
return container.components.filter(function (c) {
|
|
25
27
|
return (0, _showComponentCYA.default)(c, page.formData);
|
|
26
28
|
}).flatMap(function (component) {
|
|
29
|
+
var fd = formData ? formData[component.fieldId] : undefined;
|
|
30
|
+
|
|
27
31
|
if (component.type === _models.ComponentTypes.CONTAINER) {
|
|
28
|
-
var fd = formData ? formData[component.fieldId] : undefined;
|
|
29
32
|
return getCYARowsForContainer(page, component, fd, onAction);
|
|
30
33
|
}
|
|
31
34
|
|
|
35
|
+
if (component.type === _models.ComponentTypes.COLLECTION) {
|
|
36
|
+
return (0, _getCYARowsForCollection.default)(page, component, fd, onAction);
|
|
37
|
+
}
|
|
38
|
+
|
|
32
39
|
return (0, _getCYARow.default)(_objectSpread(_objectSpread({}, page), {}, {
|
|
33
40
|
formData: formData
|
|
34
41
|
}), component, onAction);
|
|
@@ -8,7 +8,8 @@ var _getCYARowsForContainer = _interopRequireDefault(require("./getCYARowsForCon
|
|
|
8
8
|
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
|
+
|
|
12
13
|
describe('utils.CheckYourAnswers.getCYARowsForContainer', function () {
|
|
13
14
|
it('should get an appropriate row for a container with a single readonly text component', function () {
|
|
14
15
|
var FORM_DATA = {
|
|
@@ -250,4 +251,73 @@ describe('utils.CheckYourAnswers.getCYARowsForContainer', function () {
|
|
|
250
251
|
});
|
|
251
252
|
});
|
|
252
253
|
});
|
|
254
|
+
it('should get an appropriate row for a collection with a single text component inside a container', function () {
|
|
255
|
+
var OUTER_ID = 'a';
|
|
256
|
+
var INNER_ID = 'b';
|
|
257
|
+
|
|
258
|
+
var FORM_DATA = _defineProperty({}, OUTER_ID, [_defineProperty({}, INNER_ID, 'Bravo'), _defineProperty({}, INNER_ID, 'Charlie')]);
|
|
259
|
+
|
|
260
|
+
var PAGE = {
|
|
261
|
+
id: 'page',
|
|
262
|
+
formData: FORM_DATA,
|
|
263
|
+
cya_link: {},
|
|
264
|
+
collection: 'collectionName'
|
|
265
|
+
};
|
|
266
|
+
var COLLECTION_COMPONENT = {
|
|
267
|
+
type: 'collection',
|
|
268
|
+
id: OUTER_ID,
|
|
269
|
+
fieldId: OUTER_ID,
|
|
270
|
+
label: 'Alpha',
|
|
271
|
+
item: [{
|
|
272
|
+
id: INNER_ID,
|
|
273
|
+
fieldId: INNER_ID,
|
|
274
|
+
label: INNER_ID,
|
|
275
|
+
type: 'text'
|
|
276
|
+
}]
|
|
277
|
+
};
|
|
278
|
+
var CONTAINER = {
|
|
279
|
+
id: 'container',
|
|
280
|
+
fieldId: 'container',
|
|
281
|
+
type: _models.ComponentTypes.CONTAINER,
|
|
282
|
+
components: [COLLECTION_COMPONENT],
|
|
283
|
+
value: FORM_DATA.container,
|
|
284
|
+
formData: FORM_DATA
|
|
285
|
+
};
|
|
286
|
+
var ROWS = (0, _getCYARowsForContainer.default)(PAGE, CONTAINER, FORM_DATA, function () {});
|
|
287
|
+
expect(ROWS.length).toEqual(4);
|
|
288
|
+
|
|
289
|
+
var checkTitleRow = function checkTitleRow(index, row) {
|
|
290
|
+
expect(row).toEqual({
|
|
291
|
+
pageId: PAGE.id,
|
|
292
|
+
fieldId: CONTAINER.components[0].fieldId,
|
|
293
|
+
key: "Item ".concat(index + 1),
|
|
294
|
+
action: null,
|
|
295
|
+
full_path: "".concat(OUTER_ID, "[").concat(index, "]"),
|
|
296
|
+
type: 'title'
|
|
297
|
+
});
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
var checkValueRow = function checkValueRow(index, row, value) {
|
|
301
|
+
(0, _setupTests.expectObjectLike)(row, {
|
|
302
|
+
pageId: PAGE.id,
|
|
303
|
+
fieldId: INNER_ID,
|
|
304
|
+
key: INNER_ID,
|
|
305
|
+
id: INNER_ID,
|
|
306
|
+
component: {
|
|
307
|
+
fieldId: INNER_ID,
|
|
308
|
+
full_path: "".concat(OUTER_ID, "[").concat(index, "].").concat(INNER_ID),
|
|
309
|
+
id: INNER_ID,
|
|
310
|
+
label: INNER_ID,
|
|
311
|
+
type: 'text'
|
|
312
|
+
},
|
|
313
|
+
value: value,
|
|
314
|
+
full_path: "".concat(OUTER_ID, "[").concat(index, "].").concat(INNER_ID)
|
|
315
|
+
});
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
checkTitleRow(0, ROWS[0]);
|
|
319
|
+
checkValueRow(0, ROWS[1], 'Bravo');
|
|
320
|
+
checkTitleRow(1, ROWS[2]);
|
|
321
|
+
checkValueRow(1, ROWS[3], 'Charlie');
|
|
322
|
+
});
|
|
253
323
|
});
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
9
|
+
|
|
10
|
+
var _getSourceData = _interopRequireDefault(require("../Data/getSourceData"));
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
// Global imports.
|
|
15
|
+
// Local imports.
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Simple operation to call the page's onChange handler with a specific value
|
|
19
|
+
* and name. Supports getting a value from an interpolated field string.
|
|
20
|
+
* @param {object} config The operation config.
|
|
21
|
+
* @param {object} data The page's formData.
|
|
22
|
+
* @param {function} onChange The page's onChange handler.
|
|
23
|
+
*/
|
|
24
|
+
var persistValueInFormData = function persistValueInFormData(config, data, onChange) {
|
|
25
|
+
var value;
|
|
26
|
+
|
|
27
|
+
if (config !== null && config !== void 0 && config.field) {
|
|
28
|
+
var fieldPath = _copReactComponents.Utils.interpolateString(config.field, data);
|
|
29
|
+
|
|
30
|
+
value = (0, _getSourceData.default)(data, fieldPath);
|
|
31
|
+
} else {
|
|
32
|
+
value = config === null || config === void 0 ? void 0 : config.value;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (value && config.name && data[config.name] !== value) {
|
|
36
|
+
onChange({
|
|
37
|
+
target: {
|
|
38
|
+
name: config.name,
|
|
39
|
+
value: value
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
var _default = persistValueInFormData;
|
|
46
|
+
exports.default = _default;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _persistValueInFormData = _interopRequireDefault(require("./persistValueInFormData"));
|
|
4
|
+
|
|
5
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
|
+
|
|
7
|
+
describe('Utils.Operate.persistValueInFormData', function () {
|
|
8
|
+
var DATA = {
|
|
9
|
+
alpha: 'abc',
|
|
10
|
+
beta: 'charlie',
|
|
11
|
+
charlie: '123'
|
|
12
|
+
};
|
|
13
|
+
var ON_CHANGE_COUNT = 0;
|
|
14
|
+
|
|
15
|
+
var ON_CHANGE = function ON_CHANGE(_ref) {
|
|
16
|
+
var target = _ref.target;
|
|
17
|
+
DATA[target.name] = target.value;
|
|
18
|
+
ON_CHANGE_COUNT++;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
beforeEach(function () {
|
|
22
|
+
DATA = {
|
|
23
|
+
alpha: 'abc',
|
|
24
|
+
beta: 'charlie',
|
|
25
|
+
charlie: '123'
|
|
26
|
+
};
|
|
27
|
+
ON_CHANGE_COUNT = 0;
|
|
28
|
+
});
|
|
29
|
+
it('Should trigger a change correctly', function () {
|
|
30
|
+
var CONFIG = {
|
|
31
|
+
name: 'alpha',
|
|
32
|
+
value: 'bcd'
|
|
33
|
+
};
|
|
34
|
+
(0, _persistValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
35
|
+
expect(DATA).toEqual({
|
|
36
|
+
alpha: 'bcd',
|
|
37
|
+
beta: 'charlie',
|
|
38
|
+
charlie: '123'
|
|
39
|
+
});
|
|
40
|
+
expect(ON_CHANGE_COUNT).toEqual(1);
|
|
41
|
+
});
|
|
42
|
+
it('Should not call onChange when value is unchanged', function () {
|
|
43
|
+
var CONFIG = {
|
|
44
|
+
name: 'alpha',
|
|
45
|
+
value: 'abc'
|
|
46
|
+
};
|
|
47
|
+
(0, _persistValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
48
|
+
expect(DATA).toEqual({
|
|
49
|
+
alpha: 'abc',
|
|
50
|
+
beta: 'charlie',
|
|
51
|
+
charlie: '123'
|
|
52
|
+
});
|
|
53
|
+
expect(ON_CHANGE_COUNT).toEqual(0);
|
|
54
|
+
});
|
|
55
|
+
it('Should not call onChange if no value or field is given', function () {
|
|
56
|
+
var CONFIG = {
|
|
57
|
+
name: 'alpha'
|
|
58
|
+
};
|
|
59
|
+
(0, _persistValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
60
|
+
expect(DATA).toEqual({
|
|
61
|
+
alpha: 'abc',
|
|
62
|
+
beta: 'charlie',
|
|
63
|
+
charlie: '123'
|
|
64
|
+
});
|
|
65
|
+
expect(ON_CHANGE_COUNT).toEqual(0);
|
|
66
|
+
});
|
|
67
|
+
it('Should not call onChange if no name is given', function () {
|
|
68
|
+
var CONFIG = {
|
|
69
|
+
field: 'charlie'
|
|
70
|
+
};
|
|
71
|
+
(0, _persistValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
72
|
+
expect(DATA).toEqual({
|
|
73
|
+
alpha: 'abc',
|
|
74
|
+
beta: 'charlie',
|
|
75
|
+
charlie: '123'
|
|
76
|
+
});
|
|
77
|
+
expect(ON_CHANGE_COUNT).toEqual(0);
|
|
78
|
+
});
|
|
79
|
+
it('Should not call onChange if field cannot be found', function () {
|
|
80
|
+
var CONFIG = {
|
|
81
|
+
name: 'alpha',
|
|
82
|
+
field: 'delta'
|
|
83
|
+
};
|
|
84
|
+
(0, _persistValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
85
|
+
expect(DATA).toEqual({
|
|
86
|
+
alpha: 'abc',
|
|
87
|
+
beta: 'charlie',
|
|
88
|
+
charlie: '123'
|
|
89
|
+
});
|
|
90
|
+
expect(ON_CHANGE_COUNT).toEqual(0);
|
|
91
|
+
});
|
|
92
|
+
it('Should correctly interpolate a field value', function () {
|
|
93
|
+
var CONFIG = {
|
|
94
|
+
name: 'alpha',
|
|
95
|
+
field: '${beta}'
|
|
96
|
+
};
|
|
97
|
+
(0, _persistValueInFormData.default)(CONFIG, DATA, ON_CHANGE);
|
|
98
|
+
expect(DATA).toEqual({
|
|
99
|
+
alpha: '123',
|
|
100
|
+
beta: 'charlie',
|
|
101
|
+
charlie: '123'
|
|
102
|
+
});
|
|
103
|
+
expect(ON_CHANGE_COUNT).toEqual(1);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
@@ -5,65 +5,77 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
+
var _copReactComponents = require("@ukhomeoffice/cop-react-components");
|
|
9
|
+
|
|
8
10
|
var _checkValueIsTruthy = _interopRequireDefault(require("./checkValueIsTruthy"));
|
|
9
11
|
|
|
10
12
|
var _getIndexOfMatchingValueIn = _interopRequireDefault(require("./getIndexOfMatchingValueIn"));
|
|
11
13
|
|
|
12
|
-
var
|
|
14
|
+
var _persistValueInFormData = _interopRequireDefault(require("./persistValueInFormData"));
|
|
13
15
|
|
|
14
|
-
var
|
|
16
|
+
var _setValueInFormData = _interopRequireDefault(require("./setValueInFormData"));
|
|
15
17
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
18
|
+
var _shouldRun = _interopRequireDefault(require("./shouldRun"));
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
var _setDataItem = _interopRequireDefault(require("../Data/setDataItem"));
|
|
21
21
|
|
|
22
|
-
function
|
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
23
|
|
|
24
|
+
// Global imports.
|
|
25
|
+
// Local imports.
|
|
24
26
|
var functions = {
|
|
25
27
|
checkValueIsTruthy: _checkValueIsTruthy.default,
|
|
26
28
|
getIndexOfMatchingValueIn: _getIndexOfMatchingValueIn.default,
|
|
27
|
-
|
|
29
|
+
persistValueInFormData: _persistValueInFormData.default,
|
|
30
|
+
setValueInFormData: _setValueInFormData.default
|
|
28
31
|
};
|
|
29
32
|
|
|
30
|
-
var doOperation = function doOperation(config, data) {
|
|
33
|
+
var doOperation = function doOperation(config, data, onChange) {
|
|
31
34
|
var fn = functions[config.function];
|
|
32
35
|
|
|
33
36
|
if (typeof fn === 'function') {
|
|
34
|
-
return fn(config, data);
|
|
37
|
+
return fn(config, data, onChange);
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
return undefined;
|
|
38
41
|
};
|
|
39
42
|
/**
|
|
40
|
-
* Run operations specified in a page's config on formData.
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
+
* Run operations, specified in a page's config, on formData.
|
|
44
|
+
*
|
|
45
|
+
* The result of an operation will be placed in data according
|
|
46
|
+
* to the operations 'output' string. This string is a dot
|
|
47
|
+
* separated fieldId. If any part of the output doesn't exist,
|
|
48
|
+
* then it is created.
|
|
43
49
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
50
|
+
* The page's onChange handler is passed in here in case any
|
|
51
|
+
* operation needs to persist its value within formData. Normally
|
|
52
|
+
* any operation result only lasts until the page is re-rendered.
|
|
46
53
|
*
|
|
47
54
|
* @param {object} config The config for the page.
|
|
48
55
|
* @param {object} data The page's formData.
|
|
49
|
-
* @
|
|
56
|
+
* @param {function} onChange The page's onChange handler.
|
|
57
|
+
* @returns data with the results of any operations included.
|
|
50
58
|
*/
|
|
51
59
|
|
|
52
60
|
|
|
53
|
-
var runPageOperations = function runPageOperations(config, data) {
|
|
54
|
-
var result = {};
|
|
55
|
-
|
|
61
|
+
var runPageOperations = function runPageOperations(config, data, onChange) {
|
|
56
62
|
if (config !== null && config !== void 0 && config.operations && data) {
|
|
57
63
|
config.operations.forEach(function (op) {
|
|
58
|
-
if (op.
|
|
59
|
-
|
|
60
|
-
|
|
64
|
+
if ((0, _shouldRun.default)(op.run_when, data)) {
|
|
65
|
+
var result = doOperation(op, data, onChange);
|
|
66
|
+
|
|
67
|
+
if (op.output) {
|
|
68
|
+
// Remove array indexers and replace them with dot separators. This ensures that outputPath will
|
|
69
|
+
// work with setDataItem.
|
|
70
|
+
var outputPath = _copReactComponents.Utils.interpolateString(op.output, data).replace('[', '.').replace(']', '');
|
|
71
|
+
|
|
72
|
+
(0, _setDataItem.default)(data, outputPath, result);
|
|
61
73
|
}
|
|
62
74
|
}
|
|
63
75
|
});
|
|
64
76
|
}
|
|
65
77
|
|
|
66
|
-
return
|
|
78
|
+
return data;
|
|
67
79
|
};
|
|
68
80
|
|
|
69
81
|
var _default = runPageOperations;
|
|
@@ -4,64 +4,102 @@ var _runPageOperations = _interopRequireDefault(require("./runPageOperations"));
|
|
|
4
4
|
|
|
5
5
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
6
|
|
|
7
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
8
|
+
|
|
9
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
10
|
+
|
|
11
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
|
+
|
|
7
13
|
describe('Utils.Operate.runPageOperations', function () {
|
|
8
14
|
var DATA = {
|
|
9
15
|
alpha: 'abc',
|
|
10
16
|
bravo: ['bcd', 'cde', 'charlie'],
|
|
11
|
-
charlie: 'def'
|
|
17
|
+
charlie: 'def',
|
|
18
|
+
delta: 'root',
|
|
19
|
+
array: ['123', '234', '456']
|
|
12
20
|
};
|
|
13
21
|
it('Should return an empty object when no operations are specified', function () {
|
|
14
22
|
var PAGE = {};
|
|
15
23
|
var result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
16
|
-
expect(result).toEqual(
|
|
24
|
+
expect(result).toEqual(DATA);
|
|
17
25
|
});
|
|
18
26
|
it('Should handle a single operation correctly', function () {
|
|
19
27
|
var PAGE = {
|
|
20
28
|
operations: [{
|
|
21
29
|
output: 'firstOpResult',
|
|
22
|
-
function: '
|
|
30
|
+
function: 'setValueInFormData',
|
|
23
31
|
field: 'alpha'
|
|
24
32
|
}]
|
|
25
33
|
};
|
|
26
34
|
var result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
27
|
-
expect(result).toEqual({
|
|
35
|
+
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
28
36
|
firstOpResult: 'abc'
|
|
29
|
-
});
|
|
37
|
+
}));
|
|
30
38
|
});
|
|
31
39
|
it('Should handle a multiple operations correctly', function () {
|
|
32
40
|
var PAGE = {
|
|
33
41
|
operations: [{
|
|
34
42
|
output: 'firstOpResult',
|
|
35
|
-
function: '
|
|
43
|
+
function: 'setValueInFormData',
|
|
36
44
|
field: 'alpha'
|
|
37
45
|
}, {
|
|
38
46
|
output: 'secondOpResult',
|
|
39
|
-
function: '
|
|
47
|
+
function: 'setValueInFormData',
|
|
40
48
|
field: 'bravo[1]'
|
|
41
49
|
}]
|
|
42
50
|
};
|
|
43
51
|
var result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
44
|
-
expect(result).toEqual({
|
|
52
|
+
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
45
53
|
firstOpResult: 'abc',
|
|
46
54
|
secondOpResult: 'cde'
|
|
47
|
-
});
|
|
55
|
+
}));
|
|
48
56
|
});
|
|
49
57
|
it('Should handle chained operations correctly', function () {
|
|
50
58
|
var PAGE = {
|
|
51
59
|
operations: [{
|
|
52
60
|
output: 'firstOpResult',
|
|
53
|
-
function: '
|
|
61
|
+
function: 'setValueInFormData',
|
|
54
62
|
field: 'bravo[2]'
|
|
55
63
|
}, {
|
|
56
64
|
output: 'secondOpResult',
|
|
57
|
-
function: '
|
|
65
|
+
function: 'setValueInFormData',
|
|
58
66
|
field: '${firstOpResult}'
|
|
59
67
|
}]
|
|
60
68
|
};
|
|
61
69
|
var result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
62
|
-
expect(result).toEqual({
|
|
70
|
+
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
63
71
|
firstOpResult: 'charlie',
|
|
64
72
|
secondOpResult: 'def'
|
|
65
|
-
});
|
|
73
|
+
}));
|
|
74
|
+
});
|
|
75
|
+
it('Should handle an interpolated output string correctly', function () {
|
|
76
|
+
var PAGE = {
|
|
77
|
+
operations: [{
|
|
78
|
+
function: 'setValueInFormData',
|
|
79
|
+
value: 'leaf',
|
|
80
|
+
output: '${delta}.trunk.branch'
|
|
81
|
+
}]
|
|
82
|
+
};
|
|
83
|
+
var result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
84
|
+
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
85
|
+
root: {
|
|
86
|
+
trunk: {
|
|
87
|
+
branch: 'leaf'
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}));
|
|
91
|
+
});
|
|
92
|
+
it('Should handle an output string with array indeces in', function () {
|
|
93
|
+
var PAGE = {
|
|
94
|
+
operations: [{
|
|
95
|
+
function: 'setValueInFormData',
|
|
96
|
+
value: '000',
|
|
97
|
+
output: 'array[1]'
|
|
98
|
+
}]
|
|
99
|
+
};
|
|
100
|
+
var result = (0, _runPageOperations.default)(PAGE, DATA);
|
|
101
|
+
expect(result).toEqual(_objectSpread(_objectSpread({}, DATA), {}, {
|
|
102
|
+
array: ['123', '000', '456']
|
|
103
|
+
}));
|
|
66
104
|
});
|
|
67
105
|
});
|
|
@@ -13,7 +13,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
13
13
|
|
|
14
14
|
// Global imports.
|
|
15
15
|
// Local imports.
|
|
16
|
-
var
|
|
16
|
+
var setValueInFormData = function setValueInFormData(config, data) {
|
|
17
17
|
if (config !== null && config !== void 0 && config.field) {
|
|
18
18
|
var fieldPath = _copReactComponents.Utils.interpolateString(config.field, data);
|
|
19
19
|
|
|
@@ -23,5 +23,5 @@ var getValueFromFormData = function getValueFromFormData(config, data) {
|
|
|
23
23
|
return (config === null || config === void 0 ? void 0 : config.value) || null;
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
var _default =
|
|
26
|
+
var _default = setValueInFormData;
|
|
27
27
|
exports.default = _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _setValueInFormData = _interopRequireDefault(require("./setValueInFormData"));
|
|
4
4
|
|
|
5
5
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
6
|
|
|
@@ -14,32 +14,32 @@ describe('Utils.Operate.addToFormData', function () {
|
|
|
14
14
|
var CONFIG = {
|
|
15
15
|
value: '2'
|
|
16
16
|
};
|
|
17
|
-
var result = (0,
|
|
17
|
+
var result = (0, _setValueInFormData.default)(CONFIG, DATA);
|
|
18
18
|
expect(result).toEqual(CONFIG.value);
|
|
19
19
|
});
|
|
20
20
|
it('Should return the value of the field given in config, if it exists', function () {
|
|
21
21
|
var CONFIG = {
|
|
22
22
|
field: 'a'
|
|
23
23
|
};
|
|
24
|
-
var result = (0,
|
|
24
|
+
var result = (0, _setValueInFormData.default)(CONFIG, DATA);
|
|
25
25
|
expect(result).toEqual(DATA.a);
|
|
26
26
|
});
|
|
27
27
|
it('Should handle interpolated field strings', function () {
|
|
28
28
|
var CONFIG = {
|
|
29
29
|
field: 'b[${indexOfThree}]'
|
|
30
30
|
};
|
|
31
|
-
var result = (0,
|
|
31
|
+
var result = (0, _setValueInFormData.default)(CONFIG, DATA);
|
|
32
32
|
expect(result).toEqual(DATA.b[1]);
|
|
33
33
|
});
|
|
34
34
|
it('Should return null when an invalid config is used', function () {
|
|
35
|
-
var result = (0,
|
|
35
|
+
var result = (0, _setValueInFormData.default)(null, DATA);
|
|
36
36
|
expect(result).toEqual(null);
|
|
37
37
|
});
|
|
38
38
|
it('Should return null when invalid data is used', function () {
|
|
39
39
|
var CONFIG = {
|
|
40
40
|
field: 'a'
|
|
41
41
|
};
|
|
42
|
-
var result = (0,
|
|
42
|
+
var result = (0, _setValueInFormData.default)(CONFIG, null);
|
|
43
43
|
expect(result).toEqual(null);
|
|
44
44
|
});
|
|
45
45
|
});
|