@ukhomeoffice/cop-react-form-renderer 5.45.2-alpha → 5.48.1-alpha
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 +12 -12
- package/dist/components/CheckYourAnswers/Answer.test.js +127 -92
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +131 -101
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +769 -464
- package/dist/components/CollectionPage/CollectionPage.js +58 -66
- package/dist/components/CollectionPage/CollectionPage.test.js +342 -300
- package/dist/components/CollectionSummary/BannerStrip.js +12 -12
- package/dist/components/CollectionSummary/BannerStrip.test.js +59 -63
- package/dist/components/CollectionSummary/CollectionSummary.js +88 -61
- package/dist/components/CollectionSummary/CollectionSummary.test.js +96 -102
- package/dist/components/CollectionSummary/Confirmation.js +12 -14
- package/dist/components/CollectionSummary/Confirmation.test.js +63 -68
- package/dist/components/CollectionSummary/SummaryCard.js +148 -109
- package/dist/components/CollectionSummary/SummaryCard.scss +1 -1
- package/dist/components/CollectionSummary/SummaryCard.test.js +927 -905
- package/dist/components/CollectionSummary/SummaryCardValidationContext.js +29 -23
- package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +73 -61
- package/dist/components/FormComponent/Collection.js +107 -73
- package/dist/components/FormComponent/Collection.test.js +945 -809
- package/dist/components/FormComponent/Container.js +38 -40
- package/dist/components/FormComponent/Container.test.js +345 -314
- package/dist/components/FormComponent/FormComponent.js +70 -67
- package/dist/components/FormComponent/FormComponent.test.js +342 -284
- package/dist/components/FormComponent/helpers/addLabel.js +7 -4
- package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -1
- package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +7 -7
- package/dist/components/FormComponent/helpers/getComponentError.js +5 -3
- package/dist/components/FormComponent/helpers/getComponentError.test.js +14 -14
- package/dist/components/FormComponent/helpers/getComponentFieldSet.js +4 -3
- package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +6 -6
- package/dist/components/FormComponent/helpers/index.js +4 -4
- package/dist/components/FormPage/FormPage.js +80 -65
- package/dist/components/FormPage/FormPage.test.js +163 -127
- package/dist/components/FormRenderer/FormRenderer.js +181 -144
- package/dist/components/FormRenderer/FormRenderer.test.js +1115 -730
- package/dist/components/FormRenderer/handlers/cyaAction.js +2 -2
- package/dist/components/FormRenderer/handlers/getPageId.js +3 -1
- package/dist/components/FormRenderer/handlers/getPageId.test.js +14 -14
- package/dist/components/FormRenderer/handlers/handlers.test.js +32 -32
- package/dist/components/FormRenderer/handlers/index.js +1 -1
- package/dist/components/FormRenderer/handlers/navigate.js +3 -3
- package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.js +5 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.test.js +47 -11
- package/dist/components/FormRenderer/helpers/canCYASubmit.js +3 -1
- package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +20 -16
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +22 -17
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +16 -16
- package/dist/components/FormRenderer/helpers/getCYA.js +5 -3
- package/dist/components/FormRenderer/helpers/getCYA.test.js +11 -11
- package/dist/components/FormRenderer/helpers/getFormState.js +7 -5
- package/dist/components/FormRenderer/helpers/getFormState.test.js +10 -10
- package/dist/components/FormRenderer/helpers/getNextPageId.js +24 -13
- package/dist/components/FormRenderer/helpers/getNextPageId.test.js +67 -67
- package/dist/components/FormRenderer/helpers/getPage.js +4 -2
- package/dist/components/FormRenderer/helpers/getPage.test.js +11 -11
- package/dist/components/FormRenderer/helpers/getRelevantPages.js +9 -7
- package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +14 -14
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +5 -5
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +91 -97
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +60 -62
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +73 -71
- package/dist/components/FormRenderer/helpers/index.js +1 -1
- package/dist/components/FormRenderer/onCYAAction.js +51 -59
- package/dist/components/FormRenderer/onCYAAction.test.js +152 -164
- package/dist/components/FormRenderer/onPageAction.js +40 -44
- package/dist/components/FormRenderer/onPageAction.test.js +206 -223
- package/dist/components/FormRenderer/onTaskAction.js +13 -9
- package/dist/components/FormRenderer/onTaskAction.test.js +88 -93
- package/dist/components/PageActions/ActionButton.js +15 -12
- package/dist/components/PageActions/ActionButton.test.js +78 -56
- package/dist/components/PageActions/PageActions.js +10 -10
- package/dist/components/PageActions/PageActions.test.js +115 -86
- package/dist/components/SummaryList/GroupAction.js +17 -9
- package/dist/components/SummaryList/GroupAction.test.js +33 -37
- package/dist/components/SummaryList/RowAction.js +16 -11
- package/dist/components/SummaryList/RowAction.test.js +33 -37
- package/dist/components/SummaryList/SummaryList.js +26 -21
- package/dist/components/SummaryList/SummaryList.test.js +166 -143
- package/dist/components/SummaryList/SummaryListHeadingRow.js +4 -6
- package/dist/components/SummaryList/SummaryListRow.js +4 -6
- package/dist/components/SummaryList/SummaryListTitleRow.js +3 -5
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +5 -3
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +22 -22
- package/dist/components/SummaryList/helpers/getRowActionAttributes.js +5 -3
- package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +22 -22
- package/dist/components/SummaryList/helpers/index.js +1 -1
- package/dist/components/TaskList/Task.js +29 -19
- package/dist/components/TaskList/Task.test.js +76 -83
- package/dist/components/TaskList/TaskList.js +71 -45
- package/dist/components/TaskList/TaskList.test.js +111 -113
- package/dist/components/TaskList/TaskState.js +5 -7
- package/dist/components/TaskList/TaskState.test.js +45 -52
- package/dist/components/index.js +7 -7
- package/dist/context/HooksContext/HooksContext.js +79 -58
- package/dist/context/HooksContext/HooksContext.test.js +35 -26
- package/dist/context/HooksContext/index.js +4 -3
- package/dist/context/ValidationContext/ValidationContext.js +72 -32
- package/dist/context/ValidationContext/ValidationContext.test.js +59 -47
- package/dist/context/ValidationContext/index.js +4 -3
- package/dist/context/index.js +2 -2
- package/dist/hooks/index.js +10 -9
- package/dist/hooks/useAxios.js +40 -14
- package/dist/hooks/useGetRequest.js +97 -61
- package/dist/hooks/useHooks.js +3 -1
- package/dist/hooks/useRefData.js +39 -26
- package/dist/hooks/useValidation.js +3 -1
- package/dist/index.js +14 -13
- package/dist/models/CollectionLabels.js +1 -1
- package/dist/models/ComponentTypes.js +25 -25
- package/dist/models/EventTypes.js +4 -4
- package/dist/models/FormPages.js +4 -4
- package/dist/models/FormTypes.js +8 -8
- package/dist/models/HubFormats.js +3 -3
- package/dist/models/PageAction.js +38 -44
- package/dist/models/TaskStates.js +28 -30
- package/dist/models/index.js +9 -9
- package/dist/setupTests.js +31 -30
- package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
- package/dist/utils/CheckYourAnswers/getCYAAction.test.js +54 -52
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +25 -15
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +35 -33
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +31 -17
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +44 -42
- package/dist/utils/CheckYourAnswers/getCYARow.js +6 -6
- package/dist/utils/CheckYourAnswers/getCYARow.test.js +86 -86
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +24 -18
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +16 -15
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +36 -33
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +60 -58
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +88 -79
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +124 -146
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +20 -25
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +97 -103
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +18 -13
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +76 -70
- package/dist/utils/CheckYourAnswers/index.js +1 -1
- package/dist/utils/CheckYourAnswers/showComponentCYA.js +4 -4
- package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +24 -24
- package/dist/utils/CollectionPage/addCollectionPageEntry.js +1 -1
- package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +5 -5
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +2 -2
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +17 -17
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +18 -9
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +22 -27
- package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
- package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +10 -10
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +11 -7
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +22 -22
- package/dist/utils/CollectionPage/getCollectionPageData.js +12 -8
- package/dist/utils/CollectionPage/getCollectionPageData.test.js +19 -19
- package/dist/utils/CollectionPage/getQuickEditPage.js +19 -19
- package/dist/utils/CollectionPage/getQuickEditPage.test.js +16 -12
- package/dist/utils/CollectionPage/index.js +1 -1
- package/dist/utils/CollectionPage/mergeCollectionPages.js +30 -29
- package/dist/utils/CollectionPage/mergeCollectionPages.test.js +17 -17
- package/dist/utils/CollectionPage/removeCollectionPageEntry.js +6 -4
- package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +10 -10
- package/dist/utils/CollectionPage/setCollectionPageData.js +12 -8
- package/dist/utils/CollectionPage/setCollectionPageData.test.js +17 -17
- package/dist/utils/Component/addShowWhen.js +8 -4
- package/dist/utils/Component/addShowWhen.test.js +37 -37
- package/dist/utils/Component/applyToComponentTree.js +18 -18
- package/dist/utils/Component/applyToComponentTree.test.js +32 -27
- package/dist/utils/Component/cleanAttributes.js +13 -10
- package/dist/utils/Component/cleanAttributes.test.js +18 -17
- package/dist/utils/Component/elevateNestedComponents.js +5 -5
- package/dist/utils/Component/elevateNestedComponents.test.js +30 -30
- package/dist/utils/Component/getComponent.js +94 -88
- package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +17 -18
- package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +59 -46
- package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +48 -39
- package/dist/utils/Component/getComponentTests/getComponent.date.test.js +33 -23
- package/dist/utils/Component/getComponentTests/getComponent.details.test.js +18 -20
- package/dist/utils/Component/getComponentTests/getComponent.email.test.js +22 -17
- package/dist/utils/Component/getComponentTests/getComponent.file.test.js +25 -20
- package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +9 -10
- package/dist/utils/Component/getComponentTests/getComponent.html.test.js +15 -17
- package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +8 -9
- package/dist/utils/Component/getComponentTests/getComponent.list.test.js +15 -17
- package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +26 -22
- package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +175 -155
- package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +15 -17
- package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +22 -17
- package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +70 -57
- package/dist/utils/Component/getComponentTests/getComponent.select.test.js +22 -17
- package/dist/utils/Component/getComponentTests/getComponent.text.test.js +22 -17
- package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +38 -31
- package/dist/utils/Component/getComponentTests/getComponent.time.test.js +29 -20
- package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +2 -2
- package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +8 -9
- package/dist/utils/Component/getDefaultValue.js +8 -6
- package/dist/utils/Component/getDefaultValue.test.js +12 -12
- package/dist/utils/Component/getDefaultValueFromConfig.js +21 -22
- package/dist/utils/Component/getDefaultValueFromConfig.test.js +31 -31
- package/dist/utils/Component/index.js +1 -1
- package/dist/utils/Component/isEditable.js +4 -2
- package/dist/utils/Component/isEditable.test.js +15 -14
- package/dist/utils/Component/optionIsSelected.js +1 -1
- package/dist/utils/Component/optionIsSelected.test.js +9 -9
- package/dist/utils/Component/setupContainerComponentsPath.js +29 -27
- package/dist/utils/Component/setupContainerComponentsPath.test.js +11 -11
- package/dist/utils/Component/showComponent.js +1 -1
- package/dist/utils/Component/showComponent.test.js +28 -28
- package/dist/utils/Component/wrapInFormGroup.js +2 -2
- package/dist/utils/Condition/index.js +1 -1
- package/dist/utils/Condition/meetsAllConditions.js +7 -7
- package/dist/utils/Condition/meetsAllConditions.test.js +17 -17
- package/dist/utils/Condition/meetsCondition.js +17 -14
- package/dist/utils/Condition/meetsCondition.test.js +376 -376
- package/dist/utils/Condition/meetsOneCondition.js +5 -5
- package/dist/utils/Condition/meetsOneCondition.test.js +16 -16
- package/dist/utils/Condition/setupConditions.js +18 -13
- package/dist/utils/Condition/setupConditions.test.js +7 -7
- package/dist/utils/Container/getEditableComponents.js +5 -3
- package/dist/utils/Container/getEditableComponents.test.js +45 -43
- package/dist/utils/Container/index.js +1 -1
- package/dist/utils/Container/setupNesting.js +20 -16
- package/dist/utils/Container/setupNesting.test.js +30 -27
- package/dist/utils/Container/showContainer.js +7 -3
- package/dist/utils/Container/showContainer.test.js +30 -30
- package/dist/utils/Data/applyFormula.js +48 -38
- package/dist/utils/Data/applyFormula.test.js +20 -20
- package/dist/utils/Data/getAutocompleteSource.js +26 -18
- package/dist/utils/Data/getAutocompleteSource.test.js +86 -80
- package/dist/utils/Data/getDataPath.js +28 -18
- package/dist/utils/Data/getDataPath.test.js +12 -12
- package/dist/utils/Data/getOptions.js +25 -19
- package/dist/utils/Data/getOptions.test.js +20 -20
- package/dist/utils/Data/getSourceData.js +19 -6
- package/dist/utils/Data/getSourceData.test.js +80 -84
- package/dist/utils/Data/index.js +1 -1
- package/dist/utils/Data/refDataToOptions.js +13 -10
- package/dist/utils/Data/refDataToOptions.test.js +19 -19
- package/dist/utils/Data/setDataItem.js +8 -7
- package/dist/utils/Data/setDataItem.test.js +37 -37
- package/dist/utils/Data/setupFormData.js +21 -13
- package/dist/utils/Data/setupFormData.test.js +50 -51
- package/dist/utils/Data/setupRefDataUrlForComponent.js +26 -20
- package/dist/utils/Data/setupRefDataUrlForComponent.test.js +24 -24
- package/dist/utils/FormPage/applyConditionalProperties.js +9 -5
- package/dist/utils/FormPage/applyConditionalProperties.test.js +18 -15
- package/dist/utils/FormPage/getFormPage.js +16 -15
- package/dist/utils/FormPage/getFormPage.test.js +46 -47
- package/dist/utils/FormPage/getFormPages.js +12 -7
- package/dist/utils/FormPage/getFormPages.test.js +23 -20
- package/dist/utils/FormPage/getPageActions.js +15 -9
- package/dist/utils/FormPage/getPageActions.test.js +32 -32
- package/dist/utils/FormPage/getPageTitle.js +2 -2
- package/dist/utils/FormPage/getPageTitle.test.js +22 -22
- package/dist/utils/FormPage/getParagraphFromText.js +7 -5
- package/dist/utils/FormPage/getParagraphFromText.test.js +6 -6
- package/dist/utils/FormPage/index.js +1 -1
- package/dist/utils/FormPage/showFormPage.js +7 -3
- package/dist/utils/FormPage/showFormPage.test.js +32 -32
- package/dist/utils/FormPage/showFormPageCYA.js +1 -1
- package/dist/utils/FormPage/showFormPageCYA.test.js +8 -8
- package/dist/utils/FormPage/useComponent.js +28 -21
- package/dist/utils/FormPage/useComponent.test.js +79 -78
- package/dist/utils/Format/formatData.js +1 -1
- package/dist/utils/Format/formatData.test.js +18 -18
- package/dist/utils/Format/formatDataForComponent.js +6 -5
- package/dist/utils/Format/formatDataForComponent.test.js +77 -50
- package/dist/utils/Format/formatDataForForm.js +8 -6
- package/dist/utils/Format/formatDataForForm.test.js +15 -13
- package/dist/utils/Format/formatDataForPage.js +5 -4
- package/dist/utils/Format/formatDataForPage.test.js +23 -20
- package/dist/utils/Format/index.js +1 -1
- package/dist/utils/Hub/getFormHub.js +1 -1
- package/dist/utils/Hub/getFormHub.test.js +31 -28
- package/dist/utils/Hub/index.js +1 -1
- package/dist/utils/Meta/constants.js +2 -2
- package/dist/utils/Meta/documents/getDocuments.js +1 -1
- package/dist/utils/Meta/documents/getDocuments.test.js +16 -24
- package/dist/utils/Meta/documents/index.js +1 -1
- package/dist/utils/Meta/documents/setDocumentsForField.js +16 -14
- package/dist/utils/Meta/documents/setDocumentsForField.test.js +34 -68
- package/dist/utils/Meta/index.js +1 -1
- package/dist/utils/Operate/checkValueIsTruthy.js +2 -2
- package/dist/utils/Operate/checkValueIsTruthy.test.js +16 -16
- package/dist/utils/Operate/getFirstOf.js +5 -5
- package/dist/utils/Operate/getFirstOf.test.js +31 -31
- package/dist/utils/Operate/getIndexOfMatchingValueIn.js +10 -10
- package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +46 -46
- package/dist/utils/Operate/index.js +1 -1
- package/dist/utils/Operate/persistValueInFormData.js +3 -3
- package/dist/utils/Operate/persistValueInFormData.test.js +20 -22
- package/dist/utils/Operate/runPageOperations.js +7 -7
- package/dist/utils/Operate/runPageOperations.test.js +36 -35
- package/dist/utils/Operate/setValueInFormData.js +2 -2
- package/dist/utils/Operate/setValueInFormData.test.js +16 -16
- package/dist/utils/Operate/shouldRun.js +6 -6
- package/dist/utils/Operate/shouldRun.test.js +26 -21
- package/dist/utils/Validate/additional/conditionallyRequired.js +4 -4
- package/dist/utils/Validate/additional/conditionallyRequired.test.js +18 -18
- package/dist/utils/Validate/additional/index.js +10 -8
- package/dist/utils/Validate/additional/index.test.js +12 -12
- package/dist/utils/Validate/additional/mustBeAfter.js +2 -2
- package/dist/utils/Validate/additional/mustBeAfter.test.js +40 -40
- package/dist/utils/Validate/additional/mustBeBefore.js +2 -2
- package/dist/utils/Validate/additional/mustBeBefore.test.js +28 -28
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +11 -7
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +41 -37
- package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
- package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +18 -18
- package/dist/utils/Validate/additional/mustBeInTheFuture.js +2 -2
- package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +12 -12
- package/dist/utils/Validate/additional/mustBeInThePast.js +3 -3
- package/dist/utils/Validate/additional/mustBeInThePast.test.js +12 -12
- package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
- package/dist/utils/Validate/additional/mustBeLessThan.test.js +17 -17
- package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
- package/dist/utils/Validate/additional/mustBeLongerThan.test.js +16 -16
- package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
- package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +20 -20
- package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
- package/dist/utils/Validate/additional/mustBeShorterThan.test.js +16 -16
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +35 -0
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +127 -0
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +2 -2
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +16 -14
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +12 -12
- package/dist/utils/Validate/additional/mustNotContainSql.js +4 -3
- package/dist/utils/Validate/additional/mustNotContainSql.test.js +14 -14
- package/dist/utils/Validate/additional/mustSelectOnlyOne.js +2 -2
- package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +26 -28
- package/dist/utils/Validate/additional/utils.js +22 -9
- package/dist/utils/Validate/index.js +1 -1
- package/dist/utils/Validate/validateCollection.js +25 -19
- package/dist/utils/Validate/validateCollection.test.js +66 -74
- package/dist/utils/Validate/validateComponent.js +16 -18
- package/dist/utils/Validate/validateComponent.test.js +146 -167
- package/dist/utils/Validate/validateContainer.js +19 -14
- package/dist/utils/Validate/validateContainer.test.js +45 -49
- package/dist/utils/Validate/validateDate.js +17 -11
- package/dist/utils/Validate/validateDate.test.js +29 -28
- package/dist/utils/Validate/validateEmail.js +8 -6
- package/dist/utils/Validate/validateEmail.test.js +25 -25
- package/dist/utils/Validate/validateMultifile.js +7 -5
- package/dist/utils/Validate/validateMultifile.test.js +18 -17
- package/dist/utils/Validate/validatePage.js +18 -17
- package/dist/utils/Validate/validatePage.test.js +182 -185
- package/dist/utils/Validate/validateRegex.js +5 -3
- package/dist/utils/Validate/validateRegex.test.js +14 -14
- package/dist/utils/Validate/validateRequired.js +6 -4
- package/dist/utils/Validate/validateRequired.test.js +18 -18
- package/dist/utils/Validate/validateTextArea.js +6 -4
- package/dist/utils/Validate/validateTextArea.test.js +20 -20
- package/dist/utils/Validate/validateTime.js +14 -7
- package/dist/utils/Validate/validateTime.test.js +14 -14
- package/dist/utils/index.js +9 -7
- package/package.json +2 -2
|
@@ -3,130 +3,129 @@
|
|
|
3
3
|
var _models = require("../../models");
|
|
4
4
|
var _validateComponent = _interopRequireDefault(require("./validateComponent"));
|
|
5
5
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
7
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
8
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
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); } // Local imports
|
|
12
|
+
describe('utils.Validate.Component', function () {
|
|
13
|
+
var setup = function setup(id, type, label, required, additionalValidation) {
|
|
14
|
+
return {
|
|
15
|
+
id: id,
|
|
16
|
+
fieldId: id,
|
|
17
|
+
type: type,
|
|
18
|
+
label: label,
|
|
19
|
+
required: required,
|
|
20
|
+
additionalValidation: additionalValidation
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
it('should return no error when the component is null', function () {
|
|
18
24
|
expect((0, _validateComponent.default)(null, {})).toBeUndefined();
|
|
19
25
|
});
|
|
20
|
-
describe('when there is no form data', ()
|
|
21
|
-
it('should return no error when the component is not required and not an email type', ()
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
describe('when there is no form data', function () {
|
|
27
|
+
it('should return no error when the component is not required and not an email type', function () {
|
|
28
|
+
var ID = 'field';
|
|
29
|
+
var LABEL = 'Field';
|
|
30
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
|
|
25
31
|
expect((0, _validateComponent.default)(COMPONENT, null)).toBeUndefined();
|
|
26
32
|
});
|
|
27
|
-
it('should return a required error when the component is required and not an email type', ()
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
it('should return a required error when the component is required and not an email type', function () {
|
|
34
|
+
var ID = 'field';
|
|
35
|
+
var LABEL = 'Field';
|
|
36
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
|
|
31
37
|
expect((0, _validateComponent.default)(COMPONENT, null)).toEqual({
|
|
32
38
|
id: ID,
|
|
33
39
|
error: "".concat(LABEL, " is required")
|
|
34
40
|
});
|
|
35
41
|
});
|
|
36
|
-
it('should return a required error when the component is required and of type email', ()
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
it('should return a required error when the component is required and of type email', function () {
|
|
43
|
+
var ID = 'field';
|
|
44
|
+
var LABEL = 'Field';
|
|
45
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
|
|
40
46
|
expect((0, _validateComponent.default)(COMPONENT, null)).toEqual({
|
|
41
47
|
id: ID,
|
|
42
48
|
error: "".concat(LABEL, " is required")
|
|
43
49
|
});
|
|
44
50
|
});
|
|
45
|
-
it('should return a required error when the component is required and of type collection summary', ()
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
...setup(ID, _models.ComponentTypes.COLLECTION_SUMMARY, LABEL, true),
|
|
51
|
+
it('should return a required error when the component is required and of type collection summary', function () {
|
|
52
|
+
var ID = 'field';
|
|
53
|
+
var LABEL = 'Field';
|
|
54
|
+
var COMPONENT = _objectSpread(_objectSpread({}, setup(ID, _models.ComponentTypes.COLLECTION_SUMMARY, LABEL, true)), {}, {
|
|
50
55
|
collectionName: 'testCollection'
|
|
51
|
-
};
|
|
56
|
+
});
|
|
52
57
|
expect((0, _validateComponent.default)(COMPONENT, {})).toEqual({
|
|
53
58
|
id: ID,
|
|
54
59
|
error: "".concat(LABEL, " is required")
|
|
55
60
|
});
|
|
56
61
|
});
|
|
57
|
-
it('should return no error when the component is of type email but not required', ()
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
it('should return no error when the component is of type email but not required', function () {
|
|
63
|
+
var ID = 'field';
|
|
64
|
+
var LABEL = 'Field';
|
|
65
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
|
|
61
66
|
expect((0, _validateComponent.default)(COMPONENT, null)).toBeUndefined();
|
|
62
67
|
});
|
|
63
68
|
});
|
|
64
|
-
describe('when the value is fully valid', ()
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const LABEL = 'Field';
|
|
71
|
-
const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
|
|
69
|
+
describe('when the value is fully valid', function () {
|
|
70
|
+
var ID = 'field';
|
|
71
|
+
var DATA = _defineProperty({}, ID, 'alpha.bravo@digital.homeoffice.gov.uk');
|
|
72
|
+
it('should return no error when the component is not required and not an email type', function () {
|
|
73
|
+
var LABEL = 'Field';
|
|
74
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
|
|
72
75
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
|
|
73
76
|
});
|
|
74
|
-
it('should return no error when the component is required and not an email type', ()
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
it('should return no error when the component is required and not an email type', function () {
|
|
78
|
+
var LABEL = 'Field';
|
|
79
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
|
|
77
80
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
|
|
78
81
|
});
|
|
79
|
-
it('should return no error when the component is required and of type email', ()
|
|
80
|
-
|
|
81
|
-
|
|
82
|
+
it('should return no error when the component is required and of type email', function () {
|
|
83
|
+
var LABEL = 'Field';
|
|
84
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
|
|
82
85
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
|
|
83
86
|
});
|
|
84
|
-
it('should return no error when the component is of type email but not required', ()
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
it('should return no error when the component is of type email but not required', function () {
|
|
88
|
+
var LABEL = 'Field';
|
|
89
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
|
|
87
90
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
|
|
88
91
|
});
|
|
89
92
|
});
|
|
90
|
-
describe('when the value is an invalid email', ()
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
const LABEL = 'Field';
|
|
97
|
-
const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
|
|
93
|
+
describe('when the value is an invalid email', function () {
|
|
94
|
+
var ID = 'field';
|
|
95
|
+
var DATA = _defineProperty({}, ID, 'alpha.bravo@hotmail.com');
|
|
96
|
+
it('should return no error when the component is not required and not an email type', function () {
|
|
97
|
+
var LABEL = 'Field';
|
|
98
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
|
|
98
99
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
|
|
99
100
|
});
|
|
100
|
-
it('should return no error when the component is required and not an email type', ()
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
it('should return no error when the component is required and not an email type', function () {
|
|
102
|
+
var LABEL = 'Field';
|
|
103
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
|
|
103
104
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
|
|
104
105
|
});
|
|
105
|
-
it('should return no error when the component is required and of type email', ()
|
|
106
|
-
|
|
107
|
-
|
|
106
|
+
it('should return no error when the component is required and of type email', function () {
|
|
107
|
+
var LABEL = 'Field';
|
|
108
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
|
|
108
109
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
|
|
109
110
|
id: ID,
|
|
110
111
|
error: "Enter ".concat(LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
|
|
111
112
|
});
|
|
112
113
|
});
|
|
113
|
-
it('should return no error when the component is of type email but not required', ()
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
it('should return no error when the component is of type email but not required', function () {
|
|
115
|
+
var LABEL = 'Field';
|
|
116
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
|
|
116
117
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
|
|
117
118
|
id: ID,
|
|
118
119
|
error: "Enter ".concat(LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
|
|
119
120
|
});
|
|
120
121
|
});
|
|
121
122
|
});
|
|
122
|
-
describe('when the component is a Date Input', ()
|
|
123
|
-
|
|
124
|
-
it('should always reject invalid dates', ()
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
[ID]: '25-45-2033'
|
|
129
|
-
};
|
|
123
|
+
describe('when the component is a Date Input', function () {
|
|
124
|
+
var ID = 'field';
|
|
125
|
+
it('should always reject invalid dates', function () {
|
|
126
|
+
var LABEL = 'Field';
|
|
127
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false);
|
|
128
|
+
var DATA = _defineProperty({}, ID, '25-45-2033');
|
|
130
129
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
|
|
131
130
|
error: 'Month must be between 1 and 12',
|
|
132
131
|
id: ID,
|
|
@@ -135,18 +134,16 @@ describe('utils.Validate.Component', () => {
|
|
|
135
134
|
}
|
|
136
135
|
});
|
|
137
136
|
});
|
|
138
|
-
it('should apply optional validators when specified', ()
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
};
|
|
143
|
-
const ADDITIONAL_VALIDATION = [{
|
|
137
|
+
it('should apply optional validators when specified', function () {
|
|
138
|
+
var LABEL = 'Field';
|
|
139
|
+
var DATA = _defineProperty({}, ID, '25-3-3033');
|
|
140
|
+
var ADDITIONAL_VALIDATION = [{
|
|
144
141
|
function: 'mustBeBefore',
|
|
145
142
|
value: 3,
|
|
146
143
|
unit: 'day',
|
|
147
144
|
message: 'Date must be less than 3 days in the future'
|
|
148
145
|
}];
|
|
149
|
-
|
|
146
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false, ADDITIONAL_VALIDATION);
|
|
150
147
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
|
|
151
148
|
error: 'Date must be less than 3 days in the future',
|
|
152
149
|
id: ID,
|
|
@@ -158,14 +155,12 @@ describe('utils.Validate.Component', () => {
|
|
|
158
155
|
});
|
|
159
156
|
});
|
|
160
157
|
});
|
|
161
|
-
describe('when the component is a Time Input', ()
|
|
162
|
-
|
|
163
|
-
it('should always reject invalid time', ()
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
[ID]: '25:45'
|
|
168
|
-
};
|
|
158
|
+
describe('when the component is a Time Input', function () {
|
|
159
|
+
var ID = 'field';
|
|
160
|
+
it('should always reject invalid time', function () {
|
|
161
|
+
var LABEL = 'Field';
|
|
162
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.TIME, LABEL, false);
|
|
163
|
+
var DATA = _defineProperty({}, ID, '25:45');
|
|
169
164
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
|
|
170
165
|
error: 'Hour must be between 0 and 23',
|
|
171
166
|
id: ID,
|
|
@@ -175,50 +170,38 @@ describe('utils.Validate.Component', () => {
|
|
|
175
170
|
});
|
|
176
171
|
});
|
|
177
172
|
});
|
|
178
|
-
describe('when the component is a container', ()
|
|
179
|
-
it('should return an empty array when the container has only valid components', ()
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
173
|
+
describe('when the component is a container', function () {
|
|
174
|
+
it('should return an empty array when the container has only valid components', function () {
|
|
175
|
+
var EMAIL_ID = 'email';
|
|
176
|
+
var EMAIL_LABEL = 'Email';
|
|
177
|
+
var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
|
|
178
|
+
var ID = 'container';
|
|
179
|
+
var LABEL = 'field';
|
|
180
|
+
var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
|
|
186
181
|
CONTAINER.components = [EMAIL];
|
|
187
|
-
|
|
188
|
-
[ID]: {
|
|
189
|
-
[EMAIL_ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
|
|
190
|
-
}
|
|
191
|
-
};
|
|
182
|
+
var DATA = _defineProperty({}, ID, _defineProperty({}, EMAIL_ID, 'alpha.bravo@digital.homeoffice.gov.uk'));
|
|
192
183
|
expect((0, _validateComponent.default)(CONTAINER, DATA)).toEqual([]);
|
|
193
184
|
});
|
|
194
185
|
});
|
|
195
|
-
describe('when the component is a collection', ()
|
|
196
|
-
it('should return an empty array when the collection has only valid items', ()
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
186
|
+
describe('when the component is a collection', function () {
|
|
187
|
+
it('should return an empty array when the collection has only valid items', function () {
|
|
188
|
+
var EMAIL_ID = 'email';
|
|
189
|
+
var EMAIL_LABEL = 'Email';
|
|
190
|
+
var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
|
|
191
|
+
var ID = 'collection';
|
|
192
|
+
var LABEL = 'field';
|
|
193
|
+
var COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false);
|
|
203
194
|
COLLECTION.item = [EMAIL];
|
|
204
|
-
|
|
205
|
-
[ID]: [{
|
|
206
|
-
[EMAIL_ID]: 'alpha.bravo@homeoffice.gov.uk'
|
|
207
|
-
}, {
|
|
208
|
-
[EMAIL_ID]: 'charlie.delta@homeoffice.gov.uk'
|
|
209
|
-
}]
|
|
210
|
-
};
|
|
195
|
+
var DATA = _defineProperty({}, ID, [_defineProperty({}, EMAIL_ID, 'alpha.bravo@homeoffice.gov.uk'), _defineProperty({}, EMAIL_ID, 'charlie.delta@homeoffice.gov.uk')]);
|
|
211
196
|
expect((0, _validateComponent.default)(COLLECTION, DATA)).toEqual([]);
|
|
212
197
|
});
|
|
213
198
|
});
|
|
214
|
-
describe('when the component has a nested component', ()
|
|
215
|
-
it('should return no error when the radio component contains nested components without errors', ()
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
};
|
|
221
|
-
const COMPONENT = {
|
|
199
|
+
describe('when the component has a nested component', function () {
|
|
200
|
+
it('should return no error when the radio component contains nested components without errors', function () {
|
|
201
|
+
var NESTED_ID = 'nestedId';
|
|
202
|
+
var NESTED_VALUE = 'nestedValue';
|
|
203
|
+
var FORMDATA = _defineProperty({}, NESTED_ID, NESTED_VALUE);
|
|
204
|
+
var COMPONENT = {
|
|
222
205
|
type: 'radios',
|
|
223
206
|
id: 'a',
|
|
224
207
|
data: {
|
|
@@ -234,10 +217,10 @@ describe('utils.Validate.Component', () => {
|
|
|
234
217
|
};
|
|
235
218
|
expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
|
|
236
219
|
});
|
|
237
|
-
it('should return an error when the radio component contains nested components with errors', ()
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
220
|
+
it('should return an error when the radio component contains nested components with errors', function () {
|
|
221
|
+
var NESTED_ID = 'nestedId';
|
|
222
|
+
var FORMDATA = {};
|
|
223
|
+
var COMPONENT = {
|
|
241
224
|
type: 'radios',
|
|
242
225
|
id: 'a',
|
|
243
226
|
data: {
|
|
@@ -256,9 +239,9 @@ describe('utils.Validate.Component', () => {
|
|
|
256
239
|
error: "Field is required"
|
|
257
240
|
}]);
|
|
258
241
|
});
|
|
259
|
-
it('should return no error when a non selected radio component contains nested components with errors', ()
|
|
260
|
-
|
|
261
|
-
|
|
242
|
+
it('should return no error when a non selected radio component contains nested components with errors', function () {
|
|
243
|
+
var NESTED_ID = 'nestedId';
|
|
244
|
+
var COMPONENT = {
|
|
262
245
|
type: 'radios',
|
|
263
246
|
id: 'a',
|
|
264
247
|
data: {
|
|
@@ -275,13 +258,11 @@ describe('utils.Validate.Component', () => {
|
|
|
275
258
|
};
|
|
276
259
|
expect((0, _validateComponent.default)(COMPONENT, undefined, {})).toBeUndefined();
|
|
277
260
|
});
|
|
278
|
-
it('should return no error when the checkbox component contains nested components without errors', ()
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
};
|
|
284
|
-
const COMPONENT = {
|
|
261
|
+
it('should return no error when the checkbox component contains nested components without errors', function () {
|
|
262
|
+
var NESTED_ID = 'nestedId';
|
|
263
|
+
var NESTED_VALUE = 'nestedValue';
|
|
264
|
+
var FORMDATA = _defineProperty({}, NESTED_ID, NESTED_VALUE);
|
|
265
|
+
var COMPONENT = {
|
|
285
266
|
type: 'checkboxes',
|
|
286
267
|
id: 'a',
|
|
287
268
|
data: {
|
|
@@ -297,13 +278,13 @@ describe('utils.Validate.Component', () => {
|
|
|
297
278
|
};
|
|
298
279
|
expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
|
|
299
280
|
});
|
|
300
|
-
it('should return an error when the checkbox component contains nested components with errors', ()
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
281
|
+
it('should return an error when the checkbox component contains nested components with errors', function () {
|
|
282
|
+
var NESTED_ID = 'nestedId';
|
|
283
|
+
var OPTION_VALUE = 'optionValue';
|
|
284
|
+
var FORMDATA = {
|
|
304
285
|
'a': [OPTION_VALUE]
|
|
305
286
|
};
|
|
306
|
-
|
|
287
|
+
var COMPONENT = {
|
|
307
288
|
type: 'checkboxes',
|
|
308
289
|
id: 'a',
|
|
309
290
|
data: {
|
|
@@ -323,15 +304,14 @@ describe('utils.Validate.Component', () => {
|
|
|
323
304
|
error: "Field is required"
|
|
324
305
|
}]);
|
|
325
306
|
});
|
|
326
|
-
it('should return no error when a non selected checkbox component contains nested components with errors', ()
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
'a': ['optionValueSelected']
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
const COMPONENT = {
|
|
307
|
+
it('should return no error when a non selected checkbox component contains nested components with errors', function () {
|
|
308
|
+
var NESTED_ID_NOT_SELECTED = 'nestedIdNotSelected';
|
|
309
|
+
var NESTED_ID_SELECTED = 'nestedIdSelected';
|
|
310
|
+
var NESTED_VALUE_SELECTED = 'nestedValueSelected';
|
|
311
|
+
var FORMDATA = _defineProperty({
|
|
312
|
+
'a': ['optionValueSelected']
|
|
313
|
+
}, NESTED_ID_SELECTED, NESTED_VALUE_SELECTED);
|
|
314
|
+
var COMPONENT = {
|
|
335
315
|
type: 'checkboxes',
|
|
336
316
|
id: 'a',
|
|
337
317
|
data: {
|
|
@@ -358,17 +338,16 @@ describe('utils.Validate.Component', () => {
|
|
|
358
338
|
};
|
|
359
339
|
expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
|
|
360
340
|
});
|
|
361
|
-
it('should return no error when all selected checkbox components contains nested components without errors', ()
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
const COMPONENT = {
|
|
341
|
+
it('should return no error when all selected checkbox components contains nested components without errors', function () {
|
|
342
|
+
var _FORMDATA4;
|
|
343
|
+
var NESTED_ID_SELECTED_1 = 'nestedIdSelected1';
|
|
344
|
+
var NESTED_ID_SELECTED_2 = 'nestedIdSelected2';
|
|
345
|
+
var NESTED_VALUE_SELECTED_1 = 'nestedValueSelected1';
|
|
346
|
+
var NESTED_VALUE_SELECTED_2 = 'nestedValueSelected2';
|
|
347
|
+
var FORMDATA = (_FORMDATA4 = {
|
|
348
|
+
'a': ['optionValueSelected1', 'optionValueSelected2']
|
|
349
|
+
}, _defineProperty(_FORMDATA4, NESTED_ID_SELECTED_1, NESTED_VALUE_SELECTED_1), _defineProperty(_FORMDATA4, NESTED_ID_SELECTED_2, NESTED_VALUE_SELECTED_2), _FORMDATA4);
|
|
350
|
+
var COMPONENT = {
|
|
372
351
|
type: 'checkboxes',
|
|
373
352
|
id: 'a',
|
|
374
353
|
data: {
|
|
@@ -7,8 +7,12 @@ exports.default = void 0;
|
|
|
7
7
|
var _validateComponent = _interopRequireDefault(require("./validateComponent"));
|
|
8
8
|
var _additional = _interopRequireDefault(require("./additional"));
|
|
9
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
11
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
12
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
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); } // Local imports
|
|
12
16
|
/**
|
|
13
17
|
* Validates all components within a container.
|
|
14
18
|
* @param {object} container The container to validate.
|
|
@@ -16,32 +20,33 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
16
20
|
* @param {object} formData The data at the top level of the form.
|
|
17
21
|
* @returns Errors for all components within the container.
|
|
18
22
|
*/
|
|
19
|
-
|
|
23
|
+
var validateContainer = function validateContainer(container, outerData, formData) {
|
|
20
24
|
if (!container) {
|
|
21
25
|
return [];
|
|
22
26
|
}
|
|
23
|
-
|
|
24
|
-
|
|
27
|
+
var fd = formData || outerData;
|
|
28
|
+
var error = (0, _additional.default)(container, fd);
|
|
25
29
|
if (error) {
|
|
26
30
|
return {
|
|
27
31
|
id: container.id,
|
|
28
|
-
error
|
|
32
|
+
error: error
|
|
29
33
|
};
|
|
30
34
|
}
|
|
31
|
-
|
|
35
|
+
var errors = [];
|
|
32
36
|
if (Array.isArray(container.components)) {
|
|
33
|
-
|
|
34
|
-
container.components.forEach(component
|
|
37
|
+
var containerData = outerData && container.fieldId ? outerData[container.fieldId] : outerData;
|
|
38
|
+
container.components.forEach(function (component) {
|
|
35
39
|
// It is possible that the container being passed in is a
|
|
36
40
|
// dummy container just for validation. In that scenario we want
|
|
37
41
|
// to ignore the full_path and just use the component's fieldId.
|
|
38
|
-
|
|
39
|
-
errors.push((0, _validateComponent.default)({
|
|
40
|
-
...component,
|
|
42
|
+
var fullPath = container.full_path || container.fieldId ? "".concat(container.full_path || container.fieldId, ".").concat(component.fieldId) : component.fieldId;
|
|
43
|
+
errors.push((0, _validateComponent.default)(_objectSpread(_objectSpread({}, component), {}, {
|
|
41
44
|
full_path: fullPath
|
|
42
|
-
}, containerData, fd));
|
|
45
|
+
}), containerData, fd));
|
|
43
46
|
});
|
|
44
47
|
}
|
|
45
|
-
return errors.flat(1).filter(
|
|
48
|
+
return errors.flat(1).filter(function (e) {
|
|
49
|
+
return !!e;
|
|
50
|
+
});
|
|
46
51
|
};
|
|
47
52
|
var _default = exports.default = validateContainer;
|
|
@@ -3,74 +3,70 @@
|
|
|
3
3
|
var _models = require("../../models");
|
|
4
4
|
var _validateContainer = _interopRequireDefault(require("./validateContainer"));
|
|
5
5
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
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); } // Local imports
|
|
10
|
+
describe('utils.Validate.Container', function () {
|
|
11
|
+
var setup = function setup(id, type, label, required, additionalValidation) {
|
|
12
|
+
return {
|
|
13
|
+
id: id,
|
|
14
|
+
fieldId: id,
|
|
15
|
+
type: type,
|
|
16
|
+
label: label,
|
|
17
|
+
required: required,
|
|
18
|
+
additionalValidation: additionalValidation
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
it('should return an empty array when the component is null', function () {
|
|
18
22
|
expect((0, _validateContainer.default)(null, {})).toEqual([]);
|
|
19
23
|
});
|
|
20
|
-
it('should return an empty array when the container has an undefined components array', ()
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
it('should return an empty array when the container has an undefined components array', function () {
|
|
25
|
+
var ID = 'container';
|
|
26
|
+
var LABEL = 'field';
|
|
27
|
+
var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
|
|
24
28
|
expect((0, _validateContainer.default)(CONTAINER, null)).toEqual([]);
|
|
25
29
|
});
|
|
26
|
-
it('should return an empty array when the container has no components', ()
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
it('should return an empty array when the container has no components', function () {
|
|
31
|
+
var ID = 'container';
|
|
32
|
+
var LABEL = 'field';
|
|
33
|
+
var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
|
|
30
34
|
CONTAINER.components = [];
|
|
31
35
|
expect((0, _validateContainer.default)(CONTAINER, null)).toEqual([]);
|
|
32
36
|
});
|
|
33
|
-
it('should return an empty array when the container has only valid components', ()
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
it('should return an empty array when the container has only valid components', function () {
|
|
38
|
+
var EMAIL_ID = 'email';
|
|
39
|
+
var EMAIL_LABEL = 'Email';
|
|
40
|
+
var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
|
|
41
|
+
var ID = 'container';
|
|
42
|
+
var LABEL = 'field';
|
|
43
|
+
var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
|
|
40
44
|
CONTAINER.components = [EMAIL];
|
|
41
|
-
|
|
42
|
-
[ID]: {
|
|
43
|
-
[EMAIL_ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
|
|
44
|
-
}
|
|
45
|
-
};
|
|
45
|
+
var DATA = _defineProperty({}, ID, _defineProperty({}, EMAIL_ID, 'alpha.bravo@digital.homeoffice.gov.uk'));
|
|
46
46
|
expect((0, _validateContainer.default)(CONTAINER, DATA)).toEqual([]);
|
|
47
47
|
});
|
|
48
|
-
it('should return an array containing an error when the container has an invalid component', ()
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
it('should return an array containing an error when the container has an invalid component', function () {
|
|
49
|
+
var EMAIL_ID = 'email';
|
|
50
|
+
var EMAIL_LABEL = 'Email';
|
|
51
|
+
var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
|
|
52
|
+
var ID = 'container';
|
|
53
|
+
var LABEL = 'field';
|
|
54
|
+
var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
|
|
55
55
|
CONTAINER.components = [EMAIL];
|
|
56
|
-
|
|
57
|
-
[ID]: {
|
|
58
|
-
[EMAIL_ID]: 'alpha.bravo@digital.homeoffice.com'
|
|
59
|
-
}
|
|
60
|
-
};
|
|
56
|
+
var DATA = _defineProperty({}, ID, _defineProperty({}, EMAIL_ID, 'alpha.bravo@digital.homeoffice.com'));
|
|
61
57
|
expect((0, _validateContainer.default)(CONTAINER, DATA)).toEqual([{
|
|
62
58
|
id: "".concat(ID, ".").concat(EMAIL_ID),
|
|
63
59
|
error: "Enter ".concat(EMAIL_LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
|
|
64
60
|
}]);
|
|
65
61
|
});
|
|
66
|
-
it('should apply optional validators when specified', ()
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
62
|
+
it('should apply optional validators when specified', function () {
|
|
63
|
+
var ID = 'container';
|
|
64
|
+
var DATA = {};
|
|
65
|
+
var ADDITIONAL_VALIDATION = [{
|
|
70
66
|
function: 'mustEnterAtLeastOne',
|
|
71
67
|
message: 'Must enter at least one'
|
|
72
68
|
}];
|
|
73
|
-
|
|
69
|
+
var COMPONENT = setup(ID, _models.ComponentTypes.DATE, null, false, ADDITIONAL_VALIDATION);
|
|
74
70
|
expect((0, _validateContainer.default)(COMPONENT, DATA)).toEqual({
|
|
75
71
|
error: 'Must enter at least one',
|
|
76
72
|
id: ID
|