@ukhomeoffice/cop-react-form-renderer 6.14.0 → 6.14.2-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/README.md +5 -0
- package/dist/components/CheckYourAnswers/Answer.js +12 -11
- package/dist/components/CheckYourAnswers/Answer.test.js +132 -181
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +98 -133
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +544 -939
- package/dist/components/CheckYourAnswers/index.js +1 -1
- package/dist/components/CollectionPage/CollectionPage.js +62 -60
- package/dist/components/CollectionPage/CollectionPage.test.js +315 -365
- package/dist/components/CollectionPage/index.js +1 -1
- package/dist/components/CollectionSummary/BannerStrip.js +14 -14
- package/dist/components/CollectionSummary/BannerStrip.test.js +79 -74
- package/dist/components/CollectionSummary/CollectionSummary.js +75 -97
- package/dist/components/CollectionSummary/CollectionSummary.test.js +182 -166
- package/dist/components/CollectionSummary/Confirmation.js +15 -13
- package/dist/components/CollectionSummary/Confirmation.test.js +68 -63
- package/dist/components/CollectionSummary/RenderListView.js +34 -47
- package/dist/components/CollectionSummary/RenderListView.test.js +113 -111
- package/dist/components/CollectionSummary/SummaryCard.js +101 -133
- package/dist/components/CollectionSummary/SummaryCard.test.js +961 -993
- package/dist/components/CollectionSummary/SummaryCardButtons.js +25 -30
- package/dist/components/CollectionSummary/SummaryCardButtons.test.js +30 -28
- package/dist/components/CollectionSummary/SummaryCardDetails.js +59 -76
- package/dist/components/CollectionSummary/SummaryCardDetails.test.js +170 -180
- package/dist/components/CollectionSummary/SummaryCardValidationContext.js +31 -36
- package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +63 -75
- package/dist/components/CollectionSummary/index.js +1 -1
- package/dist/components/FormComponent/Collection.js +63 -100
- package/dist/components/FormComponent/Collection.test.js +907 -1080
- package/dist/components/FormComponent/Container.js +35 -29
- package/dist/components/FormComponent/Container.test.js +378 -409
- package/dist/components/FormComponent/FormComponent.js +59 -63
- package/dist/components/FormComponent/FormComponent.test.js +354 -415
- package/dist/components/FormComponent/helpers/addLabel.js +4 -7
- package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -1
- package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +8 -8
- package/dist/components/FormComponent/helpers/getComponentError.js +3 -5
- package/dist/components/FormComponent/helpers/getComponentError.test.js +15 -15
- package/dist/components/FormComponent/helpers/getComponentFieldSet.js +3 -4
- package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +7 -7
- package/dist/components/FormComponent/helpers/index.js +5 -5
- package/dist/components/FormComponent/index.js +1 -1
- package/dist/components/FormPage/FormPage.js +70 -93
- package/dist/components/FormPage/FormPage.test.js +150 -202
- package/dist/components/FormPage/index.js +1 -1
- package/dist/components/FormRenderer/FormRenderer.js +131 -173
- package/dist/components/FormRenderer/FormRenderer.test.js +732 -1114
- package/dist/components/FormRenderer/handlers/cyaAction.js +3 -3
- package/dist/components/FormRenderer/handlers/getPageId.js +1 -3
- package/dist/components/FormRenderer/handlers/getPageId.test.js +15 -15
- package/dist/components/FormRenderer/handlers/handlers.test.js +33 -33
- package/dist/components/FormRenderer/handlers/index.js +2 -2
- package/dist/components/FormRenderer/handlers/navigate.js +4 -4
- package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.test.js +16 -16
- package/dist/components/FormRenderer/helpers/canCYASubmit.js +1 -3
- package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +17 -21
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +22 -25
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +21 -21
- package/dist/components/FormRenderer/helpers/getCYA.js +4 -6
- package/dist/components/FormRenderer/helpers/getCYA.test.js +12 -12
- package/dist/components/FormRenderer/helpers/getFormState.js +6 -8
- package/dist/components/FormRenderer/helpers/getFormState.test.js +11 -11
- package/dist/components/FormRenderer/helpers/getNextPageId.js +14 -25
- package/dist/components/FormRenderer/helpers/getNextPageId.test.js +68 -68
- package/dist/components/FormRenderer/helpers/getPage.js +2 -4
- package/dist/components/FormRenderer/helpers/getPage.test.js +12 -12
- package/dist/components/FormRenderer/helpers/getRelevantPages.js +7 -9
- package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +15 -15
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +6 -6
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +104 -98
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +44 -51
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +68 -74
- package/dist/components/FormRenderer/helpers/index.js +2 -2
- package/dist/components/FormRenderer/index.js +1 -1
- package/dist/components/FormRenderer/onCYAAction.js +43 -44
- package/dist/components/FormRenderer/onCYAAction.test.js +126 -133
- package/dist/components/FormRenderer/onPageAction.js +26 -35
- package/dist/components/FormRenderer/onPageAction.test.js +177 -186
- package/dist/components/FormRenderer/onTaskAction.js +11 -12
- package/dist/components/FormRenderer/onTaskAction.test.js +63 -68
- package/dist/components/PageActions/ActionButton.js +14 -14
- package/dist/components/PageActions/ActionButton.test.js +57 -79
- package/dist/components/PageActions/PageActions.js +11 -11
- package/dist/components/PageActions/PageActions.test.js +87 -116
- package/dist/components/PageActions/index.js +1 -1
- package/dist/components/SummaryList/GroupAction.js +10 -18
- package/dist/components/SummaryList/GroupAction.test.js +38 -34
- package/dist/components/SummaryList/RowAction.js +12 -17
- package/dist/components/SummaryList/RowAction.test.js +38 -34
- package/dist/components/SummaryList/SummaryList.js +23 -25
- package/dist/components/SummaryList/SummaryList.test.js +162 -189
- package/dist/components/SummaryList/SummaryListHeadingRow.js +7 -5
- package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +7 -5
- package/dist/components/SummaryList/SummaryListRow.js +7 -5
- package/dist/components/SummaryList/SummaryListTitleRow.js +6 -4
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +3 -5
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +23 -23
- package/dist/components/SummaryList/helpers/getRowActionAttributes.js +3 -5
- package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +23 -23
- package/dist/components/SummaryList/helpers/index.js +2 -2
- package/dist/components/SummaryList/index.js +1 -1
- package/dist/components/TaskList/Task.js +20 -30
- package/dist/components/TaskList/Task.test.js +84 -77
- package/dist/components/TaskList/TaskList.js +56 -79
- package/dist/components/TaskList/TaskList.test.js +149 -149
- package/dist/components/TaskList/TaskState.js +8 -6
- package/dist/components/TaskList/TaskState.test.js +53 -46
- package/dist/components/TaskList/index.js +1 -1
- package/dist/components/index.js +8 -8
- package/dist/context/HooksContext/HooksContext.js +56 -79
- package/dist/context/HooksContext/HooksContext.test.js +27 -36
- package/dist/context/HooksContext/index.js +3 -4
- package/dist/context/ValidationContext/ValidationContext.js +44 -95
- package/dist/context/ValidationContext/ValidationContext.test.js +57 -69
- package/dist/context/ValidationContext/index.js +3 -4
- package/dist/context/index.js +3 -3
- package/dist/hooks/index.js +10 -11
- package/dist/hooks/useAxios.js +15 -41
- package/dist/hooks/useGetRequest.js +62 -98
- package/dist/hooks/useHooks.js +1 -3
- package/dist/hooks/useRefData.js +25 -37
- package/dist/hooks/useValidation.js +1 -3
- package/dist/index.js +14 -15
- 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 +44 -38
- package/dist/models/TaskStates.js +29 -28
- package/dist/models/index.js +10 -10
- package/dist/setupTests.js +30 -31
- package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
- package/dist/utils/CheckYourAnswers/getCYAAction.test.js +53 -55
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +12 -21
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +32 -33
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +15 -28
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +41 -42
- package/dist/utils/CheckYourAnswers/getCYARow.js +7 -7
- package/dist/utils/CheckYourAnswers/getCYARow.test.js +87 -87
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +19 -21
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +16 -17
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +27 -34
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +48 -52
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +76 -93
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +110 -115
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +11 -16
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +112 -106
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +14 -19
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +69 -73
- package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.js +7 -8
- package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.test.js +15 -16
- package/dist/utils/CheckYourAnswers/index.js +2 -2
- package/dist/utils/CheckYourAnswers/showComponentCYA.js +5 -5
- package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +26 -26
- package/dist/utils/CollectionPage/addCollectionPageEntry.js +2 -2
- package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +6 -6
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +3 -3
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +18 -19
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +13 -20
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +48 -39
- package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
- package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +11 -11
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +7 -11
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +23 -23
- package/dist/utils/CollectionPage/getCollectionPageData.js +8 -12
- package/dist/utils/CollectionPage/getCollectionPageData.test.js +20 -20
- package/dist/utils/CollectionPage/getErrorsForCollection.js +20 -21
- package/dist/utils/CollectionPage/getErrorsForCollection.test.js +21 -23
- package/dist/utils/CollectionPage/getQuickEditPage.js +22 -23
- package/dist/utils/CollectionPage/getQuickEditPage.test.js +17 -18
- package/dist/utils/CollectionPage/index.js +2 -2
- package/dist/utils/CollectionPage/mergeCollectionPages.js +26 -35
- package/dist/utils/CollectionPage/mergeCollectionPages.test.js +18 -18
- package/dist/utils/CollectionPage/removeCollectionPageEntry.js +5 -7
- package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +11 -11
- package/dist/utils/CollectionPage/setCollectionPageData.js +10 -16
- package/dist/utils/CollectionPage/setCollectionPageData.test.js +25 -25
- package/dist/utils/Component/addShowWhen.js +5 -6
- package/dist/utils/Component/addShowWhen.test.js +38 -38
- package/dist/utils/Component/applyToComponentTree.js +12 -15
- package/dist/utils/Component/applyToComponentTree.test.js +28 -31
- package/dist/utils/Component/cleanAttributes.js +12 -11
- package/dist/utils/Component/cleanAttributes.test.js +17 -18
- package/dist/utils/Component/elevateNestedComponents.js +6 -6
- package/dist/utils/Component/elevateNestedComponents.test.js +34 -34
- package/dist/utils/Component/getComponent.js +79 -85
- package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +19 -18
- package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +41 -58
- package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +40 -49
- package/dist/utils/Component/getComponentTests/getComponent.date.test.js +24 -34
- package/dist/utils/Component/getComponentTests/getComponent.details.test.js +21 -19
- package/dist/utils/Component/getComponentTests/getComponent.email.test.js +18 -23
- package/dist/utils/Component/getComponentTests/getComponent.file.test.js +21 -26
- package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +11 -10
- package/dist/utils/Component/getComponentTests/getComponent.html.test.js +18 -16
- package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +10 -9
- package/dist/utils/Component/getComponentTests/getComponent.list.test.js +18 -16
- package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +23 -27
- package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +201 -226
- package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +18 -16
- package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +18 -23
- package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +58 -73
- package/dist/utils/Component/getComponentTests/getComponent.select.test.js +18 -23
- package/dist/utils/Component/getComponentTests/getComponent.text.test.js +18 -23
- package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +32 -39
- package/dist/utils/Component/getComponentTests/getComponent.time.test.js +21 -30
- package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +3 -3
- package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +10 -9
- package/dist/utils/Component/getDefaultValue.js +7 -9
- package/dist/utils/Component/getDefaultValue.test.js +13 -13
- package/dist/utils/Component/getDefaultValueFromConfig.js +16 -20
- package/dist/utils/Component/getDefaultValueFromConfig.test.js +32 -32
- package/dist/utils/Component/index.js +2 -2
- package/dist/utils/Component/isEditable.js +2 -4
- package/dist/utils/Component/isEditable.test.js +14 -15
- package/dist/utils/Component/optionIsSelected.js +2 -4
- package/dist/utils/Component/optionIsSelected.test.js +12 -12
- package/dist/utils/Component/setupContainerComponentsPath.js +23 -28
- package/dist/utils/Component/setupContainerComponentsPath.test.js +12 -12
- package/dist/utils/Component/showComponent.js +2 -2
- package/dist/utils/Component/showComponent.test.js +29 -29
- package/dist/utils/Component/wrapInFormGroup.js +4 -4
- package/dist/utils/Condition/index.js +2 -2
- package/dist/utils/Condition/meetsAllConditions.js +9 -9
- package/dist/utils/Condition/meetsAllConditions.test.js +21 -21
- package/dist/utils/Condition/meetsCondition.js +17 -26
- package/dist/utils/Condition/meetsCondition.test.js +403 -403
- package/dist/utils/Condition/meetsOneCondition.js +6 -6
- package/dist/utils/Condition/meetsOneCondition.test.js +17 -17
- package/dist/utils/Condition/setupConditions.js +12 -15
- package/dist/utils/Condition/setupConditions.test.js +8 -8
- package/dist/utils/Container/getEditableComponents.js +4 -6
- package/dist/utils/Container/getEditableComponents.test.js +44 -46
- package/dist/utils/Container/index.js +2 -2
- package/dist/utils/Container/setupNesting.js +14 -15
- package/dist/utils/Container/setupNesting.test.js +20 -23
- package/dist/utils/Container/showContainer.js +4 -8
- package/dist/utils/Container/showContainer.test.js +31 -31
- package/dist/utils/Data/applyFormula.js +30 -44
- package/dist/utils/Data/applyFormula.test.js +21 -21
- package/dist/utils/Data/deleteValues.js +4 -8
- package/dist/utils/Data/deleteValues.test.js +11 -11
- package/dist/utils/Data/getAutocompleteSource.js +72 -63
- package/dist/utils/Data/getAutocompleteSource.test.js +106 -98
- package/dist/utils/Data/getDataPath.js +18 -28
- package/dist/utils/Data/getDataPath.test.js +13 -13
- package/dist/utils/Data/getOptions.js +35 -42
- package/dist/utils/Data/getOptions.test.js +37 -38
- package/dist/utils/Data/getSourceData.js +6 -19
- package/dist/utils/Data/getSourceData.test.js +85 -81
- package/dist/utils/Data/index.js +2 -2
- package/dist/utils/Data/nestInRefdataOptions.js +9 -12
- package/dist/utils/Data/nestInRefdataOptions.test.js +17 -17
- package/dist/utils/Data/refDataToOptions.js +9 -10
- package/dist/utils/Data/refDataToOptions.test.js +20 -20
- package/dist/utils/Data/setDataItem.js +7 -8
- package/dist/utils/Data/setDataItem.test.js +38 -38
- package/dist/utils/Data/setupFormData.js +13 -20
- package/dist/utils/Data/setupFormData.test.js +48 -47
- package/dist/utils/Data/setupRefDataUrlForComponent.js +11 -20
- package/dist/utils/Data/setupRefDataUrlForComponent.test.js +25 -25
- package/dist/utils/FormPage/applyConditionalProperties.js +7 -8
- package/dist/utils/FormPage/applyConditionalProperties.test.js +14 -15
- package/dist/utils/FormPage/getConditionalText.js +4 -4
- package/dist/utils/FormPage/getConditionalText.test.js +30 -30
- package/dist/utils/FormPage/getFormPage.js +12 -15
- package/dist/utils/FormPage/getFormPage.test.js +23 -24
- package/dist/utils/FormPage/getFormPages.js +8 -11
- package/dist/utils/FormPage/getFormPages.test.js +15 -16
- package/dist/utils/FormPage/getPageActions.js +10 -13
- package/dist/utils/FormPage/getPageActions.test.js +33 -33
- package/dist/utils/FormPage/getParagraphFromText.js +5 -7
- package/dist/utils/FormPage/getParagraphFromText.test.js +7 -7
- package/dist/utils/FormPage/index.js +3 -5
- package/dist/utils/FormPage/showFormPage.js +4 -8
- package/dist/utils/FormPage/showFormPage.test.js +33 -33
- package/dist/utils/FormPage/showFormPageCYA.js +2 -2
- package/dist/utils/FormPage/showFormPageCYA.test.js +9 -9
- package/dist/utils/FormPage/useComponent.js +15 -23
- package/dist/utils/FormPage/useComponent.test.js +49 -50
- package/dist/utils/Format/formatData.js +1 -1
- package/dist/utils/Format/formatData.test.js +19 -19
- package/dist/utils/Format/formatDataForComponent.js +6 -7
- package/dist/utils/Format/formatDataForComponent.test.js +50 -78
- package/dist/utils/Format/formatDataForForm.js +5 -6
- package/dist/utils/Format/formatDataForForm.test.js +14 -17
- package/dist/utils/Format/formatDataForPage.js +4 -5
- package/dist/utils/Format/formatDataForPage.test.js +20 -25
- package/dist/utils/Format/index.js +2 -2
- package/dist/utils/Hub/getFormHub.js +2 -2
- package/dist/utils/Hub/getFormHub.test.js +23 -24
- package/dist/utils/Hub/index.js +2 -2
- 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 +25 -17
- package/dist/utils/Meta/documents/index.js +2 -2
- package/dist/utils/Meta/documents/setDocumentsForField.js +12 -13
- package/dist/utils/Meta/documents/setDocumentsForField.test.js +70 -33
- package/dist/utils/Meta/index.js +2 -2
- package/dist/utils/Operate/checkValueIsTruthy.js +3 -3
- package/dist/utils/Operate/checkValueIsTruthy.test.js +17 -17
- package/dist/utils/Operate/deleteValueInFormData.js +2 -2
- package/dist/utils/Operate/deleteValueInFormData.test.js +15 -15
- package/dist/utils/Operate/getFirstOf.js +6 -6
- package/dist/utils/Operate/getFirstOf.test.js +32 -32
- package/dist/utils/Operate/getIndexOfMatchingValueIn.js +11 -11
- package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +47 -53
- package/dist/utils/Operate/getLength.js +9 -9
- package/dist/utils/Operate/getLength.test.js +19 -19
- package/dist/utils/Operate/index.js +2 -2
- package/dist/utils/Operate/persistValueInFormData.js +4 -4
- package/dist/utils/Operate/persistValueInFormData.test.js +23 -21
- package/dist/utils/Operate/runPageOperations.js +8 -8
- package/dist/utils/Operate/runPageOperations.test.js +24 -25
- package/dist/utils/Operate/setValueInFormData.js +3 -3
- package/dist/utils/Operate/setValueInFormData.test.js +17 -17
- package/dist/utils/Operate/shouldRun.js +7 -7
- package/dist/utils/Operate/shouldRun.test.js +22 -24
- package/dist/utils/Validate/additional/conditionallyPermittedChange.js +1 -1
- package/dist/utils/Validate/additional/conditionallyPermittedChange.test.js +15 -15
- package/dist/utils/Validate/additional/conditionallyRequired.js +4 -4
- package/dist/utils/Validate/additional/conditionallyRequired.test.js +19 -19
- package/dist/utils/Validate/additional/index.js +8 -8
- package/dist/utils/Validate/additional/index.test.js +22 -22
- package/dist/utils/Validate/additional/mustBeAfter.js +3 -3
- package/dist/utils/Validate/additional/mustBeAfter.test.js +41 -41
- package/dist/utils/Validate/additional/mustBeBefore.js +3 -3
- package/dist/utils/Validate/additional/mustBeBefore.test.js +29 -29
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +8 -12
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +37 -38
- package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
- package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +19 -19
- package/dist/utils/Validate/additional/mustBeInTheFuture.js +3 -3
- package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +13 -13
- package/dist/utils/Validate/additional/mustBeInThePast.js +4 -4
- package/dist/utils/Validate/additional/mustBeInThePast.test.js +13 -13
- package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
- package/dist/utils/Validate/additional/mustBeLessThan.test.js +18 -18
- package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
- package/dist/utils/Validate/additional/mustBeLongerThan.test.js +17 -17
- package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
- package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +21 -21
- package/dist/utils/Validate/additional/mustBeOneOf.js +1 -1
- package/dist/utils/Validate/additional/mustBeOneOf.test.js +13 -13
- package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
- package/dist/utils/Validate/additional/mustBeShorterThan.test.js +17 -17
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +5 -5
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +35 -36
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +2 -2
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +15 -17
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +13 -13
- package/dist/utils/Validate/additional/mustNotContainSql.js +3 -4
- package/dist/utils/Validate/additional/mustNotContainSql.test.js +15 -15
- package/dist/utils/Validate/additional/mustSelectOnlyOne.js +2 -2
- package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +29 -27
- package/dist/utils/Validate/additional/utils.js +9 -22
- package/dist/utils/Validate/index.js +2 -2
- package/dist/utils/Validate/validateCollection.js +18 -23
- package/dist/utils/Validate/validateCollection.test.js +75 -67
- package/dist/utils/Validate/validateComponent.js +19 -19
- package/dist/utils/Validate/validateComponent.test.js +179 -154
- package/dist/utils/Validate/validateContainer.js +14 -17
- package/dist/utils/Validate/validateContainer.test.js +59 -53
- package/dist/utils/Validate/validateDate.js +16 -22
- package/dist/utils/Validate/validateDate.test.js +31 -32
- package/dist/utils/Validate/validateEmail.js +7 -9
- package/dist/utils/Validate/validateEmail.test.js +27 -27
- package/dist/utils/Validate/validateMultifile.js +5 -7
- package/dist/utils/Validate/validateMultifile.test.js +17 -18
- package/dist/utils/Validate/validatePage.js +13 -18
- package/dist/utils/Validate/validatePage.test.js +198 -195
- package/dist/utils/Validate/validateRegex.js +3 -5
- package/dist/utils/Validate/validateRegex.test.js +15 -15
- package/dist/utils/Validate/validateRequired.js +4 -6
- package/dist/utils/Validate/validateRequired.test.js +19 -19
- package/dist/utils/Validate/validateTextArea.js +4 -6
- package/dist/utils/Validate/validateTextArea.test.js +21 -21
- package/dist/utils/Validate/validateTime.js +12 -19
- package/dist/utils/Validate/validateTime.test.js +27 -27
- package/dist/utils/index.js +5 -6
- package/package.json +2 -4
|
@@ -2,56 +2,53 @@
|
|
|
2
2
|
|
|
3
3
|
var _models = require("../../models");
|
|
4
4
|
var _validateComponent = _interopRequireDefault(require("./validateComponent"));
|
|
5
|
-
function _interopRequireDefault(
|
|
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); }
|
|
5
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
6
|
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
7
|
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(
|
|
10
|
-
function _toPropertyKey(
|
|
11
|
-
function _toPrimitive(
|
|
12
|
-
describe('utils.Validate.Component',
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
};
|
|
23
|
-
it('should return no error when the component is null', function () {
|
|
8
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
9
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
10
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // Local imports
|
|
11
|
+
describe('utils.Validate.Component', () => {
|
|
12
|
+
const setup = (id, type, label, required, additionalValidation) => ({
|
|
13
|
+
id,
|
|
14
|
+
fieldId: id,
|
|
15
|
+
type,
|
|
16
|
+
label,
|
|
17
|
+
required,
|
|
18
|
+
additionalValidation
|
|
19
|
+
});
|
|
20
|
+
it('should return no error when the component is null', () => {
|
|
24
21
|
expect((0, _validateComponent.default)(null, {})).toBeUndefined();
|
|
25
22
|
});
|
|
26
|
-
describe('when there is no form data',
|
|
27
|
-
it('should return no error when the component is not required and not an email type',
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
describe('when there is no form data', () => {
|
|
24
|
+
it('should return no error when the component is not required and not an email type', () => {
|
|
25
|
+
const ID = 'field';
|
|
26
|
+
const LABEL = 'Field';
|
|
27
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
|
|
31
28
|
expect((0, _validateComponent.default)(COMPONENT, null)).toBeUndefined();
|
|
32
29
|
});
|
|
33
|
-
it('should return a required error when the component is required and not an email type',
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
it('should return a required error when the component is required and not an email type', () => {
|
|
31
|
+
const ID = 'field';
|
|
32
|
+
const LABEL = 'Field';
|
|
33
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
|
|
37
34
|
expect((0, _validateComponent.default)(COMPONENT, null)).toEqual({
|
|
38
35
|
id: ID,
|
|
39
36
|
error: "".concat(LABEL, " is required")
|
|
40
37
|
});
|
|
41
38
|
});
|
|
42
|
-
it('should return a required error when the component is required and of type email',
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
39
|
+
it('should return a required error when the component is required and of type email', () => {
|
|
40
|
+
const ID = 'field';
|
|
41
|
+
const LABEL = 'Field';
|
|
42
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
|
|
46
43
|
expect((0, _validateComponent.default)(COMPONENT, null)).toEqual({
|
|
47
44
|
id: ID,
|
|
48
45
|
error: "".concat(LABEL, " is required")
|
|
49
46
|
});
|
|
50
47
|
});
|
|
51
|
-
it('should return a required error when the component is required and of type collection summary',
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
48
|
+
it('should return a required error when the component is required and of type collection summary', () => {
|
|
49
|
+
const ID = 'field';
|
|
50
|
+
const LABEL = 'Field';
|
|
51
|
+
const COMPONENT = _objectSpread(_objectSpread({}, setup(ID, _models.ComponentTypes.COLLECTION_SUMMARY, LABEL, true)), {}, {
|
|
55
52
|
collectionName: 'testCollection'
|
|
56
53
|
});
|
|
57
54
|
expect((0, _validateComponent.default)(COMPONENT, {})).toEqual({
|
|
@@ -59,73 +56,79 @@ describe('utils.Validate.Component', function () {
|
|
|
59
56
|
error: "".concat(LABEL, " is required")
|
|
60
57
|
});
|
|
61
58
|
});
|
|
62
|
-
it('should return no error when the component is of type email but not required',
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
59
|
+
it('should return no error when the component is of type email but not required', () => {
|
|
60
|
+
const ID = 'field';
|
|
61
|
+
const LABEL = 'Field';
|
|
62
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
|
|
66
63
|
expect((0, _validateComponent.default)(COMPONENT, null)).toBeUndefined();
|
|
67
64
|
});
|
|
68
65
|
});
|
|
69
|
-
describe('when the value is fully valid',
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
66
|
+
describe('when the value is fully valid', () => {
|
|
67
|
+
const ID = 'field';
|
|
68
|
+
const DATA = {
|
|
69
|
+
[ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
|
|
70
|
+
};
|
|
71
|
+
it('should return no error when the component is not required and not an email type', () => {
|
|
72
|
+
const LABEL = 'Field';
|
|
73
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
|
|
75
74
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
|
|
76
75
|
});
|
|
77
|
-
it('should return no error when the component is required and not an email type',
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
it('should return no error when the component is required and not an email type', () => {
|
|
77
|
+
const LABEL = 'Field';
|
|
78
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
|
|
80
79
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
|
|
81
80
|
});
|
|
82
|
-
it('should return no error when the component is required and of type email',
|
|
83
|
-
|
|
84
|
-
|
|
81
|
+
it('should return no error when the component is required and of type email', () => {
|
|
82
|
+
const LABEL = 'Field';
|
|
83
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
|
|
85
84
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
|
|
86
85
|
});
|
|
87
|
-
it('should return no error when the component is of type email but not required',
|
|
88
|
-
|
|
89
|
-
|
|
86
|
+
it('should return no error when the component is of type email but not required', () => {
|
|
87
|
+
const LABEL = 'Field';
|
|
88
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
|
|
90
89
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
|
|
91
90
|
});
|
|
92
91
|
});
|
|
93
|
-
describe('when the value is an invalid email',
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
92
|
+
describe('when the value is an invalid email', () => {
|
|
93
|
+
const ID = 'field';
|
|
94
|
+
const DATA = {
|
|
95
|
+
[ID]: 'alpha.bravo@hotmail.com'
|
|
96
|
+
};
|
|
97
|
+
it('should return no error when the component is not required and not an email type', () => {
|
|
98
|
+
const LABEL = 'Field';
|
|
99
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
|
|
99
100
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
|
|
100
101
|
});
|
|
101
|
-
it('should return no error when the component is required and not an email type',
|
|
102
|
-
|
|
103
|
-
|
|
102
|
+
it('should return no error when the component is required and not an email type', () => {
|
|
103
|
+
const LABEL = 'Field';
|
|
104
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
|
|
104
105
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
|
|
105
106
|
});
|
|
106
|
-
it('should return no error when the component is required and of type email',
|
|
107
|
-
|
|
108
|
-
|
|
107
|
+
it('should return no error when the component is required and of type email', () => {
|
|
108
|
+
const LABEL = 'Field';
|
|
109
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
|
|
109
110
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
|
|
110
111
|
id: ID,
|
|
111
112
|
error: "Enter ".concat(LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
|
|
112
113
|
});
|
|
113
114
|
});
|
|
114
|
-
it('should return no error when the component is of type email but not required',
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
it('should return no error when the component is of type email but not required', () => {
|
|
116
|
+
const LABEL = 'Field';
|
|
117
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
|
|
117
118
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
|
|
118
119
|
id: ID,
|
|
119
120
|
error: "Enter ".concat(LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
|
|
120
121
|
});
|
|
121
122
|
});
|
|
122
123
|
});
|
|
123
|
-
describe('when the component is a Date Input',
|
|
124
|
-
|
|
125
|
-
it('should always reject invalid dates',
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
124
|
+
describe('when the component is a Date Input', () => {
|
|
125
|
+
const ID = 'field';
|
|
126
|
+
it('should always reject invalid dates', () => {
|
|
127
|
+
const LABEL = 'Field';
|
|
128
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false);
|
|
129
|
+
const DATA = {
|
|
130
|
+
[ID]: '25-45-2033'
|
|
131
|
+
};
|
|
129
132
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
|
|
130
133
|
error: 'Month must be between 1 and 12',
|
|
131
134
|
id: ID,
|
|
@@ -134,16 +137,18 @@ describe('utils.Validate.Component', function () {
|
|
|
134
137
|
}
|
|
135
138
|
});
|
|
136
139
|
});
|
|
137
|
-
it('should apply optional validators when specified',
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
140
|
+
it('should apply optional validators when specified', () => {
|
|
141
|
+
const LABEL = 'Field';
|
|
142
|
+
const DATA = {
|
|
143
|
+
[ID]: '25-3-3033'
|
|
144
|
+
};
|
|
145
|
+
const ADDITIONAL_VALIDATION = [{
|
|
141
146
|
function: 'mustBeBefore',
|
|
142
147
|
value: 3,
|
|
143
148
|
unit: 'day',
|
|
144
149
|
message: 'Date must be less than 3 days in the future'
|
|
145
150
|
}];
|
|
146
|
-
|
|
151
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false, ADDITIONAL_VALIDATION);
|
|
147
152
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
|
|
148
153
|
error: 'Date must be less than 3 days in the future',
|
|
149
154
|
id: ID,
|
|
@@ -155,12 +160,14 @@ describe('utils.Validate.Component', function () {
|
|
|
155
160
|
});
|
|
156
161
|
});
|
|
157
162
|
});
|
|
158
|
-
describe('when the component is a Time Input',
|
|
159
|
-
|
|
160
|
-
it('should always reject invalid time',
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
163
|
+
describe('when the component is a Time Input', () => {
|
|
164
|
+
const ID = 'field';
|
|
165
|
+
it('should always reject invalid time', () => {
|
|
166
|
+
const LABEL = 'Field';
|
|
167
|
+
const COMPONENT = setup(ID, _models.ComponentTypes.TIME, LABEL, false);
|
|
168
|
+
const DATA = {
|
|
169
|
+
[ID]: '25:45'
|
|
170
|
+
};
|
|
164
171
|
expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
|
|
165
172
|
error: 'Hour must be between 0 and 23',
|
|
166
173
|
id: ID,
|
|
@@ -170,26 +177,30 @@ describe('utils.Validate.Component', function () {
|
|
|
170
177
|
});
|
|
171
178
|
});
|
|
172
179
|
});
|
|
173
|
-
describe('when the component is a container',
|
|
174
|
-
it('should return an empty array when the container has only valid components',
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
180
|
+
describe('when the component is a container', () => {
|
|
181
|
+
it('should return an empty array when the container has only valid components', () => {
|
|
182
|
+
const EMAIL_ID = 'email';
|
|
183
|
+
const EMAIL_LABEL = 'Email';
|
|
184
|
+
const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
|
|
185
|
+
const ID = 'container';
|
|
186
|
+
const LABEL = 'field';
|
|
187
|
+
const CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
|
|
181
188
|
CONTAINER.components = [EMAIL];
|
|
182
|
-
|
|
189
|
+
const DATA = {
|
|
190
|
+
[ID]: {
|
|
191
|
+
[EMAIL_ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
|
|
192
|
+
}
|
|
193
|
+
};
|
|
183
194
|
expect((0, _validateComponent.default)(CONTAINER, DATA)).toEqual([]);
|
|
184
195
|
});
|
|
185
|
-
it('should return an empty array when the container has only valid components',
|
|
186
|
-
|
|
196
|
+
it('should return an empty array when the container has only valid components', () => {
|
|
197
|
+
const TEXT_COMPONENT = {
|
|
187
198
|
id: 'one',
|
|
188
199
|
fieldId: 'one',
|
|
189
200
|
type: _models.ComponentTypes.TEXT,
|
|
190
201
|
label: 'Text component one'
|
|
191
202
|
};
|
|
192
|
-
|
|
203
|
+
const TEXT_COMPONENT_TWO = {
|
|
193
204
|
id: 'two',
|
|
194
205
|
fieldId: 'two',
|
|
195
206
|
type: _models.ComponentTypes.TEXT,
|
|
@@ -201,38 +212,48 @@ describe('utils.Validate.Component', function () {
|
|
|
201
212
|
value: 'other'
|
|
202
213
|
}
|
|
203
214
|
};
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
215
|
+
const ID = 'container';
|
|
216
|
+
const LABEL = 'field';
|
|
217
|
+
const CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
|
|
207
218
|
CONTAINER.components = [TEXT_COMPONENT, TEXT_COMPONENT_TWO];
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
219
|
+
const DATA = {
|
|
220
|
+
[ID]: {
|
|
221
|
+
one: 'other'
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
const errors = (0, _validateComponent.default)(CONTAINER, DATA, {
|
|
212
225
|
colour: 'blue'
|
|
213
226
|
});
|
|
214
227
|
expect(errors.length).toEqual(1);
|
|
215
228
|
});
|
|
216
229
|
});
|
|
217
|
-
describe('when the component is a collection',
|
|
218
|
-
it('should return an empty array when the collection has only valid items',
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
230
|
+
describe('when the component is a collection', () => {
|
|
231
|
+
it('should return an empty array when the collection has only valid items', () => {
|
|
232
|
+
const EMAIL_ID = 'email';
|
|
233
|
+
const EMAIL_LABEL = 'Email';
|
|
234
|
+
const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
|
|
235
|
+
const ID = 'collection';
|
|
236
|
+
const LABEL = 'field';
|
|
237
|
+
const COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false);
|
|
225
238
|
COLLECTION.item = [EMAIL];
|
|
226
|
-
|
|
239
|
+
const DATA = {
|
|
240
|
+
[ID]: [{
|
|
241
|
+
[EMAIL_ID]: 'alpha.bravo@homeoffice.gov.uk'
|
|
242
|
+
}, {
|
|
243
|
+
[EMAIL_ID]: 'charlie.delta@homeoffice.gov.uk'
|
|
244
|
+
}]
|
|
245
|
+
};
|
|
227
246
|
expect((0, _validateComponent.default)(COLLECTION, DATA)).toEqual([]);
|
|
228
247
|
});
|
|
229
248
|
});
|
|
230
|
-
describe('when the component has a nested component',
|
|
231
|
-
it('should return no error when the radio component contains nested components without errors',
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
249
|
+
describe('when the component has a nested component', () => {
|
|
250
|
+
it('should return no error when the radio component contains nested components without errors', () => {
|
|
251
|
+
const NESTED_ID = 'nestedId';
|
|
252
|
+
const NESTED_VALUE = 'nestedValue';
|
|
253
|
+
const FORMDATA = {
|
|
254
|
+
[NESTED_ID]: NESTED_VALUE
|
|
255
|
+
};
|
|
256
|
+
const COMPONENT = {
|
|
236
257
|
type: 'radios',
|
|
237
258
|
id: 'a',
|
|
238
259
|
data: {
|
|
@@ -248,10 +269,10 @@ describe('utils.Validate.Component', function () {
|
|
|
248
269
|
};
|
|
249
270
|
expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
|
|
250
271
|
});
|
|
251
|
-
it('should return an error when the radio component contains nested components with errors',
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
272
|
+
it('should return an error when the radio component contains nested components with errors', () => {
|
|
273
|
+
const NESTED_ID = 'nestedId';
|
|
274
|
+
const FORMDATA = {};
|
|
275
|
+
const COMPONENT = {
|
|
255
276
|
type: 'radios',
|
|
256
277
|
id: 'a',
|
|
257
278
|
data: {
|
|
@@ -270,9 +291,9 @@ describe('utils.Validate.Component', function () {
|
|
|
270
291
|
error: "Field is required"
|
|
271
292
|
}]);
|
|
272
293
|
});
|
|
273
|
-
it('should return no error when a non selected radio component contains nested components with errors',
|
|
274
|
-
|
|
275
|
-
|
|
294
|
+
it('should return no error when a non selected radio component contains nested components with errors', () => {
|
|
295
|
+
const NESTED_ID = 'nestedId';
|
|
296
|
+
const COMPONENT = {
|
|
276
297
|
type: 'radios',
|
|
277
298
|
id: 'a',
|
|
278
299
|
data: {
|
|
@@ -289,11 +310,13 @@ describe('utils.Validate.Component', function () {
|
|
|
289
310
|
};
|
|
290
311
|
expect((0, _validateComponent.default)(COMPONENT, undefined, {})).toBeUndefined();
|
|
291
312
|
});
|
|
292
|
-
it('should return no error when the checkbox component contains nested components without errors',
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
313
|
+
it('should return no error when the checkbox component contains nested components without errors', () => {
|
|
314
|
+
const NESTED_ID = 'nestedId';
|
|
315
|
+
const NESTED_VALUE = 'nestedValue';
|
|
316
|
+
const FORMDATA = {
|
|
317
|
+
[NESTED_ID]: NESTED_VALUE
|
|
318
|
+
};
|
|
319
|
+
const COMPONENT = {
|
|
297
320
|
type: 'checkboxes',
|
|
298
321
|
id: 'a',
|
|
299
322
|
data: {
|
|
@@ -309,13 +332,13 @@ describe('utils.Validate.Component', function () {
|
|
|
309
332
|
};
|
|
310
333
|
expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
|
|
311
334
|
});
|
|
312
|
-
it('should return an error when the checkbox component contains nested components with errors',
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
335
|
+
it('should return an error when the checkbox component contains nested components with errors', () => {
|
|
336
|
+
const NESTED_ID = 'nestedId';
|
|
337
|
+
const OPTION_VALUE = 'optionValue';
|
|
338
|
+
const FORMDATA = {
|
|
316
339
|
'a': [OPTION_VALUE]
|
|
317
340
|
};
|
|
318
|
-
|
|
341
|
+
const COMPONENT = {
|
|
319
342
|
type: 'checkboxes',
|
|
320
343
|
id: 'a',
|
|
321
344
|
data: {
|
|
@@ -335,14 +358,15 @@ describe('utils.Validate.Component', function () {
|
|
|
335
358
|
error: "Field is required"
|
|
336
359
|
}]);
|
|
337
360
|
});
|
|
338
|
-
it('should return no error when a non selected checkbox component contains nested components with errors',
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
'a': ['optionValueSelected']
|
|
344
|
-
|
|
345
|
-
|
|
361
|
+
it('should return no error when a non selected checkbox component contains nested components with errors', () => {
|
|
362
|
+
const NESTED_ID_NOT_SELECTED = 'nestedIdNotSelected';
|
|
363
|
+
const NESTED_ID_SELECTED = 'nestedIdSelected';
|
|
364
|
+
const NESTED_VALUE_SELECTED = 'nestedValueSelected';
|
|
365
|
+
const FORMDATA = {
|
|
366
|
+
'a': ['optionValueSelected'],
|
|
367
|
+
[NESTED_ID_SELECTED]: NESTED_VALUE_SELECTED
|
|
368
|
+
};
|
|
369
|
+
const COMPONENT = {
|
|
346
370
|
type: 'checkboxes',
|
|
347
371
|
id: 'a',
|
|
348
372
|
data: {
|
|
@@ -369,16 +393,17 @@ describe('utils.Validate.Component', function () {
|
|
|
369
393
|
};
|
|
370
394
|
expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
|
|
371
395
|
});
|
|
372
|
-
it('should return no error when all selected checkbox components contains nested components without errors',
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
396
|
+
it('should return no error when all selected checkbox components contains nested components without errors', () => {
|
|
397
|
+
const NESTED_ID_SELECTED_1 = 'nestedIdSelected1';
|
|
398
|
+
const NESTED_ID_SELECTED_2 = 'nestedIdSelected2';
|
|
399
|
+
const NESTED_VALUE_SELECTED_1 = 'nestedValueSelected1';
|
|
400
|
+
const NESTED_VALUE_SELECTED_2 = 'nestedValueSelected2';
|
|
401
|
+
const FORMDATA = {
|
|
402
|
+
'a': ['optionValueSelected1', 'optionValueSelected2'],
|
|
403
|
+
[NESTED_ID_SELECTED_1]: NESTED_VALUE_SELECTED_1,
|
|
404
|
+
[NESTED_ID_SELECTED_2]: NESTED_VALUE_SELECTED_2
|
|
405
|
+
};
|
|
406
|
+
const COMPONENT = {
|
|
382
407
|
type: 'checkboxes',
|
|
383
408
|
id: 'a',
|
|
384
409
|
data: {
|
|
@@ -7,13 +7,12 @@ exports.default = void 0;
|
|
|
7
7
|
var _elevateNestedComponents = _interopRequireDefault(require("../Component/elevateNestedComponents"));
|
|
8
8
|
var _validateComponent = _interopRequireDefault(require("./validateComponent"));
|
|
9
9
|
var _additional = _interopRequireDefault(require("./additional"));
|
|
10
|
-
function _interopRequireDefault(
|
|
11
|
-
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); }
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
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; }
|
|
13
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; }
|
|
14
|
-
function _defineProperty(
|
|
15
|
-
function _toPropertyKey(
|
|
16
|
-
function _toPrimitive(
|
|
13
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
14
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
15
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // Local imports
|
|
17
16
|
/**
|
|
18
17
|
* Validates all components within a container.
|
|
19
18
|
* @param {object} container The container to validate.
|
|
@@ -21,34 +20,32 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
21
20
|
* @param {object} formData The data at the top level of the form.
|
|
22
21
|
* @returns Errors for all components within the container.
|
|
23
22
|
*/
|
|
24
|
-
|
|
23
|
+
const validateContainer = (container, outerData, formData) => {
|
|
25
24
|
if (!container) {
|
|
26
25
|
return [];
|
|
27
26
|
}
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
const fd = formData || outerData;
|
|
28
|
+
const error = (0, _additional.default)(container, fd);
|
|
30
29
|
if (error) {
|
|
31
30
|
return {
|
|
32
31
|
id: container.id,
|
|
33
|
-
error
|
|
32
|
+
error
|
|
34
33
|
};
|
|
35
34
|
}
|
|
36
|
-
|
|
35
|
+
const errors = [];
|
|
37
36
|
if (Array.isArray(container.components)) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
fullContainerComponents.forEach(
|
|
37
|
+
const containerData = outerData && container.fieldId ? outerData[container.fieldId] : outerData;
|
|
38
|
+
const fullContainerComponents = (0, _elevateNestedComponents.default)(container.components, containerData);
|
|
39
|
+
fullContainerComponents.forEach(component => {
|
|
41
40
|
// It is possible that the container being passed in is a
|
|
42
41
|
// dummy container just for validation. In that scenario we want
|
|
43
42
|
// to ignore the full_path and just use the component's fieldId.
|
|
44
|
-
|
|
43
|
+
const fullPath = container.full_path || container.fieldId ? "".concat(container.full_path || container.fieldId, ".").concat(component.fieldId) : component.fieldId;
|
|
45
44
|
errors.push((0, _validateComponent.default)(_objectSpread(_objectSpread({}, component), {}, {
|
|
46
45
|
full_path: fullPath
|
|
47
46
|
}), containerData, fd));
|
|
48
47
|
});
|
|
49
48
|
}
|
|
50
|
-
return errors.flat(1).filter(
|
|
51
|
-
return !!e;
|
|
52
|
-
});
|
|
49
|
+
return errors.flat(1).filter(e => !!e);
|
|
53
50
|
};
|
|
54
51
|
var _default = exports.default = validateContainer;
|