@ukhomeoffice/cop-react-form-renderer 5.0.0-alpha → 5.0.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.
- 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 +45 -14
- 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 +251 -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 +76 -23
- 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,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _formatData = _interopRequireDefault(require("./formatData"));
|
|
4
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
5
|
+
// Local imports
|
|
6
|
+
|
|
7
|
+
describe('utils', function () {
|
|
8
|
+
describe('Format', function () {
|
|
9
|
+
describe('formatData', function () {
|
|
10
|
+
it('should handle no format', function () {
|
|
11
|
+
var FORMAT = null;
|
|
12
|
+
var VALUE = 'AlPhA';
|
|
13
|
+
expect((0, _formatData.default)(FORMAT, VALUE)).toEqual(VALUE);
|
|
14
|
+
});
|
|
15
|
+
it('should handle no value', function () {
|
|
16
|
+
var FORMAT = {
|
|
17
|
+
type: 'lowercase'
|
|
18
|
+
};
|
|
19
|
+
var VALUE = null;
|
|
20
|
+
expect((0, _formatData.default)(FORMAT, VALUE)).toBeNull();
|
|
21
|
+
});
|
|
22
|
+
it('should format a string as lowercase', function () {
|
|
23
|
+
var FORMAT = {
|
|
24
|
+
type: 'lowercase'
|
|
25
|
+
};
|
|
26
|
+
var VALUE = 'AlPhA';
|
|
27
|
+
expect((0, _formatData.default)(FORMAT, VALUE)).toEqual('alpha');
|
|
28
|
+
});
|
|
29
|
+
it('should format a string as uppercase', function () {
|
|
30
|
+
var FORMAT = {
|
|
31
|
+
type: 'uppercase'
|
|
32
|
+
};
|
|
33
|
+
var VALUE = 'AlPhA';
|
|
34
|
+
expect((0, _formatData.default)(FORMAT, VALUE)).toEqual('ALPHA');
|
|
35
|
+
});
|
|
36
|
+
it('should leave an unknown format type alone', function () {
|
|
37
|
+
var FORMAT = {
|
|
38
|
+
type: 'not-a-real-type'
|
|
39
|
+
};
|
|
40
|
+
var VALUE = 'AlPhA';
|
|
41
|
+
expect((0, _formatData.default)(FORMAT, VALUE)).toEqual(VALUE);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
});
|
|
@@ -15,8 +15,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
15
15
|
* @param {string} eventType What type of event initiated this call.
|
|
16
16
|
*/
|
|
17
17
|
var formatDataForComponent = function formatDataForComponent(component, data, eventType) {
|
|
18
|
+
var componentData = data;
|
|
18
19
|
if (component.format && component.format.on === eventType) {
|
|
19
|
-
|
|
20
|
+
componentData[component.fieldId] = (0, _formatData.default)(component.format, componentData[component.fieldId]);
|
|
20
21
|
}
|
|
21
22
|
};
|
|
22
23
|
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _models = require("../../models");
|
|
4
|
+
var _formatDataForComponent = _interopRequireWildcard(require("./formatDataForComponent"));
|
|
5
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
6
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
7
|
+
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); }
|
|
8
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
9
|
+
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."); }
|
|
10
|
+
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); }
|
|
11
|
+
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; }
|
|
12
|
+
function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
|
|
13
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
14
|
+
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; }
|
|
15
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
16
|
+
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); }
|
|
17
|
+
describe('utils', function () {
|
|
18
|
+
describe('Format', function () {
|
|
19
|
+
var setupField = function setupField(fieldId, format) {
|
|
20
|
+
return {
|
|
21
|
+
fieldId: fieldId,
|
|
22
|
+
format: format
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
var setupData = function setupData(fieldId, value) {
|
|
26
|
+
return _defineProperty({}, fieldId, value);
|
|
27
|
+
};
|
|
28
|
+
var setupFieldAndData = function setupFieldAndData(fieldId, format, value) {
|
|
29
|
+
return [setupField(fieldId, format), setupData(fieldId, value)];
|
|
30
|
+
};
|
|
31
|
+
describe('formatDataForComponent', function () {
|
|
32
|
+
it('should handle no format', function () {
|
|
33
|
+
var EVENT_TYPE = _models.EventTypes.SUBMIT;
|
|
34
|
+
var FIELD_ID = 'field';
|
|
35
|
+
var FORMAT = null;
|
|
36
|
+
var VALUE = 'AlPhA';
|
|
37
|
+
var _setupFieldAndData = setupFieldAndData(FIELD_ID, FORMAT, VALUE),
|
|
38
|
+
_setupFieldAndData2 = _slicedToArray(_setupFieldAndData, 2),
|
|
39
|
+
COMPONENT = _setupFieldAndData2[0],
|
|
40
|
+
DATA = _setupFieldAndData2[1];
|
|
41
|
+
(0, _formatDataForComponent.default)(COMPONENT, DATA, EVENT_TYPE);
|
|
42
|
+
expect(DATA[FIELD_ID]).toEqual(VALUE);
|
|
43
|
+
});
|
|
44
|
+
it('should handle no value', function () {
|
|
45
|
+
var EVENT_TYPE = _models.EventTypes.SUBMIT;
|
|
46
|
+
var FIELD_ID = 'field';
|
|
47
|
+
var FORMAT = {
|
|
48
|
+
type: 'lowercase',
|
|
49
|
+
on: EVENT_TYPE
|
|
50
|
+
};
|
|
51
|
+
var VALUE = null;
|
|
52
|
+
var _setupFieldAndData3 = setupFieldAndData(FIELD_ID, FORMAT, VALUE),
|
|
53
|
+
_setupFieldAndData4 = _slicedToArray(_setupFieldAndData3, 2),
|
|
54
|
+
COMPONENT = _setupFieldAndData4[0],
|
|
55
|
+
DATA = _setupFieldAndData4[1];
|
|
56
|
+
(0, _formatDataForComponent.default)(COMPONENT, DATA, EVENT_TYPE);
|
|
57
|
+
expect(DATA[FIELD_ID]).toBeNull();
|
|
58
|
+
});
|
|
59
|
+
it('should remain unchanged if the wrong event type', function () {
|
|
60
|
+
var EVENT_TYPE = _models.EventTypes.SUBMIT;
|
|
61
|
+
var FIELD_ID = 'field';
|
|
62
|
+
var FORMAT = {
|
|
63
|
+
type: 'lowercase',
|
|
64
|
+
on: _models.EventTypes.BLUR
|
|
65
|
+
};
|
|
66
|
+
var VALUE = 'AlPhA';
|
|
67
|
+
var _setupFieldAndData5 = setupFieldAndData(FIELD_ID, FORMAT, VALUE),
|
|
68
|
+
_setupFieldAndData6 = _slicedToArray(_setupFieldAndData5, 2),
|
|
69
|
+
COMPONENT = _setupFieldAndData6[0],
|
|
70
|
+
DATA = _setupFieldAndData6[1];
|
|
71
|
+
(0, _formatDataForComponent.default)(COMPONENT, DATA, EVENT_TYPE);
|
|
72
|
+
expect(DATA[FIELD_ID]).toEqual(VALUE);
|
|
73
|
+
});
|
|
74
|
+
it('should format a string as lowercase', function () {
|
|
75
|
+
var EVENT_TYPE = _models.EventTypes.SUBMIT;
|
|
76
|
+
var FIELD_ID = 'field';
|
|
77
|
+
var FORMAT = {
|
|
78
|
+
type: 'lowercase',
|
|
79
|
+
on: EVENT_TYPE
|
|
80
|
+
};
|
|
81
|
+
var VALUE = 'AlPhA';
|
|
82
|
+
var _setupFieldAndData7 = setupFieldAndData(FIELD_ID, FORMAT, VALUE),
|
|
83
|
+
_setupFieldAndData8 = _slicedToArray(_setupFieldAndData7, 2),
|
|
84
|
+
COMPONENT = _setupFieldAndData8[0],
|
|
85
|
+
DATA = _setupFieldAndData8[1];
|
|
86
|
+
(0, _formatDataForComponent.default)(COMPONENT, DATA, EVENT_TYPE);
|
|
87
|
+
expect(DATA[FIELD_ID]).toEqual('alpha');
|
|
88
|
+
});
|
|
89
|
+
it('should format a string as uppercase', function () {
|
|
90
|
+
var EVENT_TYPE = _models.EventTypes.SUBMIT;
|
|
91
|
+
var FIELD_ID = 'field';
|
|
92
|
+
var FORMAT = {
|
|
93
|
+
type: 'uppercase',
|
|
94
|
+
on: EVENT_TYPE
|
|
95
|
+
};
|
|
96
|
+
var VALUE = 'AlPhA';
|
|
97
|
+
var _setupFieldAndData9 = setupFieldAndData(FIELD_ID, FORMAT, VALUE),
|
|
98
|
+
_setupFieldAndData10 = _slicedToArray(_setupFieldAndData9, 2),
|
|
99
|
+
COMPONENT = _setupFieldAndData10[0],
|
|
100
|
+
DATA = _setupFieldAndData10[1];
|
|
101
|
+
(0, _formatDataForComponent.default)(COMPONENT, DATA, EVENT_TYPE);
|
|
102
|
+
expect(DATA[FIELD_ID]).toEqual('ALPHA');
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe('formatDataForComponents', function () {
|
|
106
|
+
it('should appropriately format multiple components', function () {
|
|
107
|
+
var EVENT_TYPE = _models.EventTypes.SUBMIT;
|
|
108
|
+
var COMPONENTS = [setupField('alpha', {
|
|
109
|
+
type: 'lowercase',
|
|
110
|
+
on: _models.EventTypes.SUBMIT
|
|
111
|
+
}),
|
|
112
|
+
// Should be formatted
|
|
113
|
+
setupField('bravo', null),
|
|
114
|
+
// Nothing to format
|
|
115
|
+
setupField('charlie', {
|
|
116
|
+
type: 'uppercase',
|
|
117
|
+
on: _models.EventTypes.SUBMIT
|
|
118
|
+
}),
|
|
119
|
+
// Should be formatted
|
|
120
|
+
setupField('delta', {
|
|
121
|
+
type: 'uppercase',
|
|
122
|
+
on: _models.EventTypes.BLUR
|
|
123
|
+
}) // Should not be formatted because of event type
|
|
124
|
+
];
|
|
125
|
+
|
|
126
|
+
var DATA = {
|
|
127
|
+
alpha: 'AlPhA',
|
|
128
|
+
bravo: 'bRaVo',
|
|
129
|
+
charlie: 'CHArlie',
|
|
130
|
+
delta: 'deLTA'
|
|
131
|
+
};
|
|
132
|
+
(0, _formatDataForComponent.formatDataForComponents)(COMPONENTS, DATA, EVENT_TYPE);
|
|
133
|
+
expect(DATA).toEqual({
|
|
134
|
+
alpha: 'alpha',
|
|
135
|
+
bravo: 'bRaVo',
|
|
136
|
+
charlie: 'CHARLIE',
|
|
137
|
+
delta: 'deLTA'
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
});
|
|
@@ -6,9 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _formatDataForComponent = require("./formatDataForComponent");
|
|
8
8
|
var _formatDataForPage = require("./formatDataForPage");
|
|
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
|
* Formats the data for all components on a form, according to each component's format configuration.
|
|
14
17
|
* @param {object} form The form to format the components for.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _models = require("../../models");
|
|
4
|
+
var _formatDataForForm = _interopRequireDefault(require("./formatDataForForm"));
|
|
5
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
|
+
// Local imports
|
|
7
|
+
|
|
8
|
+
describe('utils', function () {
|
|
9
|
+
describe('Format', function () {
|
|
10
|
+
var setupField = function setupField(fieldId, format) {
|
|
11
|
+
return {
|
|
12
|
+
fieldId: fieldId,
|
|
13
|
+
format: format
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
describe('formatDataForForm', function () {
|
|
17
|
+
it('should appropriately format entire form', function () {
|
|
18
|
+
var EVENT_TYPE = _models.EventTypes.SUBMIT;
|
|
19
|
+
var COMPONENTS = [setupField('alpha', {
|
|
20
|
+
type: 'lowercase',
|
|
21
|
+
on: _models.EventTypes.SUBMIT
|
|
22
|
+
}),
|
|
23
|
+
// Should be formatted
|
|
24
|
+
setupField('bravo', null),
|
|
25
|
+
// Nothing to format
|
|
26
|
+
setupField('charlie', {
|
|
27
|
+
type: 'uppercase',
|
|
28
|
+
on: _models.EventTypes.SUBMIT
|
|
29
|
+
}),
|
|
30
|
+
// Should be formatted
|
|
31
|
+
setupField('delta', {
|
|
32
|
+
type: 'uppercase',
|
|
33
|
+
on: _models.EventTypes.BLUR
|
|
34
|
+
}),
|
|
35
|
+
// Should not be formatted because of event type
|
|
36
|
+
setupField('echo', {
|
|
37
|
+
type: 'uppercase',
|
|
38
|
+
on: _models.EventTypes.SUBMIT
|
|
39
|
+
}),
|
|
40
|
+
// Should not be formatted because of event type
|
|
41
|
+
setupField('foxtrot', {
|
|
42
|
+
type: 'lowercase',
|
|
43
|
+
on: _models.EventTypes.SUBMIT
|
|
44
|
+
}) // Should not be formatted because of event type
|
|
45
|
+
];
|
|
46
|
+
|
|
47
|
+
var DATA = {
|
|
48
|
+
alpha: 'AlPhA',
|
|
49
|
+
bravo: 'bRaVo',
|
|
50
|
+
charlie: 'CHArlie',
|
|
51
|
+
delta: 'deLTA',
|
|
52
|
+
foxtrot: 'FOXTROT'
|
|
53
|
+
};
|
|
54
|
+
var FORM = {
|
|
55
|
+
components: COMPONENTS.slice(0, 1),
|
|
56
|
+
pages: [{
|
|
57
|
+
components: COMPONENTS.slice(2, 3)
|
|
58
|
+
}, {
|
|
59
|
+
components: COMPONENTS.slice(4)
|
|
60
|
+
}]
|
|
61
|
+
};
|
|
62
|
+
var FORMATTED_DATA = (0, _formatDataForForm.default)(FORM, DATA, EVENT_TYPE);
|
|
63
|
+
expect(FORMATTED_DATA).toEqual({
|
|
64
|
+
alpha: 'alpha',
|
|
65
|
+
bravo: 'bRaVo',
|
|
66
|
+
charlie: 'CHARLIE',
|
|
67
|
+
delta: 'deLTA',
|
|
68
|
+
foxtrot: 'foxtrot'
|
|
69
|
+
});
|
|
70
|
+
// The original DATA, meanwhile, should remain untouched.
|
|
71
|
+
expect(DATA).toEqual({
|
|
72
|
+
alpha: 'AlPhA',
|
|
73
|
+
bravo: 'bRaVo',
|
|
74
|
+
charlie: 'CHArlie',
|
|
75
|
+
delta: 'deLTA',
|
|
76
|
+
foxtrot: 'FOXTROT'
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
});
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
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); }
|
|
4
|
+
var _models = require("../../models");
|
|
5
|
+
var _formatDataForPage = _interopRequireWildcard(require("./formatDataForPage"));
|
|
6
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
7
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
8
|
+
// Local imports
|
|
9
|
+
|
|
10
|
+
describe('utils', function () {
|
|
11
|
+
describe('Format', function () {
|
|
12
|
+
var setupField = function setupField(fieldId, format) {
|
|
13
|
+
return {
|
|
14
|
+
fieldId: fieldId,
|
|
15
|
+
format: format
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
describe('formatDataForPage', function () {
|
|
19
|
+
it('should appropriately format a page of components', function () {
|
|
20
|
+
var EVENT_TYPE = _models.EventTypes.SUBMIT;
|
|
21
|
+
var COMPONENTS = [setupField('alpha', {
|
|
22
|
+
type: 'lowercase',
|
|
23
|
+
on: _models.EventTypes.SUBMIT
|
|
24
|
+
}),
|
|
25
|
+
// Should be formatted
|
|
26
|
+
setupField('bravo', null),
|
|
27
|
+
// Nothing to format
|
|
28
|
+
setupField('charlie', {
|
|
29
|
+
type: 'uppercase',
|
|
30
|
+
on: _models.EventTypes.SUBMIT
|
|
31
|
+
}),
|
|
32
|
+
// Should be formatted
|
|
33
|
+
setupField('delta', {
|
|
34
|
+
type: 'uppercase',
|
|
35
|
+
on: _models.EventTypes.BLUR
|
|
36
|
+
}) // Should not be formatted because of event type
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
var DATA = {
|
|
40
|
+
alpha: 'AlPhA',
|
|
41
|
+
bravo: 'bRaVo',
|
|
42
|
+
charlie: 'CHArlie',
|
|
43
|
+
delta: 'deLTA'
|
|
44
|
+
};
|
|
45
|
+
var PAGE = {
|
|
46
|
+
components: COMPONENTS
|
|
47
|
+
};
|
|
48
|
+
(0, _formatDataForPage.default)(PAGE, DATA, EVENT_TYPE);
|
|
49
|
+
expect(DATA).toEqual({
|
|
50
|
+
alpha: 'alpha',
|
|
51
|
+
bravo: 'bRaVo',
|
|
52
|
+
charlie: 'CHARLIE',
|
|
53
|
+
delta: 'deLTA'
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe('formatDataForPages', function () {
|
|
58
|
+
it('should appropriately format multiple pages', function () {
|
|
59
|
+
var EVENT_TYPE = _models.EventTypes.SUBMIT;
|
|
60
|
+
var COMPONENTS = [setupField('alpha', {
|
|
61
|
+
type: 'lowercase',
|
|
62
|
+
on: _models.EventTypes.SUBMIT
|
|
63
|
+
}),
|
|
64
|
+
// Should be formatted
|
|
65
|
+
setupField('bravo', null),
|
|
66
|
+
// Nothing to format
|
|
67
|
+
setupField('charlie', {
|
|
68
|
+
type: 'uppercase',
|
|
69
|
+
on: _models.EventTypes.SUBMIT
|
|
70
|
+
}),
|
|
71
|
+
// Should be formatted
|
|
72
|
+
setupField('delta', {
|
|
73
|
+
type: 'uppercase',
|
|
74
|
+
on: _models.EventTypes.BLUR
|
|
75
|
+
}) // Should not be formatted because of event type
|
|
76
|
+
];
|
|
77
|
+
|
|
78
|
+
var DATA = {
|
|
79
|
+
alpha: 'AlPhA',
|
|
80
|
+
bravo: 'bRaVo',
|
|
81
|
+
charlie: 'CHArlie',
|
|
82
|
+
delta: 'deLTA'
|
|
83
|
+
};
|
|
84
|
+
var PAGES = [{
|
|
85
|
+
components: COMPONENTS.slice(0, 1)
|
|
86
|
+
}, {
|
|
87
|
+
components: COMPONENTS.slice(2)
|
|
88
|
+
}];
|
|
89
|
+
(0, _formatDataForPage.formatDataForPages)(PAGES, DATA, EVENT_TYPE);
|
|
90
|
+
expect(DATA).toEqual({
|
|
91
|
+
alpha: 'alpha',
|
|
92
|
+
bravo: 'bRaVo',
|
|
93
|
+
charlie: 'CHARLIE',
|
|
94
|
+
delta: 'deLTA'
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
});
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _models = require("../../models");
|
|
4
|
+
var _getFormHub = _interopRequireDefault(require("./getFormHub"));
|
|
5
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
7
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
8
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
9
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
11
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
12
|
+
describe('utils', function () {
|
|
13
|
+
describe('Hub', function () {
|
|
14
|
+
describe('getFormHub', function () {
|
|
15
|
+
var FORM_COMPONENTS = [{
|
|
16
|
+
id: 'a',
|
|
17
|
+
fieldId: 'a',
|
|
18
|
+
label: 'Alpha',
|
|
19
|
+
type: 'text'
|
|
20
|
+
}, {
|
|
21
|
+
id: 'b',
|
|
22
|
+
fieldId: 'b',
|
|
23
|
+
label: 'Bravo',
|
|
24
|
+
type: 'text'
|
|
25
|
+
},
|
|
26
|
+
// eslint-disable-next-line no-template-curly-in-string
|
|
27
|
+
{
|
|
28
|
+
id: 'c',
|
|
29
|
+
fieldId: 'c',
|
|
30
|
+
label: 'Charlie',
|
|
31
|
+
type: 'radios',
|
|
32
|
+
data: {
|
|
33
|
+
url: '${urls.refData}/v3/charlies'
|
|
34
|
+
}
|
|
35
|
+
}];
|
|
36
|
+
var FORM_DATA = {
|
|
37
|
+
urls: {
|
|
38
|
+
refData: 'https://ho.gov.uk/ref-data/'
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
[_models.FormTypes.CYA, _models.FormTypes.FORM, _models.FormTypes.WIZARD].forEach(function (formType) {
|
|
42
|
+
describe("when the FormType is \"".concat(formType, "\""), function () {
|
|
43
|
+
it('should return undefined', function () {
|
|
44
|
+
expect((0, _getFormHub.default)(formType, {}, FORM_COMPONENTS, FORM_DATA)).toBeUndefined();
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe("when the FormType is \"".concat(_models.FormTypes.HUB, "\""), function () {
|
|
49
|
+
it('should return undefined when there is no hub', function () {
|
|
50
|
+
expect((0, _getFormHub.default)(_models.FormTypes.HUB, null, FORM_COMPONENTS, FORM_DATA)).toBeUndefined();
|
|
51
|
+
});
|
|
52
|
+
it("should return undefined when the format is not \"".concat(_models.HubFormats.CYA, "\" but hub also has no components"), function () {
|
|
53
|
+
expect((0, _getFormHub.default)(_models.FormTypes.HUB, {}, FORM_COMPONENTS, FORM_DATA)).toBeUndefined();
|
|
54
|
+
});
|
|
55
|
+
it("should return the string \"".concat(_models.HubFormats.CYA, "\" when the format is set to \"").concat(_models.HubFormats.CYA, "\""), function () {
|
|
56
|
+
var HUB = {
|
|
57
|
+
format: _models.HubFormats.CYA
|
|
58
|
+
};
|
|
59
|
+
expect((0, _getFormHub.default)(_models.FormTypes.HUB, HUB, FORM_COMPONENTS, FORM_DATA)).toEqual(_models.HubFormats.CYA);
|
|
60
|
+
});
|
|
61
|
+
it("should return an appropriate page when the format is not \"".concat(_models.HubFormats.CYA, "\" and hub contains components"), function () {
|
|
62
|
+
var HUB = {
|
|
63
|
+
title: 'Hub title',
|
|
64
|
+
components: ['Opening paragraph', {
|
|
65
|
+
type: 'heading',
|
|
66
|
+
size: 'l',
|
|
67
|
+
content: 'Hub heading'
|
|
68
|
+
}, 'Closing paragraph', {
|
|
69
|
+
use: 'a'
|
|
70
|
+
}]
|
|
71
|
+
};
|
|
72
|
+
var A = FORM_COMPONENTS[0];
|
|
73
|
+
expect((0, _getFormHub.default)(_models.FormTypes.HUB, HUB, FORM_COMPONENTS, FORM_DATA)).toEqual({
|
|
74
|
+
title: HUB.title,
|
|
75
|
+
components: [{
|
|
76
|
+
type: 'html',
|
|
77
|
+
tagName: 'p',
|
|
78
|
+
content: HUB.components[0]
|
|
79
|
+
}, _objectSpread(_objectSpread({}, HUB.components[1]), {}, {
|
|
80
|
+
full_path: HUB.components[1].fieldId
|
|
81
|
+
}), {
|
|
82
|
+
type: 'html',
|
|
83
|
+
tagName: 'p',
|
|
84
|
+
content: HUB.components[2]
|
|
85
|
+
}, _objectSpread(_objectSpread({
|
|
86
|
+
use: 'a'
|
|
87
|
+
}, A), {}, {
|
|
88
|
+
cya_label: A.label,
|
|
89
|
+
full_path: A.fieldId
|
|
90
|
+
})],
|
|
91
|
+
formData: FORM_DATA
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
describe("when the FormType is \"".concat(_models.FormTypes.TASK, "\""), function () {
|
|
96
|
+
it("should return the string \"".concat(_models.HubFormats.TASK, "\" when the format is set to \"").concat(_models.HubFormats.TASK, "\""), function () {
|
|
97
|
+
var HUB = {
|
|
98
|
+
format: _models.HubFormats.TASK
|
|
99
|
+
};
|
|
100
|
+
expect((0, _getFormHub.default)(_models.FormTypes.TASK, HUB, FORM_COMPONENTS, FORM_DATA)).toEqual(_models.HubFormats.TASK);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
});
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
var _constants = require("../constants");
|
|
4
4
|
var _getDocuments = _interopRequireDefault(require("./getDocuments"));
|
|
5
5
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
|
-
function
|
|
6
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
7
|
+
function _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; }
|
|
8
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
9
|
+
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); }
|
|
7
10
|
describe('Utils.Meta.documents.get', function () {
|
|
8
11
|
it('should return an empty array if formData is null', function () {
|
|
9
12
|
expect((0, _getDocuments.default)(null)).toEqual([]);
|
|
@@ -5,13 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _constants = require("../constants");
|
|
8
|
-
var
|
|
8
|
+
var _setDocumentsForField = _interopRequireDefault(require("./setDocumentsForField"));
|
|
9
9
|
var _getDocuments = _interopRequireDefault(require("./getDocuments"));
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
// Local imports
|
|
12
12
|
|
|
13
13
|
var documents = {
|
|
14
|
-
setForField:
|
|
14
|
+
setForField: _setDocumentsForField.default,
|
|
15
15
|
get: _getDocuments.default,
|
|
16
16
|
name: _constants.META_DOCUMENTS_PROPERTY
|
|
17
17
|
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _constants = require("../constants");
|
|
8
|
+
var _getDocuments = _interopRequireDefault(require("./getDocuments"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
11
|
+
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; }
|
|
12
|
+
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; }
|
|
13
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
14
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
15
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
16
|
+
var setDocumentsForField = function setDocumentsForField(documents, formData, field, allowMultiple) {
|
|
17
|
+
var changedDocuments = allowMultiple ? (0, _getDocuments.default)(formData) : (0, _getDocuments.default)(formData).filter(function (d) {
|
|
18
|
+
return d.field !== field;
|
|
19
|
+
});
|
|
20
|
+
if (Array.isArray(documents)) {
|
|
21
|
+
documents.forEach(function (document) {
|
|
22
|
+
changedDocuments.push(_objectSpread(_objectSpread({}, document), {}, {
|
|
23
|
+
field: field
|
|
24
|
+
}));
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
var existing = formData ? formData[_constants.META_PROPERTY] : undefined;
|
|
28
|
+
return _objectSpread(_objectSpread({}, existing), {}, _defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, changedDocuments));
|
|
29
|
+
};
|
|
30
|
+
var _default = setDocumentsForField;
|
|
31
|
+
exports.default = _default;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _constants = require("../constants");
|
|
4
|
+
var _setDocumentsForField = _interopRequireDefault(require("./setDocumentsForField"));
|
|
5
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
7
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
8
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
9
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
10
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
11
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
12
|
+
describe('Utils.Meta.documents.add', function () {
|
|
13
|
+
var ALPHA_DOCUMENT = {
|
|
14
|
+
field: 'alpha',
|
|
15
|
+
url: 'http://alpha-bravo.com/files/alpha'
|
|
16
|
+
};
|
|
17
|
+
var BRAVO_DOCUMENT = {
|
|
18
|
+
field: 'bravo',
|
|
19
|
+
url: 'http://alpha-bravo.com/files/bravo'
|
|
20
|
+
};
|
|
21
|
+
it('should return an appropriately set up object if formData is null', function () {
|
|
22
|
+
expect((0, _setDocumentsForField.default)([ALPHA_DOCUMENT], null, ALPHA_DOCUMENT.field)).toEqual(_defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, [ALPHA_DOCUMENT]));
|
|
23
|
+
});
|
|
24
|
+
it('should add a new document to the array', function () {
|
|
25
|
+
var FORM_DATA = _defineProperty({}, _constants.META_PROPERTY, _defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, [ALPHA_DOCUMENT]));
|
|
26
|
+
expect((0, _setDocumentsForField.default)([BRAVO_DOCUMENT], FORM_DATA, BRAVO_DOCUMENT.field)).toEqual(_defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, [ALPHA_DOCUMENT, BRAVO_DOCUMENT]));
|
|
27
|
+
});
|
|
28
|
+
it('should add multiple new documents to the array', function () {
|
|
29
|
+
var FORM_DATA = _defineProperty({}, _constants.META_PROPERTY, _defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, []));
|
|
30
|
+
var SECOND_DOCUMENT = _objectSpread({}, ALPHA_DOCUMENT);
|
|
31
|
+
expect((0, _setDocumentsForField.default)([ALPHA_DOCUMENT, SECOND_DOCUMENT], FORM_DATA, ALPHA_DOCUMENT.field)).toEqual(_defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, [ALPHA_DOCUMENT, SECOND_DOCUMENT]));
|
|
32
|
+
});
|
|
33
|
+
it('should replace an existing document with the same field', function () {
|
|
34
|
+
var NEW_URL = 'http://replacement.com/files/alpha';
|
|
35
|
+
var NEW_ALPHA = {
|
|
36
|
+
field: ALPHA_DOCUMENT.field,
|
|
37
|
+
url: NEW_URL
|
|
38
|
+
};
|
|
39
|
+
var FORM_DATA = _defineProperty({}, _constants.META_PROPERTY, _defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, [ALPHA_DOCUMENT]));
|
|
40
|
+
expect((0, _setDocumentsForField.default)([NEW_ALPHA], FORM_DATA, NEW_ALPHA.field)).toEqual(_defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, [NEW_ALPHA]));
|
|
41
|
+
});
|
|
42
|
+
it('should add a document with the same field if allowMultiple is true', function () {
|
|
43
|
+
var NEW_URL = 'http://replacement.com/files/alpha';
|
|
44
|
+
var NEW_ALPHA = {
|
|
45
|
+
field: ALPHA_DOCUMENT.field,
|
|
46
|
+
url: NEW_URL
|
|
47
|
+
};
|
|
48
|
+
var FORM_DATA = _defineProperty({}, _constants.META_PROPERTY, _defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, [ALPHA_DOCUMENT]));
|
|
49
|
+
expect((0, _setDocumentsForField.default)([NEW_ALPHA], FORM_DATA, NEW_ALPHA.field, true)).toEqual(_defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, [ALPHA_DOCUMENT, NEW_ALPHA]));
|
|
50
|
+
});
|
|
51
|
+
it('should handle a null document being passed where a document with that field already exists', function () {
|
|
52
|
+
var FORM_DATA = _defineProperty({}, _constants.META_PROPERTY, _defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, [ALPHA_DOCUMENT]));
|
|
53
|
+
expect((0, _setDocumentsForField.default)(null, FORM_DATA, ALPHA_DOCUMENT.field)).toEqual(_defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, []));
|
|
54
|
+
});
|
|
55
|
+
it('should handle a null document being passed where a document with that field does not already exist', function () {
|
|
56
|
+
var FORM_DATA = _defineProperty({}, _constants.META_PROPERTY, _defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, [ALPHA_DOCUMENT]));
|
|
57
|
+
expect((0, _setDocumentsForField.default)(null, FORM_DATA, BRAVO_DOCUMENT.field)).toEqual(_defineProperty({}, _constants.META_DOCUMENTS_PROPERTY, [ALPHA_DOCUMENT]));
|
|
58
|
+
});
|
|
59
|
+
});
|