@ukhomeoffice/cop-react-form-renderer 1.0.0 → 2.0.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/FormPage/FormPage.js +8 -2
- package/dist/components/FormPage/FormPage.test.js +2 -2
- package/dist/components/FormRenderer/FormRenderer.js +26 -10
- package/dist/components/FormRenderer/handlers/getPageId.js +1 -10
- package/dist/components/FormRenderer/handlers/getPageId.test.js +5 -31
- package/dist/components/FormRenderer/handlers/handlers.test.js +2 -2
- package/dist/components/FormRenderer/helpers/getNextPageId.js +33 -26
- package/dist/components/FormRenderer/helpers/getNextPageId.test.js +89 -7
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +27 -0
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +209 -0
- package/dist/components/FormRenderer/helpers/index.js +4 -1
- package/dist/components/PageActions/PageActions.stories.mdx +1 -1
- package/dist/components/PageActions/PageActions.test.js +2 -2
- package/dist/components/SummaryList/RowAction.js +1 -1
- package/dist/components/SummaryList/RowAction.test.js +6 -6
- package/dist/components/SummaryList/SummaryList.js +1 -1
- package/dist/components/SummaryList/helpers/getRowActionAttributes.js +2 -2
- package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +4 -4
- package/dist/json/areYouACivilServant.json +7 -0
- package/dist/json/firstForm.json +94 -0
- package/dist/json/grade.json +108 -0
- package/dist/json/saveAndContinue.json +98 -0
- package/dist/json/team.json +17351 -0
- package/dist/json/userProfile.data.json +14 -0
- package/dist/json/userProfile.json +276 -0
- package/dist/models/ComponentTypes.js +4 -0
- package/dist/utils/CheckYourAnswers/getCYAAction.js +24 -3
- package/dist/utils/CheckYourAnswers/getCYAAction.test.js +62 -15
- package/dist/utils/CheckYourAnswers/getCYARow.js +8 -2
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +11 -5
- package/dist/utils/Component/getComponent.js +24 -0
- package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +75 -0
- package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +129 -0
- package/dist/utils/Component/getComponentTests/getComponent.date.test.js +129 -0
- package/dist/utils/Component/getComponentTests/getComponent.email.test.js +80 -0
- package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +33 -0
- package/dist/utils/Component/getComponentTests/getComponent.html.test.js +45 -0
- package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +31 -0
- package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +80 -0
- package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +125 -0
- package/dist/utils/Component/getComponentTests/getComponent.text.test.js +80 -0
- package/dist/utils/Component/getComponentTests/getComponent.textarea.test.js +76 -0
- package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +14 -0
- package/dist/utils/Component/isEditable.js +1 -1
- package/dist/utils/Data/refDataToOptions.js +4 -0
- package/dist/utils/Data/refDataToOptions.test.js +30 -0
- package/dist/utils/FormPage/getEditableComponents.js +28 -0
- package/dist/utils/FormPage/getEditableComponents.test.js +75 -0
- package/dist/utils/FormPage/getFormPage.js +5 -1
- package/dist/utils/FormPage/getPageActions.js +66 -0
- package/dist/utils/FormPage/getPageActions.test.js +89 -0
- package/dist/utils/FormPage/index.js +7 -1
- package/dist/utils/FormPage/showFormPage.js +81 -0
- package/dist/utils/FormPage/showFormPage.test.js +131 -0
- package/dist/utils/Validate/validateComponent.js +4 -2
- package/package.json +9 -5
- package/dist/utils/Component/getComponent.test.js +0 -361
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _showFormPage = _interopRequireDefault(require("./showFormPage"));
|
|
4
|
+
|
|
5
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
|
+
|
|
7
|
+
describe('utils', function () {
|
|
8
|
+
describe('FormPage', function () {
|
|
9
|
+
describe('showFormPage', function () {
|
|
10
|
+
var DATA = {
|
|
11
|
+
alpha: 'Alpha',
|
|
12
|
+
bravo: 'Bravo'
|
|
13
|
+
};
|
|
14
|
+
var HTML = {
|
|
15
|
+
type: 'html',
|
|
16
|
+
tagName: 'p',
|
|
17
|
+
content: 'Alpha'
|
|
18
|
+
};
|
|
19
|
+
var INSET_TEXT = {
|
|
20
|
+
type: 'inset-text',
|
|
21
|
+
content: 'Bravo'
|
|
22
|
+
};
|
|
23
|
+
var HEADING = {
|
|
24
|
+
type: 'heading',
|
|
25
|
+
size: 'm',
|
|
26
|
+
content: 'Charlie'
|
|
27
|
+
};
|
|
28
|
+
it('should NOT be shown when the page is null', function () {
|
|
29
|
+
expect((0, _showFormPage.default)(null, DATA)).toBeFalsy();
|
|
30
|
+
});
|
|
31
|
+
it('should NOT be shown when the page has a single show_when condition that is NOT matched', function () {
|
|
32
|
+
var PAGE = {
|
|
33
|
+
show_when: {
|
|
34
|
+
field: 'charlie',
|
|
35
|
+
op: '=',
|
|
36
|
+
value: 'Charlie'
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
expect((0, _showFormPage.default)(PAGE, DATA)).toBeFalsy();
|
|
40
|
+
});
|
|
41
|
+
it('should NOT be shown when the page has a multiple show_when conditions and at least one is NOT matched', function () {
|
|
42
|
+
var PAGE = {
|
|
43
|
+
show_when: [{
|
|
44
|
+
field: 'alpha',
|
|
45
|
+
op: '=',
|
|
46
|
+
value: 'Alpha'
|
|
47
|
+
}, {
|
|
48
|
+
field: 'charlie',
|
|
49
|
+
op: '=',
|
|
50
|
+
value: 'Charlie'
|
|
51
|
+
}]
|
|
52
|
+
};
|
|
53
|
+
expect((0, _showFormPage.default)(PAGE, DATA)).toBeFalsy();
|
|
54
|
+
});
|
|
55
|
+
it('SHOULD be shown when the page has a single show_when condition that IS matched', function () {
|
|
56
|
+
var PAGE = {
|
|
57
|
+
show_when: {
|
|
58
|
+
field: 'alpha',
|
|
59
|
+
op: '=',
|
|
60
|
+
value: 'Alpha'
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
expect((0, _showFormPage.default)(PAGE, DATA)).toBeTruthy();
|
|
64
|
+
});
|
|
65
|
+
it('SHOULD be shown when the page has a multiple show_when conditions that are ALL matched', function () {
|
|
66
|
+
var PAGE = {
|
|
67
|
+
show_when: [{
|
|
68
|
+
field: 'alpha',
|
|
69
|
+
op: '=',
|
|
70
|
+
value: 'Alpha'
|
|
71
|
+
}, {
|
|
72
|
+
field: 'charlie',
|
|
73
|
+
op: '!=',
|
|
74
|
+
value: 'Charlie'
|
|
75
|
+
}]
|
|
76
|
+
};
|
|
77
|
+
expect((0, _showFormPage.default)(PAGE, DATA)).toBeTruthy();
|
|
78
|
+
});
|
|
79
|
+
it('SHOULD be shown when the page has NO show_when conditions and NO editable components', function () {
|
|
80
|
+
var PAGE = {
|
|
81
|
+
components: [HTML, INSET_TEXT, HEADING]
|
|
82
|
+
};
|
|
83
|
+
expect((0, _showFormPage.default)(PAGE, DATA)).toBeTruthy();
|
|
84
|
+
});
|
|
85
|
+
it('should NOT be shown when the page has NO show_when conditions and NO SHOWN editable components', function () {
|
|
86
|
+
var TEXT = {
|
|
87
|
+
type: 'text',
|
|
88
|
+
show_when: {
|
|
89
|
+
field: 'charlie',
|
|
90
|
+
op: '=',
|
|
91
|
+
value: 'Charlie'
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
var RADIOS = {
|
|
95
|
+
type: 'radios',
|
|
96
|
+
show_when: {
|
|
97
|
+
field: 'charlie',
|
|
98
|
+
op: '=',
|
|
99
|
+
value: 'Charlie'
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
var PAGE = {
|
|
103
|
+
components: [TEXT, RADIOS]
|
|
104
|
+
};
|
|
105
|
+
expect((0, _showFormPage.default)(PAGE, DATA)).toBeFalsy();
|
|
106
|
+
});
|
|
107
|
+
it('SHOULD be shown when the page has NO show_when conditions and AT LEAST ONE SHOWN editable components', function () {
|
|
108
|
+
var TEXT = {
|
|
109
|
+
type: 'text',
|
|
110
|
+
show_when: {
|
|
111
|
+
field: 'alpha',
|
|
112
|
+
op: '=',
|
|
113
|
+
value: 'Alpha'
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
var RADIOS = {
|
|
117
|
+
type: 'radios',
|
|
118
|
+
show_when: {
|
|
119
|
+
field: 'charlie',
|
|
120
|
+
op: '=',
|
|
121
|
+
value: 'Charlie'
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
var PAGE = {
|
|
125
|
+
components: [TEXT, RADIOS]
|
|
126
|
+
};
|
|
127
|
+
expect((0, _showFormPage.default)(PAGE, DATA)).toBeTruthy();
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
});
|
|
@@ -7,10 +7,12 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _models = require("../../models");
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _showComponent = _interopRequireDefault(require("../Component/showComponent"));
|
|
11
11
|
|
|
12
12
|
var _validateEmail = _interopRequireDefault(require("./validateEmail"));
|
|
13
13
|
|
|
14
|
+
var _validateRequired = _interopRequireDefault(require("./validateRequired"));
|
|
15
|
+
|
|
14
16
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
17
|
|
|
16
18
|
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
@@ -25,7 +27,7 @@ var validateComponent = function validateComponent(component, formData) {
|
|
|
25
27
|
var error = undefined;
|
|
26
28
|
var data = formData && _typeof(formData) === 'object' ? formData : {};
|
|
27
29
|
|
|
28
|
-
if (component) {
|
|
30
|
+
if (component && (0, _showComponent.default)(component, formData)) {
|
|
29
31
|
var value = data[component.fieldId];
|
|
30
32
|
|
|
31
33
|
if (component.required) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ukhomeoffice/cop-react-form-renderer",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"scripts": {
|
|
6
6
|
"clean": "rimraf dist",
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"storybook": "yarn storybook:start",
|
|
14
14
|
"deploy-storybook": "storybook-to-ghpages -e storybook-static",
|
|
15
15
|
"compile": "yarn clean && cross-env NODE_ENV=production babel src --out-dir dist --copy-files && yarn post-compile",
|
|
16
|
-
"post-compile": "rimraf dist/*.test.* dist/**/*.test.* dist/**/*.stories.* dist/docs dist/
|
|
16
|
+
"post-compile": "rimraf dist/*.test.* dist/**/*.test.* dist/**/*.stories.* dist/docs dist/assets"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@ukhomeoffice/cop-react-components": "
|
|
19
|
+
"@ukhomeoffice/cop-react-components": "1.1.2",
|
|
20
20
|
"axios": "^0.21.1",
|
|
21
21
|
"govuk-frontend": "^3.13.0",
|
|
22
22
|
"web-vitals": "^1.0.1"
|
|
@@ -75,8 +75,12 @@
|
|
|
75
75
|
],
|
|
76
76
|
"overrides": [
|
|
77
77
|
{
|
|
78
|
-
"files": [
|
|
79
|
-
|
|
78
|
+
"files": [
|
|
79
|
+
"**/*.stories.*"
|
|
80
|
+
],
|
|
81
|
+
"rules": {
|
|
82
|
+
"import/no-anonymous-default-export": "off"
|
|
83
|
+
}
|
|
80
84
|
}
|
|
81
85
|
]
|
|
82
86
|
},
|
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _react = require("@testing-library/react");
|
|
4
|
-
|
|
5
|
-
var _models = require("../../models");
|
|
6
|
-
|
|
7
|
-
var _getComponent = _interopRequireDefault(require("./getComponent"));
|
|
8
|
-
|
|
9
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
-
|
|
11
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
12
|
-
|
|
13
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
14
|
-
|
|
15
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
16
|
-
|
|
17
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
18
|
-
|
|
19
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
20
|
-
|
|
21
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
22
|
-
|
|
23
|
-
describe('utils', function () {
|
|
24
|
-
describe('Component', function () {
|
|
25
|
-
describe('get', function () {
|
|
26
|
-
it('should return null for an unknown type', function () {
|
|
27
|
-
expect((0, _getComponent.default)({
|
|
28
|
-
type: 'unknown'
|
|
29
|
-
})).toBeNull();
|
|
30
|
-
});
|
|
31
|
-
it('should return a p tag by default for an HTML component', function () {
|
|
32
|
-
var ID = 'test-id';
|
|
33
|
-
var CONTENT = 'HTML content';
|
|
34
|
-
var COMPONENT = {
|
|
35
|
-
type: _models.ComponentTypes.HTML,
|
|
36
|
-
content: CONTENT,
|
|
37
|
-
'data-testid': ID
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
var _render = (0, _react.render)((0, _getComponent.default)(COMPONENT)),
|
|
41
|
-
container = _render.container;
|
|
42
|
-
|
|
43
|
-
var p = (0, _react.getByTestId)(container, ID);
|
|
44
|
-
expect(p.innerHTML).toContain(CONTENT);
|
|
45
|
-
expect(p.tagName).toEqual('P');
|
|
46
|
-
});
|
|
47
|
-
it('should return an appropriate tag for an HTML component', function () {
|
|
48
|
-
var ID = 'test-id';
|
|
49
|
-
var TAG_NAME = 'hr';
|
|
50
|
-
var COMPONENT = {
|
|
51
|
-
type: _models.ComponentTypes.HTML,
|
|
52
|
-
tagName: TAG_NAME,
|
|
53
|
-
'data-testid': ID
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
var _render2 = (0, _react.render)((0, _getComponent.default)(COMPONENT)),
|
|
57
|
-
container = _render2.container;
|
|
58
|
-
|
|
59
|
-
var hr = (0, _react.getByTestId)(container, ID);
|
|
60
|
-
expect(hr.tagName).toEqual('HR');
|
|
61
|
-
});
|
|
62
|
-
it('should return an appropriately rendered heading component', function () {
|
|
63
|
-
var ID = 'test-id';
|
|
64
|
-
var SIZE = 'm';
|
|
65
|
-
var CONTENT = 'Heading text';
|
|
66
|
-
var COMPONENT = {
|
|
67
|
-
type: _models.ComponentTypes.HEADING,
|
|
68
|
-
size: SIZE,
|
|
69
|
-
content: CONTENT,
|
|
70
|
-
'data-testid': ID
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
var _render3 = (0, _react.render)((0, _getComponent.default)(COMPONENT)),
|
|
74
|
-
container = _render3.container;
|
|
75
|
-
|
|
76
|
-
var heading = (0, _react.getByTestId)(container, ID);
|
|
77
|
-
expect(heading.innerHTML).toContain(CONTENT);
|
|
78
|
-
expect(heading.tagName).toEqual('H2');
|
|
79
|
-
expect(heading.classList).toContain("govuk-heading-".concat(SIZE));
|
|
80
|
-
});
|
|
81
|
-
it('should return an appropriately rendered inset-text component', function () {
|
|
82
|
-
var ID = 'test-id';
|
|
83
|
-
var CONTENT = 'Heading text';
|
|
84
|
-
var COMPONENT = {
|
|
85
|
-
type: _models.ComponentTypes.INSET_TEXT,
|
|
86
|
-
content: CONTENT,
|
|
87
|
-
'data-testid': ID
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
var _render4 = (0, _react.render)((0, _getComponent.default)(COMPONENT)),
|
|
91
|
-
container = _render4.container;
|
|
92
|
-
|
|
93
|
-
var insetText = (0, _react.getByTestId)(container, ID);
|
|
94
|
-
expect(insetText.innerHTML).toContain(CONTENT);
|
|
95
|
-
expect(insetText.tagName).toEqual('DIV');
|
|
96
|
-
expect(insetText.classList).toContain('govuk-inset-text');
|
|
97
|
-
});
|
|
98
|
-
it('should return an appropriately rendered text component', function () {
|
|
99
|
-
var ID = 'test-id';
|
|
100
|
-
var FIELD_ID = 'field-id';
|
|
101
|
-
var LABEL = 'label';
|
|
102
|
-
var COMPONENT = {
|
|
103
|
-
type: _models.ComponentTypes.TEXT,
|
|
104
|
-
id: ID,
|
|
105
|
-
fieldId: FIELD_ID,
|
|
106
|
-
label: LABEL,
|
|
107
|
-
'data-testid': ID
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
var _render5 = (0, _react.render)((0, _getComponent.default)(COMPONENT)),
|
|
111
|
-
container = _render5.container;
|
|
112
|
-
|
|
113
|
-
var _getAllByTestId = (0, _react.getAllByTestId)(container, ID),
|
|
114
|
-
_getAllByTestId2 = _slicedToArray(_getAllByTestId, 2),
|
|
115
|
-
formGroup = _getAllByTestId2[0],
|
|
116
|
-
input = _getAllByTestId2[1];
|
|
117
|
-
|
|
118
|
-
expect(formGroup.tagName).toEqual('DIV');
|
|
119
|
-
expect(formGroup.classList).toContain('govuk-form-group');
|
|
120
|
-
var label = undefined;
|
|
121
|
-
formGroup.childNodes.forEach(function (node) {
|
|
122
|
-
// Check if it's an element.
|
|
123
|
-
if (node instanceof Element && node.tagName === 'LABEL') {
|
|
124
|
-
label = node;
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
expect(label).toBeDefined();
|
|
128
|
-
expect(label.innerHTML).toContain(LABEL);
|
|
129
|
-
expect(label.getAttribute('for')).toEqual(ID);
|
|
130
|
-
expect(input.tagName).toEqual('INPUT');
|
|
131
|
-
expect(input.classList).toContain('govuk-input');
|
|
132
|
-
expect(input.id).toEqual(ID);
|
|
133
|
-
});
|
|
134
|
-
it('should return an appropriately rendered email component', function () {
|
|
135
|
-
var ID = 'test-id';
|
|
136
|
-
var FIELD_ID = 'field-id';
|
|
137
|
-
var LABEL = 'label';
|
|
138
|
-
var COMPONENT = {
|
|
139
|
-
type: _models.ComponentTypes.EMAIL,
|
|
140
|
-
id: ID,
|
|
141
|
-
fieldId: FIELD_ID,
|
|
142
|
-
label: LABEL,
|
|
143
|
-
'data-testid': ID
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
var _render6 = (0, _react.render)((0, _getComponent.default)(COMPONENT)),
|
|
147
|
-
container = _render6.container;
|
|
148
|
-
|
|
149
|
-
var _getAllByTestId3 = (0, _react.getAllByTestId)(container, ID),
|
|
150
|
-
_getAllByTestId4 = _slicedToArray(_getAllByTestId3, 2),
|
|
151
|
-
formGroup = _getAllByTestId4[0],
|
|
152
|
-
input = _getAllByTestId4[1];
|
|
153
|
-
|
|
154
|
-
expect(formGroup.tagName).toEqual('DIV');
|
|
155
|
-
expect(formGroup.classList).toContain('govuk-form-group');
|
|
156
|
-
var label = undefined;
|
|
157
|
-
formGroup.childNodes.forEach(function (node) {
|
|
158
|
-
// Check if it's an element.
|
|
159
|
-
if (node instanceof Element && node.tagName === 'LABEL') {
|
|
160
|
-
label = node;
|
|
161
|
-
}
|
|
162
|
-
});
|
|
163
|
-
expect(label).toBeDefined();
|
|
164
|
-
expect(label.innerHTML).toContain(LABEL);
|
|
165
|
-
expect(label.getAttribute('for')).toEqual(ID);
|
|
166
|
-
expect(input.tagName).toEqual('INPUT');
|
|
167
|
-
expect(input.classList).toContain('govuk-input');
|
|
168
|
-
expect(input.id).toEqual(ID);
|
|
169
|
-
});
|
|
170
|
-
it('should return an appropriately rendered phone-number component', function () {
|
|
171
|
-
var ID = 'test-id';
|
|
172
|
-
var FIELD_ID = 'field-id';
|
|
173
|
-
var LABEL = 'label';
|
|
174
|
-
var COMPONENT = {
|
|
175
|
-
type: _models.ComponentTypes.PHONE_NUMBER,
|
|
176
|
-
id: ID,
|
|
177
|
-
fieldId: FIELD_ID,
|
|
178
|
-
label: LABEL,
|
|
179
|
-
'data-testid': ID
|
|
180
|
-
};
|
|
181
|
-
|
|
182
|
-
var _render7 = (0, _react.render)((0, _getComponent.default)(COMPONENT)),
|
|
183
|
-
container = _render7.container;
|
|
184
|
-
|
|
185
|
-
var _getAllByTestId5 = (0, _react.getAllByTestId)(container, ID),
|
|
186
|
-
_getAllByTestId6 = _slicedToArray(_getAllByTestId5, 2),
|
|
187
|
-
formGroup = _getAllByTestId6[0],
|
|
188
|
-
input = _getAllByTestId6[1];
|
|
189
|
-
|
|
190
|
-
expect(formGroup.tagName).toEqual('DIV');
|
|
191
|
-
expect(formGroup.classList).toContain('govuk-form-group');
|
|
192
|
-
var label = undefined;
|
|
193
|
-
formGroup.childNodes.forEach(function (node) {
|
|
194
|
-
// Check if it's an element.
|
|
195
|
-
if (node instanceof Element && node.tagName === 'LABEL') {
|
|
196
|
-
label = node;
|
|
197
|
-
}
|
|
198
|
-
});
|
|
199
|
-
expect(label).toBeDefined();
|
|
200
|
-
expect(label.innerHTML).toContain(LABEL);
|
|
201
|
-
expect(label.getAttribute('for')).toEqual(ID);
|
|
202
|
-
expect(input.tagName).toEqual('INPUT');
|
|
203
|
-
expect(input.classList).toContain('govuk-input');
|
|
204
|
-
expect(input.id).toEqual(ID);
|
|
205
|
-
});
|
|
206
|
-
it('should return an appropriately rendered autocomplete component', function () {
|
|
207
|
-
var ID = 'test-id';
|
|
208
|
-
var FIELD_ID = 'field-id';
|
|
209
|
-
var LABEL = 'label';
|
|
210
|
-
var OPTIONS = [];
|
|
211
|
-
var COMPONENT = {
|
|
212
|
-
type: _models.ComponentTypes.AUTOCOMPLETE,
|
|
213
|
-
id: ID,
|
|
214
|
-
fieldId: FIELD_ID,
|
|
215
|
-
label: LABEL,
|
|
216
|
-
data: {
|
|
217
|
-
options: OPTIONS
|
|
218
|
-
},
|
|
219
|
-
'data-testid': ID
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
var _render8 = (0, _react.render)((0, _getComponent.default)(COMPONENT)),
|
|
223
|
-
container = _render8.container;
|
|
224
|
-
|
|
225
|
-
var formGroup = (0, _react.getByTestId)(container, ID);
|
|
226
|
-
expect(formGroup.tagName).toEqual('DIV');
|
|
227
|
-
expect(formGroup.classList).toContain('govuk-form-group');
|
|
228
|
-
var label = undefined;
|
|
229
|
-
var autocompleteWrapper = undefined;
|
|
230
|
-
var autocomplete = undefined;
|
|
231
|
-
var autocompleteInput = undefined;
|
|
232
|
-
formGroup.childNodes.forEach(function (node) {
|
|
233
|
-
// Check if it's an element.
|
|
234
|
-
if (node instanceof Element) {
|
|
235
|
-
if (node.tagName === 'LABEL') {
|
|
236
|
-
label = node;
|
|
237
|
-
} else if (node.classList.contains('hods-autocomplete__outer-wrapper')) {
|
|
238
|
-
autocompleteWrapper = node;
|
|
239
|
-
var autocompleteInner = node.childNodes[0];
|
|
240
|
-
|
|
241
|
-
if (autocompleteInner instanceof Element) {
|
|
242
|
-
autocomplete = autocompleteInner;
|
|
243
|
-
autocomplete.childNodes.forEach(function (grandchild) {
|
|
244
|
-
if (grandchild instanceof Element) {
|
|
245
|
-
if (grandchild.tagName === 'INPUT') {
|
|
246
|
-
autocompleteInput = grandchild;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
});
|
|
256
|
-
expect(label).toBeDefined();
|
|
257
|
-
expect(label.innerHTML).toContain(LABEL);
|
|
258
|
-
expect(label.getAttribute('for')).toEqual(ID);
|
|
259
|
-
expect(autocompleteWrapper).toBeDefined();
|
|
260
|
-
expect(autocompleteWrapper.tagName).toEqual('DIV');
|
|
261
|
-
expect(autocomplete).toBeDefined();
|
|
262
|
-
expect(autocomplete.tagName).toEqual('DIV');
|
|
263
|
-
expect(autocompleteInput).toBeDefined();
|
|
264
|
-
expect(autocompleteInput.id).toEqual(ID);
|
|
265
|
-
});
|
|
266
|
-
it('should return an appropriately rendered radios component', function () {
|
|
267
|
-
var ID = 'test-id';
|
|
268
|
-
var FIELD_ID = 'field-id';
|
|
269
|
-
var LABEL = 'label';
|
|
270
|
-
var OPTIONS = [{
|
|
271
|
-
value: 'a',
|
|
272
|
-
label: 'Alpha'
|
|
273
|
-
}];
|
|
274
|
-
var COMPONENT = {
|
|
275
|
-
type: _models.ComponentTypes.RADIOS,
|
|
276
|
-
id: ID,
|
|
277
|
-
fieldId: FIELD_ID,
|
|
278
|
-
label: LABEL,
|
|
279
|
-
data: {
|
|
280
|
-
options: OPTIONS
|
|
281
|
-
},
|
|
282
|
-
'data-testid': ID
|
|
283
|
-
};
|
|
284
|
-
|
|
285
|
-
var _render9 = (0, _react.render)((0, _getComponent.default)(COMPONENT)),
|
|
286
|
-
container = _render9.container;
|
|
287
|
-
|
|
288
|
-
var _getAllByTestId7 = (0, _react.getAllByTestId)(container, ID),
|
|
289
|
-
_getAllByTestId8 = _slicedToArray(_getAllByTestId7, 2),
|
|
290
|
-
formGroup = _getAllByTestId8[0],
|
|
291
|
-
radios = _getAllByTestId8[1];
|
|
292
|
-
|
|
293
|
-
expect(formGroup.tagName).toEqual('DIV');
|
|
294
|
-
expect(formGroup.classList).toContain('govuk-form-group');
|
|
295
|
-
var label = undefined;
|
|
296
|
-
formGroup.childNodes.forEach(function (node) {
|
|
297
|
-
// Check if it's an element.
|
|
298
|
-
if (node instanceof Element) {
|
|
299
|
-
if (node.tagName === 'LABEL') {
|
|
300
|
-
label = node;
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
});
|
|
304
|
-
expect(label).toBeDefined();
|
|
305
|
-
expect(label.innerHTML).toContain(LABEL);
|
|
306
|
-
expect(label.getAttribute('for')).toEqual(ID);
|
|
307
|
-
expect(radios.tagName).toEqual('DIV');
|
|
308
|
-
expect(radios.classList).toContain('govuk-radios');
|
|
309
|
-
expect(radios.childNodes.length).toEqual(OPTIONS.length);
|
|
310
|
-
var radioItems = [];
|
|
311
|
-
OPTIONS.forEach(function (_, index) {
|
|
312
|
-
var radio = radios.childNodes[index];
|
|
313
|
-
expect(radio instanceof Element).toBeTruthy();
|
|
314
|
-
|
|
315
|
-
if (radio instanceof Element) {
|
|
316
|
-
radioItems.push(radio);
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
|
-
expect(radioItems.length).toEqual(OPTIONS.length);
|
|
320
|
-
OPTIONS.forEach(function (option, index) {
|
|
321
|
-
var radio = radioItems[index];
|
|
322
|
-
expect(radio.tagName).toEqual('DIV');
|
|
323
|
-
expect(radio.classList).toContain('govuk-radios__item');
|
|
324
|
-
expect(radio.innerHTML).toContain(option.label);
|
|
325
|
-
});
|
|
326
|
-
});
|
|
327
|
-
});
|
|
328
|
-
it('should return an appropriately rendered textarea component', function () {
|
|
329
|
-
var ID = 'test-id';
|
|
330
|
-
var FIELD_ID = 'field-id';
|
|
331
|
-
var LABEL = 'label';
|
|
332
|
-
var ROWS = 13;
|
|
333
|
-
var COMPONENT = {
|
|
334
|
-
type: _models.ComponentTypes.TEXT_AREA,
|
|
335
|
-
id: ID,
|
|
336
|
-
fieldId: FIELD_ID,
|
|
337
|
-
label: LABEL,
|
|
338
|
-
rows: ROWS,
|
|
339
|
-
'data-testid': ID
|
|
340
|
-
};
|
|
341
|
-
|
|
342
|
-
var _render10 = (0, _react.render)((0, _getComponent.default)(COMPONENT)),
|
|
343
|
-
container = _render10.container;
|
|
344
|
-
|
|
345
|
-
var _getAllByTestId9 = (0, _react.getAllByTestId)(container, ID),
|
|
346
|
-
_getAllByTestId10 = _slicedToArray(_getAllByTestId9, 2),
|
|
347
|
-
formGroup = _getAllByTestId10[0],
|
|
348
|
-
textarea = _getAllByTestId10[1];
|
|
349
|
-
|
|
350
|
-
expect(formGroup.tagName).toEqual('DIV');
|
|
351
|
-
expect(formGroup.classList).toContain('govuk-form-group');
|
|
352
|
-
var label = formGroup.childNodes[0];
|
|
353
|
-
expect(label.innerHTML).toContain(LABEL);
|
|
354
|
-
expect(label.getAttribute('for')).toEqual(ID);
|
|
355
|
-
expect(textarea.tagName).toEqual('TEXTAREA');
|
|
356
|
-
expect(textarea.classList).toContain('govuk-textarea');
|
|
357
|
-
expect(textarea.getAttribute('rows')).toEqual("".concat(ROWS));
|
|
358
|
-
expect(textarea.id).toEqual(ID);
|
|
359
|
-
});
|
|
360
|
-
});
|
|
361
|
-
});
|