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