@ukhomeoffice/cop-react-form-renderer 4.10.0 → 4.11.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.
|
@@ -58,6 +58,7 @@ var Task = function Task(_ref) {
|
|
|
58
58
|
setLinkActive(task.state !== _models.TaskStates.TYPES.CANNOT_START_YET);
|
|
59
59
|
setCurrentState(task.state);
|
|
60
60
|
}, [task.state, setLinkActive, setCurrentState]);
|
|
61
|
+
var displayName = task.displayName || task.name;
|
|
61
62
|
return /*#__PURE__*/_react.default.createElement("li", {
|
|
62
63
|
className: classes('item')
|
|
63
64
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
@@ -72,7 +73,7 @@ var Task = function Task(_ref) {
|
|
|
72
73
|
}
|
|
73
74
|
},
|
|
74
75
|
tabIndex: "0"
|
|
75
|
-
},
|
|
76
|
+
}, displayName) : displayName), /*#__PURE__*/_react.default.createElement(_TaskState.default, {
|
|
76
77
|
state: currentState
|
|
77
78
|
}));
|
|
78
79
|
};
|
|
@@ -81,7 +82,8 @@ Task.propTypes = {
|
|
|
81
82
|
task: _propTypes.default.shape({
|
|
82
83
|
name: _propTypes.default.string.isRequired,
|
|
83
84
|
pages: _propTypes.default.array.isRequired,
|
|
84
|
-
state: _propTypes.default.string
|
|
85
|
+
state: _propTypes.default.string,
|
|
86
|
+
displayName: _propTypes.default.string
|
|
85
87
|
}).isRequired,
|
|
86
88
|
onClick: _propTypes.default.func.isRequired
|
|
87
89
|
};
|
|
@@ -35,13 +35,14 @@ describe('components', function () {
|
|
|
35
35
|
var span = container.childNodes[0].childNodes[0];
|
|
36
36
|
var state = container.childNodes[0].childNodes[1];
|
|
37
37
|
expect(span.classList).toContain('hods-task-list__task-name');
|
|
38
|
+
expect(span.textContent).toEqual(TASK.name);
|
|
38
39
|
expect(state.textContent).toEqual('Completed');
|
|
39
40
|
});
|
|
40
|
-
it('should render a task with
|
|
41
|
-
var
|
|
42
|
-
var STATE = _models.TaskStates.TYPES.CANNOT_START_YET;
|
|
41
|
+
it('should render a task with a displayName', function () {
|
|
42
|
+
var STATE = _models.TaskStates.TYPES.COMPLETE;
|
|
43
43
|
var TASK = {
|
|
44
44
|
name: 'taskName',
|
|
45
|
+
displayName: 'Alpha Bravo',
|
|
45
46
|
pages: ['pageName'],
|
|
46
47
|
state: STATE
|
|
47
48
|
};
|
|
@@ -54,9 +55,33 @@ describe('components', function () {
|
|
|
54
55
|
})),
|
|
55
56
|
container = _render2.container;
|
|
56
57
|
|
|
58
|
+
expect(container.childNodes.length).toEqual(1);
|
|
59
|
+
expect(container.childNodes[0].classList).toContain('hods-task-list__item');
|
|
60
|
+
var span = container.childNodes[0].childNodes[0];
|
|
61
|
+
var state = container.childNodes[0].childNodes[1];
|
|
62
|
+
expect(span.classList).toContain('hods-task-list__task-name');
|
|
63
|
+
expect(span.textContent).toEqual(TASK.displayName);
|
|
64
|
+
expect(state.textContent).toEqual('Completed');
|
|
65
|
+
});
|
|
66
|
+
it('should render a task with inactive link if state is cannotStartYet', function () {
|
|
67
|
+
var STATE = _models.TaskStates.TYPES.CANNOT_START_YET;
|
|
68
|
+
var TASK = {
|
|
69
|
+
name: 'taskName',
|
|
70
|
+
pages: ['pageName'],
|
|
71
|
+
state: STATE
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
var ON_CLICK = function ON_CLICK() {};
|
|
75
|
+
|
|
76
|
+
var _render3 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
|
|
77
|
+
task: TASK,
|
|
78
|
+
onClick: ON_CLICK
|
|
79
|
+
})),
|
|
80
|
+
container = _render3.container;
|
|
81
|
+
|
|
57
82
|
var span = container.childNodes[0].childNodes[0];
|
|
58
83
|
expect(span.childNodes[0].tagName).toEqual(undefined);
|
|
59
|
-
expect(span.textContent).toEqual(
|
|
84
|
+
expect(span.textContent).toEqual(TASK.name);
|
|
60
85
|
});
|
|
61
86
|
it('should render a task with a link if state is not cannotStartYet', function () {
|
|
62
87
|
var STATE = _models.TaskStates.TYPES.IN_PROGRESS;
|
|
@@ -68,17 +93,40 @@ describe('components', function () {
|
|
|
68
93
|
|
|
69
94
|
var ON_CLICK = function ON_CLICK() {};
|
|
70
95
|
|
|
71
|
-
var
|
|
96
|
+
var _render4 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
|
|
72
97
|
task: TASK,
|
|
73
98
|
onClick: ON_CLICK
|
|
74
99
|
})),
|
|
75
|
-
container =
|
|
100
|
+
container = _render4.container;
|
|
76
101
|
|
|
77
102
|
var span = container.childNodes[0].childNodes[0];
|
|
78
103
|
expect(span.childNodes.length).toEqual(1);
|
|
79
104
|
expect(span.childNodes[0].tagName).toEqual('A');
|
|
105
|
+
expect(span.textContent).toEqual(TASK.name);
|
|
80
106
|
});
|
|
81
|
-
it('should
|
|
107
|
+
it('should render the displayName of a task with a link if state is not cannotStartYet', function () {
|
|
108
|
+
var STATE = _models.TaskStates.TYPES.IN_PROGRESS;
|
|
109
|
+
var TASK = {
|
|
110
|
+
name: 'taskName',
|
|
111
|
+
displayName: 'Charlie Delta',
|
|
112
|
+
pages: ['pageName'],
|
|
113
|
+
state: STATE
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
var ON_CLICK = function ON_CLICK() {};
|
|
117
|
+
|
|
118
|
+
var _render5 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
|
|
119
|
+
task: TASK,
|
|
120
|
+
onClick: ON_CLICK
|
|
121
|
+
})),
|
|
122
|
+
container = _render5.container;
|
|
123
|
+
|
|
124
|
+
var span = container.childNodes[0].childNodes[0];
|
|
125
|
+
expect(span.childNodes.length).toEqual(1);
|
|
126
|
+
expect(span.childNodes[0].tagName).toEqual('A');
|
|
127
|
+
expect(span.textContent).toEqual(TASK.displayName);
|
|
128
|
+
});
|
|
129
|
+
it('should call the given onClick function when the link is clicked', function () {
|
|
82
130
|
var STATE = _models.TaskStates.TYPES.IN_PROGRESS;
|
|
83
131
|
var TASK = {
|
|
84
132
|
name: 'taskName',
|
|
@@ -91,16 +139,50 @@ describe('components', function () {
|
|
|
91
139
|
ON_CLICK_CALLS.push(value);
|
|
92
140
|
};
|
|
93
141
|
|
|
94
|
-
var
|
|
142
|
+
var _render6 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
|
|
95
143
|
task: TASK,
|
|
96
144
|
onClick: ON_CLICK
|
|
97
145
|
})),
|
|
98
|
-
container =
|
|
146
|
+
container = _render6.container;
|
|
99
147
|
|
|
100
148
|
var link = container.childNodes[0].childNodes[0].childNodes[0];
|
|
101
149
|
|
|
102
150
|
_react.fireEvent.click(link);
|
|
103
151
|
|
|
152
|
+
expect(ON_CLICK_CALLS.length).toEqual(1);
|
|
153
|
+
expect(ON_CLICK_CALLS[0]).toEqual({
|
|
154
|
+
pages: ['pageName'],
|
|
155
|
+
name: "taskName",
|
|
156
|
+
state: STATE
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
it('should call the given onClick function when the enter key is pressed on the link', function () {
|
|
160
|
+
var STATE = _models.TaskStates.TYPES.IN_PROGRESS;
|
|
161
|
+
var TASK = {
|
|
162
|
+
name: 'taskName',
|
|
163
|
+
pages: ['pageName'],
|
|
164
|
+
state: STATE
|
|
165
|
+
};
|
|
166
|
+
var ON_CLICK_CALLS = [];
|
|
167
|
+
|
|
168
|
+
var ON_CLICK = function ON_CLICK(value) {
|
|
169
|
+
ON_CLICK_CALLS.push(value);
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
var _render7 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
|
|
173
|
+
task: TASK,
|
|
174
|
+
onClick: ON_CLICK
|
|
175
|
+
})),
|
|
176
|
+
container = _render7.container;
|
|
177
|
+
|
|
178
|
+
var link = container.childNodes[0].childNodes[0].childNodes[0]; // The keyPress event needs charCode: 13 or it fails; bug with the library.
|
|
179
|
+
|
|
180
|
+
_react.fireEvent.keyPress(link, {
|
|
181
|
+
key: 'Enter',
|
|
182
|
+
code: 13,
|
|
183
|
+
charCode: 13
|
|
184
|
+
});
|
|
185
|
+
|
|
104
186
|
expect(ON_CLICK_CALLS.length).toEqual(1);
|
|
105
187
|
expect(ON_CLICK_CALLS[0]).toEqual({
|
|
106
188
|
pages: ['pageName'],
|
|
@@ -67,7 +67,7 @@ var TaskList = function TaskList(_ref) {
|
|
|
67
67
|
|
|
68
68
|
return /*#__PURE__*/_react.default.createElement("div", _extends({}, attrs, {
|
|
69
69
|
className: classes()
|
|
70
|
-
}), refNumber && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", {
|
|
70
|
+
}), refNumber && refTitle && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("p", {
|
|
71
71
|
className: "govuk-body govuk-!-margin-bottom-0"
|
|
72
72
|
}, /*#__PURE__*/_react.default.createElement("strong", {
|
|
73
73
|
className: "tasklist-summary"
|
|
@@ -97,14 +97,15 @@ var TaskList = function TaskList(_ref) {
|
|
|
97
97
|
};
|
|
98
98
|
|
|
99
99
|
TaskList.propTypes = {
|
|
100
|
-
refNumber: _propTypes.default.string,
|
|
101
100
|
refTitle: _propTypes.default.string,
|
|
101
|
+
refNumber: _propTypes.default.string,
|
|
102
102
|
sections: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
103
103
|
name: _propTypes.default.string.isRequired,
|
|
104
104
|
tasks: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
105
105
|
name: _propTypes.default.string.isRequired,
|
|
106
106
|
pages: _propTypes.default.array.isRequired,
|
|
107
|
-
state: _propTypes.default.string
|
|
107
|
+
state: _propTypes.default.string,
|
|
108
|
+
displayName: _propTypes.default.string
|
|
108
109
|
})).isRequired
|
|
109
110
|
})).isRequired,
|
|
110
111
|
classBlock: _propTypes.default.string,
|
|
@@ -163,6 +163,53 @@ describe('components', function () {
|
|
|
163
163
|
expect(subSectionOne.childNodes[0].textContent).toEqual('');
|
|
164
164
|
expect(subSectionOne.childNodes[1].textContent).toEqual('These are your tasks');
|
|
165
165
|
});
|
|
166
|
+
it('should not display the reference if there is no reference title', function () {
|
|
167
|
+
var COP_REF = '123';
|
|
168
|
+
var sections = [{
|
|
169
|
+
name: 'These are your tasks',
|
|
170
|
+
tasks: [{
|
|
171
|
+
name: 'Nice task',
|
|
172
|
+
state: 'complete',
|
|
173
|
+
pages: ['pageOne']
|
|
174
|
+
}, {
|
|
175
|
+
name: 'Ok task',
|
|
176
|
+
state: 'inProgress',
|
|
177
|
+
pages: ['pageTwo']
|
|
178
|
+
}, {
|
|
179
|
+
name: 'Terrible task',
|
|
180
|
+
state: 'notStarted',
|
|
181
|
+
pages: ['pageThree']
|
|
182
|
+
}]
|
|
183
|
+
}, {
|
|
184
|
+
name: 'These are your extra bonus tasks',
|
|
185
|
+
tasks: [{
|
|
186
|
+
name: 'Nice task',
|
|
187
|
+
state: 'complete',
|
|
188
|
+
pages: ['pageFour']
|
|
189
|
+
}, {
|
|
190
|
+
name: 'Ok task',
|
|
191
|
+
state: 'cannotStartYet',
|
|
192
|
+
pages: ['pageFive']
|
|
193
|
+
}, {
|
|
194
|
+
name: 'Terrible task',
|
|
195
|
+
state: 'cannotStartYet',
|
|
196
|
+
pages: ['pageSix']
|
|
197
|
+
}]
|
|
198
|
+
}];
|
|
199
|
+
|
|
200
|
+
var _render4 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskList.default, {
|
|
201
|
+
refNumber: COP_REF,
|
|
202
|
+
sections: sections
|
|
203
|
+
})),
|
|
204
|
+
container = _render4.container;
|
|
205
|
+
|
|
206
|
+
expect(container.childNodes.length).toEqual(1);
|
|
207
|
+
expect(container.childNodes[0].childNodes.length).toEqual(6); // The first child is now the incomplete text.
|
|
208
|
+
|
|
209
|
+
var incompleteForm = container.childNodes[0].childNodes[0];
|
|
210
|
+
expect(incompleteForm.tagName).toEqual('P');
|
|
211
|
+
expect(incompleteForm.textContent).toEqual('Incomplete form');
|
|
212
|
+
});
|
|
166
213
|
});
|
|
167
214
|
it('should pass the the selected task to the given onTaskAction function', function () {
|
|
168
215
|
var COP_REF = '123';
|
|
@@ -190,13 +237,13 @@ describe('components', function () {
|
|
|
190
237
|
}]
|
|
191
238
|
}];
|
|
192
239
|
|
|
193
|
-
var
|
|
240
|
+
var _render5 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskList.default, {
|
|
194
241
|
refNumber: COP_REF,
|
|
195
242
|
refTitle: REF_TITLE,
|
|
196
243
|
sections: sections,
|
|
197
244
|
onTaskAction: ON_CLICK
|
|
198
245
|
})),
|
|
199
|
-
container =
|
|
246
|
+
container = _render5.container;
|
|
200
247
|
|
|
201
248
|
var firstTask = container.childNodes[0].childNodes[5].childNodes[0].childNodes[0].childNodes[0];
|
|
202
249
|
var secondTask = container.childNodes[0].childNodes[5].childNodes[1].childNodes[0].childNodes[0];
|