@ukhomeoffice/cop-react-form-renderer 5.0.0-alpha → 5.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/CheckYourAnswers/Answer.js +18 -7
- package/dist/components/CheckYourAnswers/Answer.test.js +137 -0
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +70 -46
- package/dist/components/CheckYourAnswers/CheckYourAnswers.stories.mdx +410 -0
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +551 -0
- package/dist/components/CollectionPage/CollectionPage.js +15 -10
- package/dist/components/CollectionPage/CollectionPage.test.js +382 -0
- package/dist/components/FormComponent/Collection.js +91 -48
- package/dist/components/FormComponent/Collection.scss +2 -1
- package/dist/components/FormComponent/Collection.test.js +807 -0
- package/dist/components/FormComponent/Container.js +35 -16
- package/dist/components/FormComponent/Container.test.js +370 -0
- package/dist/components/FormComponent/FormComponent.js +39 -13
- package/dist/components/FormComponent/FormComponent.stories.mdx +184 -0
- package/dist/components/FormComponent/FormComponent.test.js +226 -0
- package/dist/components/FormComponent/helpers/addLabel.js +5 -4
- package/dist/components/FormComponent/helpers/getComponentFieldSet.js +16 -0
- package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +29 -0
- package/dist/components/FormComponent/helpers/index.js +8 -1
- package/dist/components/FormPage/FormPage.js +69 -30
- package/dist/components/FormPage/FormPage.stories.mdx +155 -0
- package/dist/components/FormPage/FormPage.test.js +330 -0
- package/dist/components/FormRenderer/FormRenderer.js +142 -228
- package/dist/components/FormRenderer/FormRenderer.stories.mdx +183 -0
- package/dist/components/FormRenderer/FormRenderer.test.js +968 -0
- package/dist/components/FormRenderer/handlers/index.js +1 -2
- package/dist/components/FormRenderer/handlers/navigate.js +3 -1
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +35 -14
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +88 -5
- package/dist/components/FormRenderer/helpers/getCYA.js +11 -2
- package/dist/components/FormRenderer/helpers/getNextPageId.js +13 -7
- package/dist/components/FormRenderer/helpers/getRelevantPages.js +10 -2
- package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +1 -1
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +2 -2
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +6 -2
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +171 -51
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +307 -24
- package/dist/components/FormRenderer/helpers/index.js +1 -2
- package/dist/components/FormRenderer/onCYAAction.js +108 -0
- package/dist/components/FormRenderer/onCYAAction.test.js +583 -0
- package/dist/components/FormRenderer/onPageAction.js +145 -0
- package/dist/components/FormRenderer/onPageAction.test.js +678 -0
- package/dist/components/FormRenderer/onTaskAction.js +48 -0
- package/dist/components/FormRenderer/onTaskAction.test.js +217 -0
- package/dist/components/PageActions/ActionButton.js +0 -3
- package/dist/components/PageActions/ActionButton.test.js +93 -0
- package/dist/components/PageActions/PageActions.js +2 -2
- package/dist/components/PageActions/PageActions.stories.mdx +74 -0
- package/dist/components/PageActions/PageActions.test.js +132 -0
- package/dist/components/SummaryList/GroupAction.js +2 -2
- package/dist/components/SummaryList/GroupAction.test.js +80 -0
- package/dist/components/SummaryList/RowAction.js +2 -2
- package/dist/components/SummaryList/RowAction.test.js +80 -0
- package/dist/components/SummaryList/SummaryList.js +29 -12
- package/dist/components/SummaryList/SummaryList.scss +19 -0
- package/dist/components/SummaryList/SummaryList.stories.mdx +90 -0
- package/dist/components/SummaryList/SummaryList.test.js +400 -0
- package/dist/components/SummaryList/SummaryListHeadingRow.js +30 -0
- package/dist/components/SummaryList/SummaryListRow.js +5 -2
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +2 -1
- package/dist/components/SummaryList/helpers/getRowActionAttributes.js +2 -1
- package/dist/components/TaskList/Task.js +3 -3
- package/dist/components/TaskList/Task.test.js +167 -0
- package/dist/components/TaskList/TaskList.js +73 -22
- package/dist/components/TaskList/TaskList.stories.mdx +164 -0
- package/dist/components/TaskList/TaskList.test.js +389 -0
- package/dist/components/TaskList/TaskState.js +2 -2
- package/dist/components/TaskList/TaskState.test.js +86 -0
- package/dist/components/index.js +14 -0
- package/dist/context/HooksContext/HooksContext.js +72 -8
- package/dist/context/HooksContext/HooksContext.test.js +44 -0
- package/dist/context/ValidationContext/ValidationContext.js +38 -28
- package/dist/context/ValidationContext/ValidationContext.test.js +84 -0
- package/dist/hooks/useAxios.js +10 -12
- package/dist/hooks/useGetRequest.js +48 -49
- package/dist/hooks/useRefData.js +7 -4
- package/dist/index.js +34 -1
- package/dist/json/addressDetails.json +149 -0
- package/dist/json/areYouACivilServant.json +7 -0
- package/dist/json/firstForm.json +94 -0
- package/dist/json/grade.json +108 -0
- package/dist/json/group.data.json +21 -0
- package/dist/json/group.json +402 -0
- package/dist/json/groupOfRow.json +137 -0
- package/dist/json/groupOfRowData.json +15 -0
- package/dist/json/port.json +346 -0
- package/dist/json/saveAndContinue.json +98 -0
- package/dist/json/sublocation.json +859 -0
- package/dist/json/taskList.json +265 -0
- package/dist/json/team.json +17351 -0
- package/dist/json/terminal.json +81 -0
- package/dist/json/userProfile.data.json +21 -0
- package/dist/json/userProfile.json +276 -0
- package/dist/models/ComponentTypes.js +8 -0
- package/dist/models/PageAction.js +4 -1
- package/dist/models/TaskStates.js +10 -2
- package/dist/models/index.js +16 -1
- package/dist/setupTests.js +46 -0
- package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
- package/dist/utils/CheckYourAnswers/getCYAAction.test.js +121 -0
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +6 -2
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +71 -0
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +6 -2
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +55 -0
- package/dist/utils/CheckYourAnswers/getCYARow.js +14 -11
- package/dist/utils/CheckYourAnswers/getCYARow.test.js +291 -0
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +4 -1
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +70 -0
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +15 -10
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +288 -0
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +94 -36
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +414 -0
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +21 -7
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +486 -0
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +11 -3
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +346 -0
- package/dist/utils/CheckYourAnswers/showComponentCYA.js +19 -3
- package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +143 -0
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +5 -1
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +40 -0
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +53 -0
- package/dist/utils/CollectionPage/mergeCollectionPages.js +25 -17
- package/dist/utils/CollectionPage/mergeCollectionPages.test.js +130 -0
- package/dist/utils/Component/addShowWhen.js +44 -0
- package/dist/utils/Component/addShowWhen.test.js +216 -0
- package/dist/utils/Component/applyToComponentTree.js +71 -0
- package/dist/utils/Component/applyToComponentTree.test.js +127 -0
- package/dist/utils/Component/cleanAttributes.js +8 -2
- package/dist/utils/Component/cleanAttributes.test.js +68 -0
- package/dist/utils/Component/elevateNestedComponents.js +4 -1
- package/dist/utils/Component/elevateNestedComponents.test.js +122 -0
- package/dist/utils/Component/getComponent.js +80 -11
- package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +4 -4
- package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +25 -24
- package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +66 -5
- package/dist/utils/Component/getComponentTests/getComponent.date.test.js +2 -2
- package/dist/utils/Component/getComponentTests/getComponent.details.test.js +9 -7
- package/dist/utils/Component/getComponentTests/getComponent.email.test.js +3 -3
- package/dist/utils/Component/getComponentTests/getComponent.file.test.js +3 -3
- package/dist/utils/Component/getComponentTests/getComponent.list.test.js +44 -0
- package/dist/utils/Component/getComponentTests/{getComponent.textarea.test.js → getComponent.multifile.test.js} +29 -21
- package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +159 -83
- package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +43 -0
- package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +3 -3
- package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +55 -5
- package/dist/utils/Component/getComponentTests/getComponent.select.test.js +3 -9
- package/dist/utils/Component/getComponentTests/getComponent.text.test.js +3 -3
- package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +109 -0
- package/dist/utils/Component/getComponentTests/getComponent.time.test.js +7 -7
- package/dist/utils/Component/getDefaultValue.js +4 -1
- package/dist/utils/Component/getDefaultValue.test.js +50 -0
- package/dist/utils/Component/index.js +2 -0
- package/dist/utils/Component/isEditable.js +2 -2
- package/dist/utils/Component/isEditable.test.js +43 -0
- package/dist/utils/Component/optionIsSelected.js +22 -0
- package/dist/utils/Component/optionIsSelected.test.js +42 -0
- package/dist/utils/Component/setupContainerComponentsPath.js +40 -0
- package/dist/utils/Component/setupContainerComponentsPath.test.js +78 -0
- package/dist/utils/Component/showComponent.test.js +156 -0
- package/dist/utils/Component/wrapInFormGroup.js +1 -1
- package/dist/utils/Condition/meetsAllConditions.js +1 -1
- package/dist/utils/Condition/meetsAllConditions.test.js +61 -0
- package/dist/utils/Condition/meetsCondition.js +74 -4
- package/dist/utils/Condition/meetsCondition.test.js +763 -0
- package/dist/utils/Condition/meetsOneCondition.js +1 -1
- package/dist/utils/Condition/meetsOneCondition.test.js +100 -0
- package/dist/utils/Condition/setupConditions.js +6 -3
- package/dist/utils/Condition/setupConditions.test.js +33 -0
- package/dist/utils/Container/getEditableComponents.test.js +135 -0
- package/dist/utils/Container/setupNesting.js +21 -2
- package/dist/utils/Container/setupNesting.test.js +145 -0
- package/dist/utils/Container/showContainer.test.js +178 -0
- package/dist/utils/Data/applyFormula.js +20 -11
- package/dist/utils/Data/applyFormula.test.js +263 -0
- package/dist/utils/Data/getAutocompleteSource.js +6 -2
- package/dist/utils/Data/getAutocompleteSource.test.js +352 -0
- package/dist/utils/Data/getDataPath.test.js +48 -0
- package/dist/utils/Data/getOptions.js +17 -3
- package/dist/utils/Data/getOptions.test.js +140 -0
- package/dist/utils/Data/getSourceData.js +2 -2
- package/dist/utils/Data/getSourceData.test.js +153 -0
- package/dist/utils/Data/refDataToOptions.js +4 -1
- package/dist/utils/Data/refDataToOptions.test.js +196 -0
- package/dist/utils/Data/setDataItem.test.js +110 -0
- package/dist/utils/Data/setupFormData.js +39 -16
- package/dist/utils/Data/setupFormData.test.js +410 -0
- package/dist/utils/Data/setupRefDataUrlForComponent.js +4 -1
- package/dist/utils/Data/setupRefDataUrlForComponent.test.js +131 -0
- package/dist/utils/FormPage/applyConditionalProperties.js +35 -0
- package/dist/utils/FormPage/applyConditionalProperties.test.js +61 -0
- package/dist/utils/FormPage/getFormPage.js +5 -2
- package/dist/utils/FormPage/getFormPage.test.js +206 -0
- package/dist/utils/FormPage/getFormPages.js +4 -1
- package/dist/utils/FormPage/getFormPages.test.js +97 -0
- package/dist/utils/FormPage/getPageActions.js +8 -4
- package/dist/utils/FormPage/getPageActions.test.js +114 -0
- package/dist/utils/FormPage/getParagraphFromText.test.js +27 -0
- package/dist/utils/FormPage/index.js +2 -0
- package/dist/utils/FormPage/showFormPage.js +2 -2
- package/dist/utils/FormPage/showFormPage.test.js +180 -0
- package/dist/utils/FormPage/showFormPageCYA.js +1 -0
- package/dist/utils/FormPage/showFormPageCYA.test.js +28 -0
- package/dist/utils/FormPage/useComponent.js +29 -14
- package/dist/utils/FormPage/useComponent.test.js +167 -0
- package/dist/utils/Format/formatData.test.js +45 -0
- package/dist/utils/Format/formatDataForComponent.js +2 -1
- package/dist/utils/Format/formatDataForComponent.test.js +142 -0
- package/dist/utils/Format/formatDataForForm.js +4 -1
- package/dist/utils/Format/formatDataForForm.test.js +81 -0
- package/dist/utils/Format/formatDataForPage.test.js +99 -0
- package/dist/utils/Hub/getFormHub.test.js +105 -0
- package/dist/utils/Meta/documents/getDocuments.test.js +4 -1
- package/dist/utils/Meta/documents/index.js +2 -2
- package/dist/utils/Meta/documents/setDocumentsForField.js +31 -0
- package/dist/utils/Meta/documents/setDocumentsForField.test.js +59 -0
- package/dist/utils/Operate/checkValueIsTruthy.test.js +42 -0
- package/dist/utils/Operate/getFirstOf.js +31 -0
- package/dist/utils/Operate/getFirstOf.test.js +86 -0
- package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +163 -0
- package/dist/utils/Operate/persistValueInFormData.js +2 -1
- package/dist/utils/Operate/persistValueInFormData.test.js +115 -0
- package/dist/utils/Operate/runPageOperations.js +3 -1
- package/dist/utils/Operate/runPageOperations.test.js +105 -0
- package/dist/utils/Operate/setValueInFormData.test.js +44 -0
- package/dist/utils/Operate/shouldRun.js +16 -13
- package/dist/utils/Operate/shouldRun.test.js +66 -0
- package/dist/utils/Validate/additional/conditionallyRequired.js +24 -0
- package/dist/utils/Validate/additional/conditionallyRequired.test.js +73 -0
- package/dist/utils/Validate/additional/index.js +13 -4
- package/dist/utils/Validate/additional/mustBeAfter.js +8 -6
- package/dist/utils/Validate/additional/mustBeAfter.test.js +15 -1
- package/dist/utils/Validate/additional/mustBeBefore.js +9 -5
- package/dist/utils/Validate/additional/mustBeBefore.test.js +14 -0
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +1 -1
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +6 -3
- package/dist/utils/Validate/additional/mustBeGreaterThan.js +22 -0
- package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +56 -0
- package/dist/utils/Validate/additional/mustBeInTheFuture.js +1 -1
- package/dist/utils/Validate/additional/mustBeInThePast.js +5 -5
- package/dist/utils/Validate/additional/mustBeLessThan.js +7 -6
- package/dist/utils/Validate/additional/mustBeLessThan.test.js +11 -1
- package/dist/utils/Validate/additional/mustBeNumbersOnly.js +9 -5
- package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +10 -2
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +1 -0
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +4 -1
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +19 -0
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +36 -0
- package/dist/utils/Validate/additional/mustSelectOnlyOne.js +29 -0
- package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +52 -0
- package/dist/utils/Validate/additional/utils.js +18 -18
- package/dist/utils/Validate/index.js +6 -0
- package/dist/utils/Validate/validateCollection.js +20 -5
- package/dist/utils/Validate/validateCollection.test.js +125 -0
- package/dist/utils/Validate/validateComponent.js +36 -20
- package/dist/utils/Validate/validateComponent.test.js +365 -0
- package/dist/utils/Validate/validateContainer.js +9 -3
- package/dist/utils/Validate/validateContainer.test.js +75 -0
- package/dist/utils/Validate/validateDate.js +4 -3
- package/dist/utils/Validate/validateDate.test.js +114 -0
- package/dist/utils/Validate/validateEmail.js +14 -1
- package/dist/utils/Validate/validateEmail.test.js +74 -0
- package/dist/utils/Validate/validateMultifile.js +32 -0
- package/dist/utils/Validate/validateMultifile.test.js +47 -0
- package/dist/utils/Validate/validatePage.js +12 -6
- package/dist/utils/Validate/validatePage.test.js +472 -0
- package/dist/utils/Validate/validateRegex.js +2 -5
- package/dist/utils/Validate/validateRegex.test.js +42 -0
- package/dist/utils/Validate/validateRequired.js +2 -4
- package/dist/utils/Validate/validateRequired.test.js +63 -0
- package/dist/utils/Validate/validateTextArea.js +37 -0
- package/dist/utils/Validate/validateTextArea.test.js +42 -0
- package/dist/utils/Validate/validateTime.js +2 -2
- package/dist/utils/Validate/validateTime.test.js +59 -0
- package/dist/utils/index.js +4 -1
- package/package.json +35 -50
- package/dist/utils/Meta/documents/setDocumentForField.js +0 -29
- package/dist/utils/Meta/documents/setDocumentForField.test.js +0 -49
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _models = require("../../models");
|
|
4
|
+
var _setupRefDataUrlForComponent = _interopRequireDefault(require("./setupRefDataUrlForComponent"));
|
|
5
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
|
+
// Local imports
|
|
7
|
+
|
|
8
|
+
describe('utils', function () {
|
|
9
|
+
describe('Data', function () {
|
|
10
|
+
describe('setupRefDataUrlForComponent', function () {
|
|
11
|
+
var DATA = {
|
|
12
|
+
urls: {
|
|
13
|
+
refData: '/ref-data'
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
it('can handle a null component', function () {
|
|
17
|
+
expect((0, _setupRefDataUrlForComponent.default)(null, DATA)).toBeNull();
|
|
18
|
+
});
|
|
19
|
+
it('can handle an undefined component', function () {
|
|
20
|
+
expect((0, _setupRefDataUrlForComponent.default)(undefined, DATA)).toBeUndefined();
|
|
21
|
+
});
|
|
22
|
+
it('can handle a component with no data property', function () {
|
|
23
|
+
var COMPONENT = {
|
|
24
|
+
id: 'component'
|
|
25
|
+
};
|
|
26
|
+
expect((0, _setupRefDataUrlForComponent.default)(COMPONENT, DATA)).toEqual(COMPONENT);
|
|
27
|
+
});
|
|
28
|
+
it('can handle a component with no data.url property', function () {
|
|
29
|
+
var COMPONENT = {
|
|
30
|
+
id: 'component',
|
|
31
|
+
data: {
|
|
32
|
+
options: []
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
expect((0, _setupRefDataUrlForComponent.default)(COMPONENT, DATA)).toEqual(COMPONENT);
|
|
36
|
+
});
|
|
37
|
+
it('should appropriately update the component URL', function () {
|
|
38
|
+
var COMPONENT = {
|
|
39
|
+
id: 'component',
|
|
40
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
41
|
+
data: {
|
|
42
|
+
url: '${urls.refData}/v1/teams'
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
expect((0, _setupRefDataUrlForComponent.default)(COMPONENT, DATA)).toEqual({
|
|
46
|
+
id: COMPONENT.id,
|
|
47
|
+
data: {
|
|
48
|
+
url: "".concat(DATA.urls.refData, "/v1/teams")
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
it('should leave a URL alone that does not require replacement', function () {
|
|
53
|
+
var COMPONENT = {
|
|
54
|
+
id: 'component',
|
|
55
|
+
data: {
|
|
56
|
+
url: '/somewhere-else/v1/teams'
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
expect((0, _setupRefDataUrlForComponent.default)(COMPONENT, DATA)).toEqual({
|
|
60
|
+
id: COMPONENT.id,
|
|
61
|
+
data: {
|
|
62
|
+
url: COMPONENT.data.url
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
it('should appropriately handle a missing value in the data', function () {
|
|
67
|
+
var COMPONENT = {
|
|
68
|
+
id: 'component',
|
|
69
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
70
|
+
data: {
|
|
71
|
+
url: '${urls.referenceData}/v1/teams'
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
expect((0, _setupRefDataUrlForComponent.default)(COMPONENT, DATA)).toEqual({
|
|
75
|
+
id: COMPONENT.id,
|
|
76
|
+
data: {
|
|
77
|
+
url: '/v1/teams'
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
it('should appropriately update the component URLs within a container', function () {
|
|
82
|
+
var COMPONENT = {
|
|
83
|
+
id: 'component',
|
|
84
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
85
|
+
data: {
|
|
86
|
+
url: '${urls.refData}/v1/teams'
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
var CONTAINER = {
|
|
90
|
+
id: 'container',
|
|
91
|
+
type: _models.ComponentTypes.CONTAINER,
|
|
92
|
+
components: [COMPONENT]
|
|
93
|
+
};
|
|
94
|
+
expect((0, _setupRefDataUrlForComponent.default)(CONTAINER, DATA)).toEqual({
|
|
95
|
+
id: CONTAINER.id,
|
|
96
|
+
type: CONTAINER.type,
|
|
97
|
+
components: [{
|
|
98
|
+
id: COMPONENT.id,
|
|
99
|
+
data: {
|
|
100
|
+
url: "".concat(DATA.urls.refData, "/v1/teams")
|
|
101
|
+
}
|
|
102
|
+
}]
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
it('should appropriately update the component URLs within a collection', function () {
|
|
106
|
+
var COMPONENT = {
|
|
107
|
+
id: 'component',
|
|
108
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
109
|
+
data: {
|
|
110
|
+
url: '${urls.refData}/v1/teams'
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
var COLLECTION = {
|
|
114
|
+
id: 'container',
|
|
115
|
+
type: _models.ComponentTypes.COLLECTION,
|
|
116
|
+
item: [COMPONENT]
|
|
117
|
+
};
|
|
118
|
+
expect((0, _setupRefDataUrlForComponent.default)(COLLECTION, DATA)).toEqual({
|
|
119
|
+
id: COLLECTION.id,
|
|
120
|
+
type: COLLECTION.type,
|
|
121
|
+
item: [{
|
|
122
|
+
id: COMPONENT.id,
|
|
123
|
+
data: {
|
|
124
|
+
url: "".concat(DATA.urls.refData, "/v1/teams")
|
|
125
|
+
}
|
|
126
|
+
}]
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _ = _interopRequireDefault(require(".."));
|
|
8
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
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); }
|
|
10
|
+
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; }
|
|
11
|
+
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; }
|
|
12
|
+
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; }
|
|
13
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
14
|
+
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); }
|
|
15
|
+
/**
|
|
16
|
+
* Apply properties to a page based on whether certain conditions are met.
|
|
17
|
+
* @param {object} page The page object.
|
|
18
|
+
* @returns A copy of the page object with any passing conditional
|
|
19
|
+
* properties applied.
|
|
20
|
+
*/
|
|
21
|
+
var applyConditionalProperties = function applyConditionalProperties(page) {
|
|
22
|
+
if (!page.conditionalProperties) {
|
|
23
|
+
return page;
|
|
24
|
+
}
|
|
25
|
+
var pageWithProperties = _objectSpread({}, page);
|
|
26
|
+
page.conditionalProperties.forEach(function (entry) {
|
|
27
|
+
if (_.default.Condition.met(entry.condition, page.formData[entry.condition.field])) {
|
|
28
|
+
pageWithProperties = Object.assign(pageWithProperties, entry.properties);
|
|
29
|
+
}
|
|
30
|
+
;
|
|
31
|
+
});
|
|
32
|
+
return pageWithProperties;
|
|
33
|
+
};
|
|
34
|
+
var _default = applyConditionalProperties;
|
|
35
|
+
exports.default = _default;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _applyConditionalProperties = _interopRequireDefault(require("./applyConditionalProperties"));
|
|
4
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
+
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); }
|
|
6
|
+
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; }
|
|
7
|
+
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; }
|
|
8
|
+
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; }
|
|
9
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
10
|
+
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); }
|
|
11
|
+
describe('utils.FormPage.applyConditionalProperties', function () {
|
|
12
|
+
it('should not change the page if there are no conditional properties', function () {
|
|
13
|
+
var PAGE = {
|
|
14
|
+
id: 'testPage'
|
|
15
|
+
};
|
|
16
|
+
var result = (0, _applyConditionalProperties.default)(PAGE);
|
|
17
|
+
expect(result).toEqual(PAGE);
|
|
18
|
+
});
|
|
19
|
+
it('should not apply properties with conditions that have not been met', function () {
|
|
20
|
+
var PAGE = {
|
|
21
|
+
id: 'testPage',
|
|
22
|
+
conditionalProperties: [{
|
|
23
|
+
condition: {
|
|
24
|
+
field: 'alpha',
|
|
25
|
+
op: '=',
|
|
26
|
+
value: '123'
|
|
27
|
+
},
|
|
28
|
+
properties: {
|
|
29
|
+
beta: '456'
|
|
30
|
+
}
|
|
31
|
+
}],
|
|
32
|
+
formData: {
|
|
33
|
+
alpha: '012'
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
var result = (0, _applyConditionalProperties.default)(PAGE);
|
|
37
|
+
expect(result).toEqual(PAGE);
|
|
38
|
+
});
|
|
39
|
+
it('should apply properties with conditions that have been met', function () {
|
|
40
|
+
var PAGE = {
|
|
41
|
+
id: 'testPage',
|
|
42
|
+
conditionalProperties: [{
|
|
43
|
+
condition: {
|
|
44
|
+
field: 'alpha',
|
|
45
|
+
op: '=',
|
|
46
|
+
value: '123'
|
|
47
|
+
},
|
|
48
|
+
properties: {
|
|
49
|
+
beta: '456'
|
|
50
|
+
}
|
|
51
|
+
}],
|
|
52
|
+
formData: {
|
|
53
|
+
alpha: '123'
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
var result = (0, _applyConditionalProperties.default)(PAGE);
|
|
57
|
+
expect(result).toEqual(_objectSpread(_objectSpread({}, PAGE), {}, {
|
|
58
|
+
beta: '456'
|
|
59
|
+
}));
|
|
60
|
+
});
|
|
61
|
+
});
|
|
@@ -10,9 +10,12 @@ var _getPageActions = _interopRequireDefault(require("./getPageActions"));
|
|
|
10
10
|
var _getParagraphFromText = _interopRequireDefault(require("./getParagraphFromText"));
|
|
11
11
|
var _useComponent = _interopRequireDefault(require("./useComponent"));
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
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); }
|
|
13
14
|
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
15
|
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; }
|
|
15
|
-
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; }
|
|
16
|
+
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; }
|
|
17
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
18
|
+
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
19
|
/**
|
|
17
20
|
* Converts a page object defined in the JSON to a page object for rendering.
|
|
18
21
|
* @param {object} pageOptions The JSON page.
|
|
@@ -28,7 +31,7 @@ var getFormPage = function getFormPage(pageOptions, formComponents, formData) {
|
|
|
28
31
|
if (typeof componentOptions === 'string') {
|
|
29
32
|
return (0, _getParagraphFromText.default)(componentOptions);
|
|
30
33
|
}
|
|
31
|
-
var ret
|
|
34
|
+
var ret;
|
|
32
35
|
if (componentOptions.use) {
|
|
33
36
|
ret = (0, _useComponent.default)(componentOptions, formComponents);
|
|
34
37
|
} else {
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _getFormPage = _interopRequireDefault(require("./getFormPage"));
|
|
4
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
+
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); }
|
|
6
|
+
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; }
|
|
7
|
+
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; }
|
|
8
|
+
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; }
|
|
9
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
10
|
+
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); }
|
|
11
|
+
describe('utils', function () {
|
|
12
|
+
describe('FormPage', function () {
|
|
13
|
+
describe('getFormPage', function () {
|
|
14
|
+
var FORM_COMPONENTS = [{
|
|
15
|
+
id: 'a',
|
|
16
|
+
fieldId: 'a',
|
|
17
|
+
label: 'Alpha',
|
|
18
|
+
type: 'text'
|
|
19
|
+
}, {
|
|
20
|
+
id: 'b',
|
|
21
|
+
fieldId: 'b',
|
|
22
|
+
label: 'Bravo',
|
|
23
|
+
type: 'text'
|
|
24
|
+
},
|
|
25
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
26
|
+
{
|
|
27
|
+
id: 'c',
|
|
28
|
+
fieldId: 'c',
|
|
29
|
+
label: 'Charlie',
|
|
30
|
+
type: 'radios',
|
|
31
|
+
data: {
|
|
32
|
+
url: '${urls.refData}/v3/charlies'
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
36
|
+
{
|
|
37
|
+
id: 'd',
|
|
38
|
+
fieldId: 'd',
|
|
39
|
+
label: 'Roger ${currentUser.firstname}',
|
|
40
|
+
type: 'text'
|
|
41
|
+
},
|
|
42
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
43
|
+
{
|
|
44
|
+
id: 'e',
|
|
45
|
+
fieldId: 'e',
|
|
46
|
+
label: 'Bravo ${currentUser.surname}',
|
|
47
|
+
type: 'text'
|
|
48
|
+
}];
|
|
49
|
+
var FORM_DATA = {
|
|
50
|
+
urls: {
|
|
51
|
+
refData: 'https://ho.gov.uk/ref-data/'
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
it('should handle null or undefined pageOptions', function () {
|
|
55
|
+
expect((0, _getFormPage.default)(null, FORM_COMPONENTS, FORM_DATA)).toBeNull();
|
|
56
|
+
expect((0, _getFormPage.default)(undefined, FORM_COMPONENTS, FORM_DATA)).toBeNull();
|
|
57
|
+
});
|
|
58
|
+
it('should handle a page not using any form components', function () {
|
|
59
|
+
var PAGE = {
|
|
60
|
+
title: 'Page',
|
|
61
|
+
components: [{
|
|
62
|
+
type: 'heading',
|
|
63
|
+
size: 'l',
|
|
64
|
+
content: 'Page heading'
|
|
65
|
+
}]
|
|
66
|
+
};
|
|
67
|
+
expect((0, _getFormPage.default)(PAGE, FORM_COMPONENTS, FORM_DATA)).toEqual({
|
|
68
|
+
title: PAGE.title,
|
|
69
|
+
components: PAGE.components,
|
|
70
|
+
formData: FORM_DATA
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
it('should handle a page with inline strings and convert them to paragraphs', function () {
|
|
74
|
+
var PAGE = {
|
|
75
|
+
title: 'Page',
|
|
76
|
+
components: ["Opening paragraph", {
|
|
77
|
+
type: 'heading',
|
|
78
|
+
size: 'l',
|
|
79
|
+
content: 'Page heading'
|
|
80
|
+
}, "Closing paragraph"]
|
|
81
|
+
};
|
|
82
|
+
expect((0, _getFormPage.default)(PAGE, FORM_COMPONENTS, FORM_DATA)).toEqual({
|
|
83
|
+
title: PAGE.title,
|
|
84
|
+
components: [{
|
|
85
|
+
type: 'html',
|
|
86
|
+
tagName: 'p',
|
|
87
|
+
content: PAGE.components[0]
|
|
88
|
+
}, _objectSpread(_objectSpread({}, PAGE.components[1]), {}, {
|
|
89
|
+
full_path: PAGE.components[1].fieldId
|
|
90
|
+
}), {
|
|
91
|
+
type: 'html',
|
|
92
|
+
tagName: 'p',
|
|
93
|
+
content: PAGE.components[2]
|
|
94
|
+
}],
|
|
95
|
+
formData: FORM_DATA
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
it('should handle a page that references a form-level component', function () {
|
|
99
|
+
var PAGE = {
|
|
100
|
+
title: 'Page',
|
|
101
|
+
components: ["Opening paragraph", {
|
|
102
|
+
type: 'heading',
|
|
103
|
+
size: 'l',
|
|
104
|
+
content: 'Page heading'
|
|
105
|
+
}, "Closing paragraph", {
|
|
106
|
+
use: 'a'
|
|
107
|
+
}]
|
|
108
|
+
};
|
|
109
|
+
var A = FORM_COMPONENTS[0];
|
|
110
|
+
expect((0, _getFormPage.default)(PAGE, FORM_COMPONENTS, FORM_DATA)).toEqual({
|
|
111
|
+
title: PAGE.title,
|
|
112
|
+
components: [{
|
|
113
|
+
type: 'html',
|
|
114
|
+
tagName: 'p',
|
|
115
|
+
content: PAGE.components[0]
|
|
116
|
+
}, _objectSpread(_objectSpread({}, PAGE.components[1]), {}, {
|
|
117
|
+
full_path: PAGE.components[1].fieldId
|
|
118
|
+
}), {
|
|
119
|
+
type: 'html',
|
|
120
|
+
tagName: 'p',
|
|
121
|
+
content: PAGE.components[2]
|
|
122
|
+
}, _objectSpread(_objectSpread({
|
|
123
|
+
use: 'a'
|
|
124
|
+
}, A), {}, {
|
|
125
|
+
cya_label: A.label,
|
|
126
|
+
full_path: A.fieldId
|
|
127
|
+
})],
|
|
128
|
+
formData: FORM_DATA
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
it('should handle a page that references a form-level component with a data url', function () {
|
|
132
|
+
var PAGE = {
|
|
133
|
+
title: 'Page',
|
|
134
|
+
components: ["Opening paragraph", {
|
|
135
|
+
type: 'heading',
|
|
136
|
+
size: 'l',
|
|
137
|
+
content: 'Page heading'
|
|
138
|
+
}, "Closing paragraph", {
|
|
139
|
+
use: 'c'
|
|
140
|
+
}]
|
|
141
|
+
};
|
|
142
|
+
var C = FORM_COMPONENTS[2];
|
|
143
|
+
expect((0, _getFormPage.default)(PAGE, FORM_COMPONENTS, FORM_DATA)).toEqual({
|
|
144
|
+
title: PAGE.title,
|
|
145
|
+
components: [{
|
|
146
|
+
type: 'html',
|
|
147
|
+
tagName: 'p',
|
|
148
|
+
content: PAGE.components[0]
|
|
149
|
+
}, _objectSpread(_objectSpread({}, PAGE.components[1]), {}, {
|
|
150
|
+
full_path: PAGE.components[1].fieldId
|
|
151
|
+
}), {
|
|
152
|
+
type: 'html',
|
|
153
|
+
tagName: 'p',
|
|
154
|
+
content: PAGE.components[2]
|
|
155
|
+
}, _objectSpread(_objectSpread({
|
|
156
|
+
use: 'c'
|
|
157
|
+
}, C), {}, {
|
|
158
|
+
cya_label: C.label,
|
|
159
|
+
data: {
|
|
160
|
+
url: "".concat(FORM_DATA.urls.refData, "/v3/charlies")
|
|
161
|
+
},
|
|
162
|
+
full_path: C.fieldId
|
|
163
|
+
})],
|
|
164
|
+
formData: FORM_DATA
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
it('should handle a page that references a form-level component with a data url without an environment context', function () {
|
|
168
|
+
var PAGE = {
|
|
169
|
+
title: 'Page',
|
|
170
|
+
components: ["Opening paragraph", {
|
|
171
|
+
type: 'heading',
|
|
172
|
+
size: 'l',
|
|
173
|
+
content: 'Page heading'
|
|
174
|
+
}, "Closing paragraph", {
|
|
175
|
+
use: 'c'
|
|
176
|
+
}]
|
|
177
|
+
};
|
|
178
|
+
var C = FORM_COMPONENTS[2];
|
|
179
|
+
expect((0, _getFormPage.default)(PAGE, FORM_COMPONENTS, {})).toEqual({
|
|
180
|
+
title: PAGE.title,
|
|
181
|
+
components: [{
|
|
182
|
+
type: 'html',
|
|
183
|
+
tagName: 'p',
|
|
184
|
+
content: PAGE.components[0]
|
|
185
|
+
}, _objectSpread(_objectSpread({}, PAGE.components[1]), {}, {
|
|
186
|
+
full_path: PAGE.components[1].fieldId
|
|
187
|
+
}), {
|
|
188
|
+
type: 'html',
|
|
189
|
+
tagName: 'p',
|
|
190
|
+
content: PAGE.components[2]
|
|
191
|
+
}, // eslint-disable-next-line no-template-curly-in-string
|
|
192
|
+
_objectSpread(_objectSpread({
|
|
193
|
+
use: 'c'
|
|
194
|
+
}, C), {}, {
|
|
195
|
+
cya_label: C.label,
|
|
196
|
+
full_path: C.fieldId,
|
|
197
|
+
data: {
|
|
198
|
+
url: '/v3/charlies'
|
|
199
|
+
}
|
|
200
|
+
})],
|
|
201
|
+
formData: {}
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
});
|
|
@@ -6,9 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _getFormPage = _interopRequireDefault(require("./getFormPage"));
|
|
8
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
|
+
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); }
|
|
9
10
|
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; }
|
|
10
11
|
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; }
|
|
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
|
+
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; }
|
|
13
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
14
|
+
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); }
|
|
12
15
|
/**
|
|
13
16
|
* Converts pages objects defined in the JSON to page objects for rendering.
|
|
14
17
|
* @param {Array} pages The JSON pages.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _getFormPages = _interopRequireDefault(require("./getFormPages"));
|
|
4
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
+
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); }
|
|
6
|
+
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; }
|
|
7
|
+
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; }
|
|
8
|
+
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; }
|
|
9
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
10
|
+
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); }
|
|
11
|
+
describe('utils', function () {
|
|
12
|
+
describe('FormPage', function () {
|
|
13
|
+
describe('getFormPages', function () {
|
|
14
|
+
var FORM_COMPONENTS = [{
|
|
15
|
+
id: 'a',
|
|
16
|
+
fieldId: 'a',
|
|
17
|
+
label: 'Alpha',
|
|
18
|
+
type: 'text'
|
|
19
|
+
}, {
|
|
20
|
+
id: 'b',
|
|
21
|
+
fieldId: 'b',
|
|
22
|
+
label: 'Bravo',
|
|
23
|
+
type: 'text'
|
|
24
|
+
},
|
|
25
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
26
|
+
{
|
|
27
|
+
id: 'c',
|
|
28
|
+
fieldId: 'c',
|
|
29
|
+
label: 'Charlie',
|
|
30
|
+
type: 'radios',
|
|
31
|
+
data: {
|
|
32
|
+
url: '${urls.refData}/v3/charlies'
|
|
33
|
+
}
|
|
34
|
+
}];
|
|
35
|
+
var FORM_DATA = {
|
|
36
|
+
urls: {
|
|
37
|
+
refData: 'https://ho.gov.uk/ref-data/'
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
it('should handle null or undefined pageOptions', function () {
|
|
41
|
+
expect((0, _getFormPages.default)(null, FORM_COMPONENTS, FORM_DATA)).toEqual([]);
|
|
42
|
+
expect((0, _getFormPages.default)(undefined, FORM_COMPONENTS, FORM_DATA)).toEqual([]);
|
|
43
|
+
});
|
|
44
|
+
it('should appropriately set up multiples pages with various configurations', function () {
|
|
45
|
+
var PAGE_1 = {
|
|
46
|
+
title: 'Page 1',
|
|
47
|
+
components: [{
|
|
48
|
+
type: 'heading',
|
|
49
|
+
size: 'l',
|
|
50
|
+
content: 'Page heading'
|
|
51
|
+
}]
|
|
52
|
+
};
|
|
53
|
+
var PAGE_2 = {
|
|
54
|
+
title: 'Page 2',
|
|
55
|
+
components: ["Opening paragraph", {
|
|
56
|
+
type: 'heading',
|
|
57
|
+
size: 'l',
|
|
58
|
+
content: 'Page heading'
|
|
59
|
+
}, "Closing paragraph", {
|
|
60
|
+
use: 'c'
|
|
61
|
+
}]
|
|
62
|
+
};
|
|
63
|
+
var PAGES = [PAGE_1, PAGE_2];
|
|
64
|
+
var C = FORM_COMPONENTS[2];
|
|
65
|
+
expect((0, _getFormPages.default)(PAGES, FORM_COMPONENTS, FORM_DATA)).toEqual([{
|
|
66
|
+
index: 0,
|
|
67
|
+
title: PAGE_1.title,
|
|
68
|
+
components: PAGE_1.components,
|
|
69
|
+
formData: FORM_DATA
|
|
70
|
+
}, {
|
|
71
|
+
index: 1,
|
|
72
|
+
title: PAGE_2.title,
|
|
73
|
+
components: [{
|
|
74
|
+
type: 'html',
|
|
75
|
+
tagName: 'p',
|
|
76
|
+
content: PAGE_2.components[0]
|
|
77
|
+
}, _objectSpread(_objectSpread({}, PAGE_2.components[1]), {}, {
|
|
78
|
+
full_path: PAGE_2.components[1].fieldId
|
|
79
|
+
}), {
|
|
80
|
+
type: 'html',
|
|
81
|
+
tagName: 'p',
|
|
82
|
+
content: PAGE_2.components[2]
|
|
83
|
+
}, _objectSpread(_objectSpread({
|
|
84
|
+
use: 'c'
|
|
85
|
+
}, C), {}, {
|
|
86
|
+
cya_label: C.label,
|
|
87
|
+
data: {
|
|
88
|
+
url: "".concat(FORM_DATA.urls.refData, "/v3/charlies")
|
|
89
|
+
},
|
|
90
|
+
full_path: C.fieldId
|
|
91
|
+
})],
|
|
92
|
+
formData: FORM_DATA
|
|
93
|
+
}]);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
@@ -8,7 +8,9 @@ var _models = require("../../models");
|
|
|
8
8
|
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); }
|
|
9
9
|
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; }
|
|
10
10
|
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; }
|
|
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; }
|
|
11
|
+
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; }
|
|
12
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
13
|
+
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); }
|
|
12
14
|
var standardiseAction = function standardiseAction(obj) {
|
|
13
15
|
var action = _objectSpread({}, obj);
|
|
14
16
|
// This is in place for backwards compatibility with version 1.
|
|
@@ -41,10 +43,12 @@ var getPageActions = function getPageActions(page) {
|
|
|
41
43
|
}
|
|
42
44
|
if (a && _typeof(a) === 'object') {
|
|
43
45
|
var _PageAction$DEFAULTS$;
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
var object = a;
|
|
47
|
+
// eslint-disable-next-line no-prototype-builtins
|
|
48
|
+
if ((_PageAction$DEFAULTS$ = _models.PageAction.DEFAULTS[object.type]) !== null && _PageAction$DEFAULTS$ !== void 0 && _PageAction$DEFAULTS$.validate && !object.hasOwnProperty('validate')) {
|
|
49
|
+
object.validate = true;
|
|
46
50
|
}
|
|
47
|
-
return standardiseAction(
|
|
51
|
+
return standardiseAction(object);
|
|
48
52
|
}
|
|
49
53
|
return undefined;
|
|
50
54
|
}).filter(function (a) {
|