@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
- }, task.name) : task.name), /*#__PURE__*/_react.default.createElement(_TaskState.default, {
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 inactive link if state is cannotStartYet', function () {
41
- var NAME = 'taskName';
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(NAME);
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 _render3 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
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 = _render3.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 call then given onClick function when the link is clicked', function () {
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 _render4 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_Task.default, {
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 = _render4.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 _render4 = (0, _react.render)( /*#__PURE__*/_react2.default.createElement(_TaskList.default, {
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 = _render4.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];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ukhomeoffice/cop-react-form-renderer",
3
- "version": "4.10.0",
3
+ "version": "4.11.1",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "clean": "rimraf dist",