@ukhomeoffice/cop-react-form-renderer 4.76.0 → 4.77.0-alpha
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/FormRenderer/FormRenderer.js +5 -34
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +73 -42
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +88 -3
- package/dist/components/FormRenderer/onTaskAction.js +2 -2
- package/dist/components/FormRenderer/onTaskAction.test.js +2 -5
- package/package.json +1 -1
|
@@ -20,6 +20,7 @@ var _handlers = _interopRequireDefault(require("./handlers"));
|
|
|
20
20
|
var _helpers = _interopRequireDefault(require("./helpers"));
|
|
21
21
|
var _onCYAAction = _interopRequireDefault(require("./onCYAAction"));
|
|
22
22
|
var _onPageAction = _interopRequireDefault(require("./onPageAction"));
|
|
23
|
+
var _onTaskAction2 = _interopRequireDefault(require("./onTaskAction"));
|
|
23
24
|
require("./FormRenderer.scss");
|
|
24
25
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -278,38 +279,6 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
|
|
|
278
279
|
hooks.onChange(data);
|
|
279
280
|
};
|
|
280
281
|
|
|
281
|
-
// Kick off a task, gather required pages and move to the correct point
|
|
282
|
-
var onTaskAction = function onTaskAction(currentTask) {
|
|
283
|
-
if (currentTask) {
|
|
284
|
-
var task = currentTask;
|
|
285
|
-
task.fullPages = [];
|
|
286
|
-
task.pages.forEach(function (page) {
|
|
287
|
-
task.fullPages.push(_helpers.default.getPage(page, pages));
|
|
288
|
-
});
|
|
289
|
-
setCurrentTask(task);
|
|
290
|
-
var state = _objectSpread({}, task);
|
|
291
|
-
if (task.state === _models.TaskStates.TYPES.COMPLETE) {
|
|
292
|
-
if (hubDetails !== null && hubDetails !== void 0 && hubDetails.noTaskCYAs) {
|
|
293
|
-
// If the task is complete and there are no CYA's then show user first page
|
|
294
|
-
var currentPage = data.formStatus.tasks[task.name].currentPage;
|
|
295
|
-
onPageChange(task.pages[0] || currentPage);
|
|
296
|
-
} else if (task.customCYA) {
|
|
297
|
-
onPageChange(task.customCYA);
|
|
298
|
-
} else {
|
|
299
|
-
onPageChange(_models.FormPages.CYA, state);
|
|
300
|
-
}
|
|
301
|
-
} else if (task.state === _models.TaskStates.TYPES.IN_PROGRESS) {
|
|
302
|
-
var _currentPage = data.formStatus.tasks[task.name].currentPage;
|
|
303
|
-
onPageChange(_currentPage || task.pages[0], state);
|
|
304
|
-
} else if (task.firstPage) {
|
|
305
|
-
var _currentPage2 = task.firstPage;
|
|
306
|
-
onPageChange(_currentPage2 || task.pages[0], state);
|
|
307
|
-
} else {
|
|
308
|
-
onPageChange(task.pages[0], state);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
};
|
|
312
|
-
|
|
313
282
|
// Handle navigation from "Check your answers".
|
|
314
283
|
// Passing a dataCallback allows changes to formData from the
|
|
315
284
|
// CYA screen. This is necessary to allow changing the active
|
|
@@ -326,7 +295,7 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
|
|
|
326
295
|
hubDetails.sections.every(function (section) {
|
|
327
296
|
return section.tasks.every(function (task) {
|
|
328
297
|
if (task.pages.includes(page.pageId) && task.name !== currentTask.name) {
|
|
329
|
-
|
|
298
|
+
(0, _onTaskAction2.default)(task, pages, setCurrentTask, hubDetails, data, onPageChange);
|
|
330
299
|
return false;
|
|
331
300
|
}
|
|
332
301
|
return true;
|
|
@@ -364,7 +333,9 @@ var InternalFormRenderer = function InternalFormRenderer(_ref2) {
|
|
|
364
333
|
type: type
|
|
365
334
|
})), hub === _models.HubFormats.TASK && formState.pageId === _models.FormPages.HUB && /*#__PURE__*/_react.default.createElement(_TaskList.default, _extends({}, hubDetails, {
|
|
366
335
|
refNumber: data.businessKey,
|
|
367
|
-
onTaskAction: onTaskAction
|
|
336
|
+
onTaskAction: function onTaskAction(task) {
|
|
337
|
+
(0, _onTaskAction2.default)(task, pages, setCurrentTask, hubDetails, data, onPageChange);
|
|
338
|
+
},
|
|
368
339
|
formData: data
|
|
369
340
|
})), formState.page && !formState.cya && !formState.page.collection && /*#__PURE__*/_react.default.createElement(_FormPage.default, {
|
|
370
341
|
page: formState.page,
|
|
@@ -4,8 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _utils = _interopRequireDefault(require("../../../utils"));
|
|
8
7
|
var _models = require("../../../models");
|
|
8
|
+
var _utils = _interopRequireDefault(require("../../../utils"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
10
|
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
11
11
|
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; }
|
|
@@ -14,7 +14,6 @@ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key i
|
|
|
14
14
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
15
15
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
17
|
* @param {boolean} complete - true if task complete
|
|
19
18
|
* @param {boolean} currentPage - true if current page
|
|
20
19
|
* @param {TaskStates.TYPES|string} defaultState - default state to set task
|
|
@@ -35,14 +34,19 @@ var getCurrentTaskState = function getCurrentTaskState(_ref) {
|
|
|
35
34
|
|
|
36
35
|
/**
|
|
37
36
|
* check if dependent tasks have been completed
|
|
38
|
-
* @param
|
|
39
|
-
* @param mustBeComplete - tasks which are depended on
|
|
37
|
+
* @param {object} taskStates - list of tasks
|
|
38
|
+
* @param {array} mustBeComplete - tasks which are depended on
|
|
39
|
+
* @param {boolean} ignoreSkipped - skipped tasks don't need to have been completed
|
|
40
40
|
* @returns {boolean} true if dependent tasks complete
|
|
41
41
|
*/
|
|
42
|
-
var allDependentTasksComplete = function allDependentTasksComplete(
|
|
42
|
+
var allDependentTasksComplete = function allDependentTasksComplete(taskStates, mustBeComplete) {
|
|
43
|
+
var ignoreSkipped = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
43
44
|
return mustBeComplete.reduce(function (allComplete, taskName) {
|
|
44
|
-
var
|
|
45
|
-
|
|
45
|
+
var task = taskStates[taskName];
|
|
46
|
+
if (ignoreSkipped && (task === null || task === void 0 ? void 0 : task.state) === _models.TaskStates.TYPES.SKIPPED) {
|
|
47
|
+
return allComplete;
|
|
48
|
+
}
|
|
49
|
+
return allComplete && (task === null || task === void 0 ? void 0 : task.complete);
|
|
46
50
|
}, true);
|
|
47
51
|
};
|
|
48
52
|
var isPreviousTaskComplete = function isPreviousTaskComplete(tasks, taskIndex) {
|
|
@@ -61,20 +65,20 @@ var isPreviousTaskComplete = function isPreviousTaskComplete(tasks, taskIndex) {
|
|
|
61
65
|
* @param {object} task - current task object
|
|
62
66
|
* @param {number} taskIndex - order number of task in list
|
|
63
67
|
* @param {object[]} taskList - list of tasks (associated with section)
|
|
64
|
-
* @param
|
|
68
|
+
* @param {object} taskStates - map of task state
|
|
65
69
|
* @param {boolean} nonSequential - set if tasks can be performed out of order
|
|
66
70
|
* @param {boolean} allowFirst true if first task in list can be accepted
|
|
67
71
|
* @returns {TYPES|string} new state
|
|
68
72
|
*/
|
|
69
73
|
|
|
70
|
-
var updateTaskState = function updateTaskState(task, taskIndex, taskList,
|
|
74
|
+
var updateTaskState = function updateTaskState(task, taskIndex, taskList, taskStates) {
|
|
71
75
|
var nonSequential = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
72
76
|
var allowFirst = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;
|
|
73
|
-
if (
|
|
74
|
-
return getCurrentTaskState(
|
|
77
|
+
if (taskStates[task.name]) {
|
|
78
|
+
return getCurrentTaskState(taskStates[task.name], task.state);
|
|
75
79
|
}
|
|
76
80
|
if (nonSequential) {
|
|
77
|
-
if (task.depends_on && !allDependentTasksComplete(
|
|
81
|
+
if (task.depends_on && !allDependentTasksComplete(taskStates, task.depends_on, task.ignoreSkipped)) {
|
|
78
82
|
return _models.TaskStates.TYPES.CANNOT_START_YET;
|
|
79
83
|
}
|
|
80
84
|
return _models.TaskStates.TYPES.NOT_STARTED;
|
|
@@ -93,27 +97,20 @@ var updateTaskState = function updateTaskState(task, taskIndex, taskList, tasks)
|
|
|
93
97
|
* update all tasks in section with new state.
|
|
94
98
|
* note use of clone and forEach as some tasks depend on previous update
|
|
95
99
|
* @param {object} section - section to be processed
|
|
96
|
-
* @param
|
|
97
|
-
* @param nonSequential - true if non-sequential task performance allowed
|
|
98
|
-
* @param allowFirst - true if first task can be started
|
|
100
|
+
* @param {object} taskStates - task updates
|
|
101
|
+
* @param {boolean} nonSequential - true if non-sequential task performance allowed
|
|
102
|
+
* @param {boolean} allowFirst - true if first task can be started
|
|
99
103
|
* @returns {object} - updated section
|
|
100
104
|
*/
|
|
101
|
-
var updateTasks = function updateTasks(section,
|
|
105
|
+
var updateTasks = function updateTasks(section, taskStates, nonSequential, allowFirst) {
|
|
102
106
|
var clone = section.tasks.map(function (a) {
|
|
103
107
|
return _objectSpread({}, a);
|
|
104
108
|
});
|
|
105
|
-
clone.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
} else if (data && !_utils.default.Condition.met(currentTask.show_when, data[(_currentTask$show_whe = currentTask.show_when) === null || _currentTask$show_whe === void 0 ? void 0 : _currentTask$show_whe.field])) {
|
|
111
|
-
currentTask.state = _models.TaskStates.TYPES.SKIPPED;
|
|
112
|
-
} else {
|
|
113
|
-
var _task = task;
|
|
114
|
-
_task.state = updateTaskState(currentTask, taskIndex, taskList, tasks, nonSequential, allowFirst);
|
|
115
|
-
}
|
|
116
|
-
;
|
|
109
|
+
clone.filter(function (t) {
|
|
110
|
+
return t.state !== _models.TaskStates.TYPES.SKIPPED;
|
|
111
|
+
}).forEach(function (t, index) {
|
|
112
|
+
var task = t;
|
|
113
|
+
task.state = updateTaskState(task, index, clone, taskStates, nonSequential, allowFirst);
|
|
117
114
|
});
|
|
118
115
|
return clone;
|
|
119
116
|
};
|
|
@@ -142,28 +139,62 @@ var isPreviousSectionComplete = function isPreviousSectionComplete(sections, cur
|
|
|
142
139
|
/**
|
|
143
140
|
* update task states in sections
|
|
144
141
|
* @param {object[]} sections - array of sections
|
|
145
|
-
* @param {object}
|
|
142
|
+
* @param {object} taskStates - update task states
|
|
146
143
|
* @param {boolean} nonSequential - true if tasks can be performed non-sequentially
|
|
147
144
|
* @param {object} data - current form data
|
|
148
145
|
* @returns {object[]} - updated sections - note this is a clone
|
|
149
146
|
*/
|
|
150
|
-
var getUpdatedSectionStates = function getUpdatedSectionStates(sections,
|
|
147
|
+
var getUpdatedSectionStates = function getUpdatedSectionStates(sections, taskStates) {
|
|
151
148
|
var nonSequential = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
152
149
|
var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
150
|
+
// Make a clone and handle any hidden sections.
|
|
151
|
+
var clone = sections.map(function (section) {
|
|
152
|
+
var showWhen = section.show_when ? [section.show_when].flat() : [];
|
|
153
|
+
if (data && !_utils.default.Condition.meetsAll(showWhen, data)) {
|
|
154
|
+
return _objectSpread(_objectSpread({}, section), {}, {
|
|
155
|
+
skipped: true,
|
|
156
|
+
tasks: section.tasks.map(function (task) {
|
|
157
|
+
return _objectSpread(_objectSpread({}, task), {}, {
|
|
158
|
+
state: _models.TaskStates.TYPES.SKIPPED
|
|
159
|
+
});
|
|
160
|
+
})
|
|
161
|
+
});
|
|
164
162
|
}
|
|
165
163
|
;
|
|
166
|
-
|
|
164
|
+
return _objectSpread({}, section);
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
// Now iterate through the clone and handle any hidden tasks.
|
|
168
|
+
clone.forEach(function (s) {
|
|
169
|
+
var section = s;
|
|
170
|
+
section.tasks = section.tasks.map(function (task) {
|
|
171
|
+
var showWhen = task.show_when ? [task.show_when].flat() : [];
|
|
172
|
+
if (data && !_utils.default.Condition.meetsAll(showWhen, data)) {
|
|
173
|
+
return _objectSpread(_objectSpread({}, task), {}, {
|
|
174
|
+
state: _models.TaskStates.TYPES.SKIPPED
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
return _objectSpread({}, task);
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// Update the taskStates to account for skipped tasks.
|
|
182
|
+
var states = _objectSpread({}, taskStates);
|
|
183
|
+
clone.forEach(function (section) {
|
|
184
|
+
section.tasks.filter(function (t) {
|
|
185
|
+
return t.state === _models.TaskStates.TYPES.SKIPPED;
|
|
186
|
+
}).forEach(function (task) {
|
|
187
|
+
states[task.name] = _objectSpread(_objectSpread({}, states[task.name]), {}, {
|
|
188
|
+
state: _models.TaskStates.TYPES.SKIPPED
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// Now figure out all the task states.
|
|
194
|
+
clone.forEach(function (s, index) {
|
|
195
|
+
var section = s;
|
|
196
|
+
var allowFirst = index === 0 || isPreviousSectionComplete(clone, index);
|
|
197
|
+
section.tasks = updateTasks(section, states, nonSequential, allowFirst);
|
|
167
198
|
});
|
|
168
199
|
return clone;
|
|
169
200
|
};
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _getUpdatedSectionStates = _interopRequireDefault(require("./getUpdatedSectionStates"));
|
|
4
3
|
var _models = require("../../../models");
|
|
4
|
+
var _getUpdatedSectionStates = _interopRequireDefault(require("./getUpdatedSectionStates"));
|
|
5
5
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
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
|
+
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; }
|
|
9
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
11
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
8
12
|
describe('components.FormRenderer.helpers.getUpdatedSectionStates', function () {
|
|
9
13
|
describe('sequential tasks', function () {
|
|
10
14
|
it("should set all tasks to '".concat(_models.TaskStates.TYPES.CANNOT_START_YET, "' excluding the first which should be '").concat(_models.TaskStates.TYPES.NOT_STARTED, "'"), function () {
|
|
@@ -369,5 +373,86 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
369
373
|
expect(RESULT[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED); // Charlie
|
|
370
374
|
expect(RESULT[2].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED); // Delta
|
|
371
375
|
});
|
|
376
|
+
|
|
377
|
+
it('should not allow dependent state to start if incomplete dependencies are skipped, but skipped are not ignored', function () {
|
|
378
|
+
var TASKS = {
|
|
379
|
+
'Alpha': {
|
|
380
|
+
complete: true
|
|
381
|
+
},
|
|
382
|
+
'Bravo': {
|
|
383
|
+
complete: false,
|
|
384
|
+
state: _models.TaskStates.TYPES.SKIPPED
|
|
385
|
+
},
|
|
386
|
+
'Delta': {}
|
|
387
|
+
};
|
|
388
|
+
var RESULT = (0, _getUpdatedSectionStates.default)(SECTIONS, TASKS, NON_SEQUENTIAL);
|
|
389
|
+
expect(RESULT[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.CANNOT_START_YET); // Charlie
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
it('should allow dependent state to start if incomplete dependencies are skipped, and skipped are ignored', function () {
|
|
393
|
+
var SKIPPABLE_SECTIONS = [SECTIONS[0], _objectSpread(_objectSpread({}, SECTIONS[1]), {}, {
|
|
394
|
+
tasks: [_objectSpread(_objectSpread({}, SECTIONS[1].tasks[0]), {}, {
|
|
395
|
+
ignoreSkipped: true
|
|
396
|
+
})]
|
|
397
|
+
}), SECTIONS[2]];
|
|
398
|
+
var TASKS = {
|
|
399
|
+
'Alpha': {
|
|
400
|
+
complete: true
|
|
401
|
+
},
|
|
402
|
+
'Bravo': {
|
|
403
|
+
complete: false,
|
|
404
|
+
state: _models.TaskStates.TYPES.SKIPPED
|
|
405
|
+
},
|
|
406
|
+
'Delta': {}
|
|
407
|
+
};
|
|
408
|
+
var RESULT = (0, _getUpdatedSectionStates.default)(SKIPPABLE_SECTIONS, TASKS, NON_SEQUENTIAL);
|
|
409
|
+
expect(RESULT[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED); // Charlie
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
it('should automatically skip tasks that are not shown', function () {
|
|
413
|
+
var SHOW_WHEN_SECTIONS = [{
|
|
414
|
+
name: 'First',
|
|
415
|
+
tasks: [{
|
|
416
|
+
name: 'Alpha'
|
|
417
|
+
}]
|
|
418
|
+
}, {
|
|
419
|
+
name: 'Second',
|
|
420
|
+
tasks: [{
|
|
421
|
+
name: 'Bravo',
|
|
422
|
+
show_when: [{
|
|
423
|
+
field: 'echo',
|
|
424
|
+
op: '=',
|
|
425
|
+
value: 'foxtrot'
|
|
426
|
+
}, {
|
|
427
|
+
field: 'golf',
|
|
428
|
+
op: '=',
|
|
429
|
+
value: 'indigo'
|
|
430
|
+
} // shouldn't be shown
|
|
431
|
+
]
|
|
432
|
+
}]
|
|
433
|
+
}, {
|
|
434
|
+
name: 'Third',
|
|
435
|
+
tasks: [{
|
|
436
|
+
name: 'Charlie',
|
|
437
|
+
depends_on: ['Alpha', 'Bravo'],
|
|
438
|
+
ignoreSkipped: true
|
|
439
|
+
}]
|
|
440
|
+
}];
|
|
441
|
+
var TASKS = {
|
|
442
|
+
'Alpha': {
|
|
443
|
+
complete: true
|
|
444
|
+
},
|
|
445
|
+
'Bravo': {
|
|
446
|
+
complete: false
|
|
447
|
+
},
|
|
448
|
+
'Delta': {}
|
|
449
|
+
};
|
|
450
|
+
var DATA = {
|
|
451
|
+
echo: 'foxtrot',
|
|
452
|
+
golf: 'hotel'
|
|
453
|
+
};
|
|
454
|
+
var RESULT = (0, _getUpdatedSectionStates.default)(SHOW_WHEN_SECTIONS, TASKS, NON_SEQUENTIAL, DATA);
|
|
455
|
+
expect(RESULT[2].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED); // Charlie
|
|
456
|
+
});
|
|
372
457
|
});
|
|
373
458
|
});
|
|
@@ -13,7 +13,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
13
13
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
14
14
|
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
15
15
|
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
16
|
-
var onTaskAction = function onTaskAction(currentTask, pages, setCurrentTask, hubDetails, data, onPageChange
|
|
16
|
+
var onTaskAction = function onTaskAction(currentTask, pages, setCurrentTask, hubDetails, data, onPageChange) {
|
|
17
17
|
if (currentTask) {
|
|
18
18
|
var task = currentTask;
|
|
19
19
|
task.fullPages = [];
|
|
@@ -31,7 +31,7 @@ var onTaskAction = function onTaskAction(currentTask, pages, setCurrentTask, hub
|
|
|
31
31
|
} else if (task.customCYA) {
|
|
32
32
|
onPageChange(task.customCYA);
|
|
33
33
|
} else {
|
|
34
|
-
onPageChange(FormPages.CYA, state);
|
|
34
|
+
onPageChange(_models.FormPages.CYA, state);
|
|
35
35
|
}
|
|
36
36
|
} else if (task.state === _models.TaskStates.TYPES.IN_PROGRESS) {
|
|
37
37
|
var _currentPage = data.formStatus.tasks[currentTask.name].currentPage;
|
|
@@ -64,10 +64,7 @@ describe('components.FormRenderer.onTaskAction', function () {
|
|
|
64
64
|
setCurrentTask: mockSetCurrentTask,
|
|
65
65
|
hubDetails: {},
|
|
66
66
|
data: DATA,
|
|
67
|
-
onPageChange: mockOnPageChange
|
|
68
|
-
FormPages: {
|
|
69
|
-
CYA: 'cyaPage'
|
|
70
|
-
}
|
|
67
|
+
onPageChange: mockOnPageChange
|
|
71
68
|
};
|
|
72
69
|
var genericChecks = function genericChecks(currentTask) {
|
|
73
70
|
expect(_helpers.default.getPageArgs.length).toEqual(currentTask.pages.length);
|
|
@@ -136,7 +133,7 @@ describe('components.FormRenderer.onTaskAction', function () {
|
|
|
136
133
|
_onTaskAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
|
|
137
134
|
genericChecks(CUSTOM_ARGS.currentTask);
|
|
138
135
|
expect(onPageChangeArgs.length).toEqual(1);
|
|
139
|
-
expect(onPageChangeArgs[0].page).toEqual(
|
|
136
|
+
expect(onPageChangeArgs[0].page).toEqual(_models.FormPages.CYA);
|
|
140
137
|
expect(onPageChangeArgs[0].state).toEqual(CUSTOM_ARGS.currentTask);
|
|
141
138
|
});
|
|
142
139
|
});
|