@ukhomeoffice/cop-react-form-renderer 5.90.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.test.js +910 -1082
- package/dist/components/FormComponent/Container.js +43 -38
- 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 +1 -1
- package/dist/utils/Validate/additional/conditionallyPermittedChange.test.js +15 -15
- 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 +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 +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
|
@@ -6,23 +6,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _models = require("../../../models");
|
|
8
8
|
var _utils = _interopRequireDefault(require("../../../utils"));
|
|
9
|
-
function _interopRequireDefault(
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
13
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
14
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
15
|
-
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } // Local imports
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
// Local imports
|
|
11
|
+
|
|
16
12
|
/**
|
|
17
13
|
* @param {boolean} complete - true if task complete
|
|
18
14
|
* @param {boolean} currentPage - true if current page
|
|
19
15
|
* @param {TaskStates.TYPES|string} defaultState - default state to set task
|
|
20
16
|
* @returns {TaskStates.TYPES|string} current task state
|
|
21
17
|
*/
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
const getCurrentTaskState = function (_ref) {
|
|
19
|
+
let {
|
|
20
|
+
complete,
|
|
21
|
+
currentPage
|
|
22
|
+
} = _ref;
|
|
23
|
+
let defaultState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _models.TaskStates.TYPES.NOT_STARTED;
|
|
26
24
|
if (complete) {
|
|
27
25
|
return _models.TaskStates.TYPES.COMPLETE;
|
|
28
26
|
}
|
|
@@ -39,18 +37,18 @@ var getCurrentTaskState = function getCurrentTaskState(_ref) {
|
|
|
39
37
|
* @param {boolean} ignoreSkipped - skipped tasks don't need to have been completed
|
|
40
38
|
* @returns {boolean} true if dependent tasks complete
|
|
41
39
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return mustBeComplete.reduce(
|
|
45
|
-
|
|
46
|
-
if (ignoreSkipped &&
|
|
40
|
+
const allDependentTasksComplete = function (taskStates, mustBeComplete) {
|
|
41
|
+
let ignoreSkipped = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
42
|
+
return mustBeComplete.reduce((allComplete, taskName) => {
|
|
43
|
+
const task = taskStates[taskName];
|
|
44
|
+
if (ignoreSkipped && task?.state === _models.TaskStates.TYPES.SKIPPED) {
|
|
47
45
|
return allComplete;
|
|
48
46
|
}
|
|
49
|
-
return allComplete &&
|
|
47
|
+
return allComplete && task?.complete;
|
|
50
48
|
}, true);
|
|
51
49
|
};
|
|
52
|
-
|
|
53
|
-
|
|
50
|
+
const isPreviousTaskComplete = (tasks, taskIndex) => {
|
|
51
|
+
const lastTaskState = tasks[taskIndex - 1].state;
|
|
54
52
|
if (lastTaskState === _models.TaskStates.TYPES.COMPLETE) {
|
|
55
53
|
return true;
|
|
56
54
|
}
|
|
@@ -71,9 +69,9 @@ var isPreviousTaskComplete = function isPreviousTaskComplete(tasks, taskIndex) {
|
|
|
71
69
|
* @returns {TYPES|string} new state
|
|
72
70
|
*/
|
|
73
71
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
const updateTaskState = function (task, taskIndex, taskList, taskStates) {
|
|
73
|
+
let nonSequential = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
|
|
74
|
+
let allowFirst = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true;
|
|
77
75
|
if (taskStates[task.name]) {
|
|
78
76
|
return getCurrentTaskState(taskStates[task.name], task.state);
|
|
79
77
|
}
|
|
@@ -83,7 +81,7 @@ var updateTaskState = function updateTaskState(task, taskIndex, taskList, taskSt
|
|
|
83
81
|
}
|
|
84
82
|
return _models.TaskStates.TYPES.NOT_STARTED;
|
|
85
83
|
}
|
|
86
|
-
|
|
84
|
+
let notStarted = allowFirst;
|
|
87
85
|
if (taskIndex) {
|
|
88
86
|
notStarted = isPreviousTaskComplete(taskList, taskIndex);
|
|
89
87
|
}
|
|
@@ -102,14 +100,12 @@ var updateTaskState = function updateTaskState(task, taskIndex, taskList, taskSt
|
|
|
102
100
|
* @param {boolean} allowFirst - true if first task can be started
|
|
103
101
|
* @returns {object} - updated section
|
|
104
102
|
*/
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
});
|
|
109
|
-
clone.filter(
|
|
110
|
-
|
|
111
|
-
}).forEach(function (t, index) {
|
|
112
|
-
var task = t;
|
|
103
|
+
const updateTasks = (section, taskStates, nonSequential, allowFirst) => {
|
|
104
|
+
const clone = section.tasks.map(a => ({
|
|
105
|
+
...a
|
|
106
|
+
}));
|
|
107
|
+
clone.filter(t => t.state !== _models.TaskStates.TYPES.SKIPPED).forEach((t, index) => {
|
|
108
|
+
const task = t;
|
|
113
109
|
task.state = updateTaskState(task, index, clone, taskStates, nonSequential, allowFirst);
|
|
114
110
|
});
|
|
115
111
|
return clone;
|
|
@@ -124,9 +120,8 @@ var updateTasks = function updateTasks(section, taskStates, nonSequential, allow
|
|
|
124
120
|
* @returns {boolean} true if the last non-skipped section is complete, false
|
|
125
121
|
* if not.
|
|
126
122
|
*/
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
var lastTaskState = (_sections = sections[currentIndex - 1]) === null || _sections === void 0 || (_sections = _sections.tasks.slice(-1)[0]) === null || _sections === void 0 ? void 0 : _sections.state;
|
|
123
|
+
const isPreviousSectionComplete = (sections, currentIndex) => {
|
|
124
|
+
const lastTaskState = sections[currentIndex - 1]?.tasks.slice(-1)[0]?.state;
|
|
130
125
|
if (lastTaskState === _models.TaskStates.TYPES.COMPLETE) {
|
|
131
126
|
return true;
|
|
132
127
|
}
|
|
@@ -144,56 +139,62 @@ var isPreviousSectionComplete = function isPreviousSectionComplete(sections, cur
|
|
|
144
139
|
* @param {object} data - current form data
|
|
145
140
|
* @returns {object[]} - updated sections - note this is a clone
|
|
146
141
|
*/
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
142
|
+
const getUpdatedSectionStates = function (sections, taskStates) {
|
|
143
|
+
let nonSequential = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
144
|
+
let data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
150
145
|
// Make a clone and handle any hidden sections.
|
|
151
|
-
|
|
152
|
-
|
|
146
|
+
const clone = sections.map(section => {
|
|
147
|
+
const showWhen = section.show_when ? [section.show_when].flat() : [];
|
|
153
148
|
if (data && !_utils.default.Condition.meetsAll(showWhen, data)) {
|
|
154
|
-
return
|
|
149
|
+
return {
|
|
150
|
+
...section,
|
|
155
151
|
skipped: true,
|
|
156
|
-
tasks: section.tasks.map(
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
});
|
|
152
|
+
tasks: section.tasks.map(task => ({
|
|
153
|
+
...task,
|
|
154
|
+
state: _models.TaskStates.TYPES.SKIPPED
|
|
155
|
+
}))
|
|
156
|
+
};
|
|
162
157
|
}
|
|
163
158
|
;
|
|
164
|
-
return
|
|
159
|
+
return {
|
|
160
|
+
...section
|
|
161
|
+
};
|
|
165
162
|
});
|
|
166
163
|
|
|
167
164
|
// Now iterate through the clone and handle any hidden tasks.
|
|
168
|
-
clone.forEach(
|
|
169
|
-
|
|
170
|
-
section.tasks = section.tasks.map(
|
|
171
|
-
|
|
165
|
+
clone.forEach(s => {
|
|
166
|
+
const section = s;
|
|
167
|
+
section.tasks = section.tasks.map(task => {
|
|
168
|
+
const showWhen = task.show_when ? [task.show_when].flat() : [];
|
|
172
169
|
if (data && !_utils.default.Condition.meetsAll(showWhen, data)) {
|
|
173
|
-
return
|
|
170
|
+
return {
|
|
171
|
+
...task,
|
|
174
172
|
state: _models.TaskStates.TYPES.SKIPPED
|
|
175
|
-
}
|
|
173
|
+
};
|
|
176
174
|
}
|
|
177
|
-
return
|
|
175
|
+
return {
|
|
176
|
+
...task
|
|
177
|
+
};
|
|
178
178
|
});
|
|
179
179
|
});
|
|
180
180
|
|
|
181
181
|
// Update the taskStates to account for skipped tasks.
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
states[task.name] =
|
|
182
|
+
const states = {
|
|
183
|
+
...taskStates
|
|
184
|
+
};
|
|
185
|
+
clone.forEach(section => {
|
|
186
|
+
section.tasks.filter(t => t.state === _models.TaskStates.TYPES.SKIPPED).forEach(task => {
|
|
187
|
+
states[task.name] = {
|
|
188
|
+
...states[task.name],
|
|
188
189
|
state: _models.TaskStates.TYPES.SKIPPED
|
|
189
|
-
}
|
|
190
|
+
};
|
|
190
191
|
});
|
|
191
192
|
});
|
|
192
193
|
|
|
193
194
|
// Now figure out all the task states.
|
|
194
|
-
clone.forEach(
|
|
195
|
-
|
|
196
|
-
|
|
195
|
+
clone.forEach((s, index) => {
|
|
196
|
+
const section = s;
|
|
197
|
+
const allowFirst = index === 0 || isPreviousSectionComplete(clone, index);
|
|
197
198
|
section.tasks = updateTasks(section, states, nonSequential, allowFirst);
|
|
198
199
|
});
|
|
199
200
|
return clone;
|
|
@@ -2,17 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
var _models = require("../../../models");
|
|
4
4
|
var _getUpdatedSectionStates = _interopRequireDefault(require("./getUpdatedSectionStates"));
|
|
5
|
-
function _interopRequireDefault(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
describe('components.FormRenderer.helpers.getUpdatedSectionStates', function () {
|
|
13
|
-
describe('sequential tasks', function () {
|
|
14
|
-
it("should set all tasks to '".concat(_models.TaskStates.TYPES.CANNOT_START_YET, "' excluding the first which should be '").concat(_models.TaskStates.TYPES.NOT_STARTED, "'"), function () {
|
|
15
|
-
var SECTIONS = [{
|
|
5
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
+
// Local imports
|
|
7
|
+
|
|
8
|
+
describe('components.FormRenderer.helpers.getUpdatedSectionStates', () => {
|
|
9
|
+
describe('sequential tasks', () => {
|
|
10
|
+
it(`should set all tasks to '${_models.TaskStates.TYPES.CANNOT_START_YET}' excluding the first which should be '${_models.TaskStates.TYPES.NOT_STARTED}'`, () => {
|
|
11
|
+
const SECTIONS = [{
|
|
16
12
|
name: 'Add event details',
|
|
17
13
|
tasks: [{
|
|
18
14
|
name: 'Date, location and mode details',
|
|
@@ -34,15 +30,15 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
34
30
|
pages: ['journeyDetails']
|
|
35
31
|
}]
|
|
36
32
|
}];
|
|
37
|
-
|
|
33
|
+
const updatedSections = (0, _getUpdatedSectionStates.default)(SECTIONS, {});
|
|
38
34
|
expect(updatedSections[0].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED);
|
|
39
35
|
expect(updatedSections[0].tasks[1].state).toEqual(_models.TaskStates.TYPES.CANNOT_START_YET);
|
|
40
36
|
expect(updatedSections[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.CANNOT_START_YET);
|
|
41
37
|
expect(updatedSections[1].tasks[1].state).toEqual(_models.TaskStates.TYPES.CANNOT_START_YET);
|
|
42
38
|
expect(updatedSections[1].tasks[2].state).toEqual(_models.TaskStates.TYPES.CANNOT_START_YET);
|
|
43
39
|
});
|
|
44
|
-
it(
|
|
45
|
-
|
|
40
|
+
it(`should set tasks after any '${_models.TaskStates.TYPES.COMPLETE}' ones to '${_models.TaskStates.TYPES.NOT_STARTED}'`, () => {
|
|
41
|
+
const SECTIONS = [{
|
|
46
42
|
name: 'Add event details',
|
|
47
43
|
tasks: [{
|
|
48
44
|
name: 'Date, location and mode details',
|
|
@@ -52,17 +48,17 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
52
48
|
pages: ['officeDetails']
|
|
53
49
|
}]
|
|
54
50
|
}];
|
|
55
|
-
|
|
51
|
+
const TASKS = {
|
|
56
52
|
'Date, location and mode details': {
|
|
57
53
|
complete: true
|
|
58
54
|
}
|
|
59
55
|
};
|
|
60
|
-
|
|
56
|
+
const updatedSections = (0, _getUpdatedSectionStates.default)(SECTIONS, TASKS);
|
|
61
57
|
expect(updatedSections[0].tasks[0].state).toEqual(_models.TaskStates.TYPES.COMPLETE);
|
|
62
58
|
expect(updatedSections[0].tasks[1].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED);
|
|
63
59
|
});
|
|
64
|
-
it(
|
|
65
|
-
|
|
60
|
+
it(`should set tasks after any '${_models.TaskStates.TYPES.COMPLETE}' ones to '${_models.TaskStates.TYPES.NOT_STARTED} across different sections'`, () => {
|
|
61
|
+
const SECTIONS = [{
|
|
66
62
|
name: 'Add event details',
|
|
67
63
|
tasks: [{
|
|
68
64
|
name: 'Date, location and mode details',
|
|
@@ -81,7 +77,7 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
81
77
|
pages: ['immigrationDate']
|
|
82
78
|
}]
|
|
83
79
|
}];
|
|
84
|
-
|
|
80
|
+
const TASKS = {
|
|
85
81
|
'Date, location and mode details': {
|
|
86
82
|
complete: true
|
|
87
83
|
},
|
|
@@ -89,14 +85,14 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
89
85
|
complete: true
|
|
90
86
|
}
|
|
91
87
|
};
|
|
92
|
-
|
|
88
|
+
const updatedSections = (0, _getUpdatedSectionStates.default)(SECTIONS, TASKS);
|
|
93
89
|
expect(updatedSections[0].tasks[0].state).toEqual(_models.TaskStates.TYPES.COMPLETE);
|
|
94
90
|
expect(updatedSections[0].tasks[1].state).toEqual(_models.TaskStates.TYPES.COMPLETE);
|
|
95
91
|
expect(updatedSections[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED);
|
|
96
92
|
expect(updatedSections[1].tasks[1].state).toEqual(_models.TaskStates.TYPES.CANNOT_START_YET);
|
|
97
93
|
});
|
|
98
|
-
it(
|
|
99
|
-
|
|
94
|
+
it(`should set tasks to '${_models.TaskStates.TYPES.IN_PROGRESS}' if they have a current page but are not complete`, () => {
|
|
95
|
+
const SECTIONS = [{
|
|
100
96
|
name: 'Add event details',
|
|
101
97
|
tasks: [{
|
|
102
98
|
name: 'Date, location and mode details',
|
|
@@ -106,18 +102,18 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
106
102
|
pages: ['officeDetails']
|
|
107
103
|
}]
|
|
108
104
|
}];
|
|
109
|
-
|
|
105
|
+
const TASKS = {
|
|
110
106
|
'Date, location and mode details': {
|
|
111
107
|
complete: false,
|
|
112
108
|
currentPage: 'eventMode'
|
|
113
109
|
}
|
|
114
110
|
};
|
|
115
|
-
|
|
111
|
+
const updatedSections = (0, _getUpdatedSectionStates.default)(SECTIONS, TASKS);
|
|
116
112
|
expect(updatedSections[0].tasks[0].state).toEqual(_models.TaskStates.TYPES.IN_PROGRESS);
|
|
117
113
|
expect(updatedSections[0].tasks[1].state).toEqual(_models.TaskStates.TYPES.CANNOT_START_YET);
|
|
118
114
|
});
|
|
119
|
-
it(
|
|
120
|
-
|
|
115
|
+
it(`should set the status of any tasks in a section with a failed show_when to '${_models.TaskStates.TYPES.SKIPPED}'`, () => {
|
|
116
|
+
const SECTIONS = [{
|
|
121
117
|
name: 'Add event details',
|
|
122
118
|
tasks: [{
|
|
123
119
|
name: 'Date, location and mode details',
|
|
@@ -141,7 +137,7 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
141
137
|
pages: ['immigrationDate']
|
|
142
138
|
}]
|
|
143
139
|
}];
|
|
144
|
-
|
|
140
|
+
const TASKS = {
|
|
145
141
|
'Date, location and mode details': {
|
|
146
142
|
complete: true
|
|
147
143
|
},
|
|
@@ -149,18 +145,18 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
149
145
|
complete: true
|
|
150
146
|
}
|
|
151
147
|
};
|
|
152
|
-
|
|
148
|
+
const DATA = {
|
|
153
149
|
field: 'hideMe'
|
|
154
150
|
};
|
|
155
|
-
|
|
151
|
+
const updatedSections = (0, _getUpdatedSectionStates.default)(SECTIONS, TASKS, false, DATA);
|
|
156
152
|
expect(updatedSections[0].tasks[0].state).toEqual(_models.TaskStates.TYPES.COMPLETE);
|
|
157
153
|
expect(updatedSections[0].tasks[1].state).toEqual(_models.TaskStates.TYPES.COMPLETE);
|
|
158
154
|
expect(updatedSections[1].skipped).toEqual(true);
|
|
159
155
|
expect(updatedSections[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.SKIPPED);
|
|
160
156
|
expect(updatedSections[1].tasks[1].state).toEqual(_models.TaskStates.TYPES.SKIPPED);
|
|
161
157
|
});
|
|
162
|
-
it(
|
|
163
|
-
|
|
158
|
+
it(`should set the status of any tasks with a failed show_when to '${_models.TaskStates.TYPES.SKIPPED}'`, () => {
|
|
159
|
+
const SECTIONS = [{
|
|
164
160
|
name: 'Add event details',
|
|
165
161
|
tasks: [{
|
|
166
162
|
name: 'Date, location and mode details',
|
|
@@ -180,15 +176,15 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
180
176
|
}
|
|
181
177
|
}]
|
|
182
178
|
}];
|
|
183
|
-
|
|
179
|
+
const DATA = {
|
|
184
180
|
field: 'hideMe'
|
|
185
181
|
};
|
|
186
|
-
|
|
182
|
+
const updatedSections = (0, _getUpdatedSectionStates.default)(SECTIONS, {}, false, DATA);
|
|
187
183
|
expect(updatedSections[0].tasks[0].state).toEqual(_models.TaskStates.TYPES.SKIPPED);
|
|
188
184
|
expect(updatedSections[0].tasks[1].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED);
|
|
189
185
|
});
|
|
190
|
-
it(
|
|
191
|
-
|
|
186
|
+
it(`should set the status of any tasks to '${_models.TaskStates.TYPES.NOT_STARTED}' if previous tasks within a section have been skipped`, () => {
|
|
187
|
+
const SECTIONS = [{
|
|
192
188
|
name: 'Add event details',
|
|
193
189
|
tasks: [{
|
|
194
190
|
name: 'task one',
|
|
@@ -224,22 +220,22 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
224
220
|
}
|
|
225
221
|
}]
|
|
226
222
|
}];
|
|
227
|
-
|
|
223
|
+
const DATA = {
|
|
228
224
|
field: 'hideMe'
|
|
229
225
|
};
|
|
230
|
-
|
|
226
|
+
const TASKS = {
|
|
231
227
|
'task one': {
|
|
232
228
|
complete: true
|
|
233
229
|
}
|
|
234
230
|
};
|
|
235
|
-
|
|
231
|
+
const updatedSections = (0, _getUpdatedSectionStates.default)(SECTIONS, TASKS, false, DATA);
|
|
236
232
|
expect(updatedSections[0].tasks[0].state).toEqual(_models.TaskStates.TYPES.COMPLETE);
|
|
237
233
|
expect(updatedSections[0].tasks[1].state).toEqual(_models.TaskStates.TYPES.SKIPPED);
|
|
238
234
|
expect(updatedSections[0].tasks[2].state).toEqual(_models.TaskStates.TYPES.SKIPPED);
|
|
239
235
|
expect(updatedSections[0].tasks[3].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED);
|
|
240
236
|
});
|
|
241
|
-
it(
|
|
242
|
-
|
|
237
|
+
it(`should set the status of any tasks to '${_models.TaskStates.TYPES.NOT_STARTED}' if previous tasks within the last section have been skipped`, () => {
|
|
238
|
+
const SECTIONS = [{
|
|
243
239
|
name: 'Add event details',
|
|
244
240
|
tasks: [{
|
|
245
241
|
name: 'task one',
|
|
@@ -265,22 +261,22 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
265
261
|
pages: ['eventDate', 'eventMode']
|
|
266
262
|
}]
|
|
267
263
|
}];
|
|
268
|
-
|
|
264
|
+
const DATA = {
|
|
269
265
|
field: 'showMe'
|
|
270
266
|
};
|
|
271
|
-
|
|
267
|
+
const TASKS = {
|
|
272
268
|
'task one': {
|
|
273
269
|
complete: true
|
|
274
270
|
}
|
|
275
271
|
};
|
|
276
|
-
|
|
272
|
+
const updatedSections = (0, _getUpdatedSectionStates.default)(SECTIONS, TASKS, false, DATA);
|
|
277
273
|
expect(updatedSections[0].tasks[0].state).toEqual(_models.TaskStates.TYPES.COMPLETE);
|
|
278
274
|
expect(updatedSections[0].tasks[1].state).toEqual(_models.TaskStates.TYPES.SKIPPED);
|
|
279
275
|
expect(updatedSections[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED);
|
|
280
276
|
});
|
|
281
277
|
});
|
|
282
|
-
it(
|
|
283
|
-
|
|
278
|
+
it(`should set the status of any tasks to '${_models.TaskStates.TYPES.NOT_STARTED}' if previous tasks have been skipped`, () => {
|
|
279
|
+
const SECTIONS = [{
|
|
284
280
|
name: 'Add event details',
|
|
285
281
|
show_when: {
|
|
286
282
|
field: 'field',
|
|
@@ -304,20 +300,20 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
304
300
|
pages: ['immigrationDate']
|
|
305
301
|
}]
|
|
306
302
|
}];
|
|
307
|
-
|
|
308
|
-
|
|
303
|
+
const TASKS = {};
|
|
304
|
+
const DATA = {
|
|
309
305
|
field: 'hideMe'
|
|
310
306
|
};
|
|
311
|
-
|
|
307
|
+
const updatedSections = (0, _getUpdatedSectionStates.default)(SECTIONS, TASKS, false, DATA);
|
|
312
308
|
expect(updatedSections[0].skipped).toEqual(true);
|
|
313
309
|
expect(updatedSections[0].tasks[0].state).toEqual(_models.TaskStates.TYPES.SKIPPED);
|
|
314
310
|
expect(updatedSections[0].tasks[1].state).toEqual(_models.TaskStates.TYPES.SKIPPED);
|
|
315
311
|
expect(updatedSections[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED);
|
|
316
312
|
expect(updatedSections[1].tasks[1].state).toEqual(_models.TaskStates.TYPES.CANNOT_START_YET);
|
|
317
313
|
});
|
|
318
|
-
describe('non-sequential tasks',
|
|
319
|
-
|
|
320
|
-
|
|
314
|
+
describe('non-sequential tasks', () => {
|
|
315
|
+
const NON_SEQUENTIAL = true;
|
|
316
|
+
const SECTIONS = [{
|
|
321
317
|
name: 'First',
|
|
322
318
|
tasks: [{
|
|
323
319
|
name: 'Alpha'
|
|
@@ -336,31 +332,29 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
336
332
|
name: 'Delta'
|
|
337
333
|
}]
|
|
338
334
|
}];
|
|
339
|
-
it(
|
|
340
|
-
|
|
335
|
+
it(`should set all states to '${_models.TaskStates.TYPES.NOT_STARTED}', except any that depend on others`, () => {
|
|
336
|
+
const RESULT = (0, _getUpdatedSectionStates.default)(SECTIONS, {}, NON_SEQUENTIAL);
|
|
341
337
|
expect(RESULT[0].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED); // Alpha
|
|
342
338
|
expect(RESULT[0].tasks[1].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED); // Bravo
|
|
343
339
|
expect(RESULT[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.CANNOT_START_YET); // Charlie
|
|
344
340
|
expect(RESULT[2].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED); // Delta
|
|
345
341
|
});
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
var ALPHA_COMPLETE = (0, _getUpdatedSectionStates.default)(SECTIONS, {
|
|
342
|
+
it('should keep dependent state unable to start if any dependencies are not complete', () => {
|
|
343
|
+
const ALPHA_COMPLETE = (0, _getUpdatedSectionStates.default)(SECTIONS, {
|
|
349
344
|
Alpha: {
|
|
350
345
|
complete: true
|
|
351
346
|
}
|
|
352
347
|
}, NON_SEQUENTIAL);
|
|
353
348
|
expect(ALPHA_COMPLETE[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.CANNOT_START_YET); // Charlie
|
|
354
|
-
|
|
349
|
+
const BRAVO_COMPLETE = (0, _getUpdatedSectionStates.default)(SECTIONS, {
|
|
355
350
|
Bravo: {
|
|
356
351
|
complete: true
|
|
357
352
|
}
|
|
358
353
|
}, NON_SEQUENTIAL);
|
|
359
354
|
expect(BRAVO_COMPLETE[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.CANNOT_START_YET); // Charlie
|
|
360
355
|
});
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
var TASKS = {
|
|
356
|
+
it('should allow dependent state to start if all dependencies are complete', () => {
|
|
357
|
+
const TASKS = {
|
|
364
358
|
'Alpha': {
|
|
365
359
|
complete: true
|
|
366
360
|
},
|
|
@@ -369,13 +363,12 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
369
363
|
},
|
|
370
364
|
'Delta': {}
|
|
371
365
|
};
|
|
372
|
-
|
|
366
|
+
const RESULT = (0, _getUpdatedSectionStates.default)(SECTIONS, TASKS, NON_SEQUENTIAL);
|
|
373
367
|
expect(RESULT[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED); // Charlie
|
|
374
368
|
expect(RESULT[2].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED); // Delta
|
|
375
369
|
});
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
var TASKS = {
|
|
370
|
+
it('should not allow dependent state to start if incomplete dependencies are skipped, but skipped are not ignored', () => {
|
|
371
|
+
const TASKS = {
|
|
379
372
|
'Alpha': {
|
|
380
373
|
complete: true
|
|
381
374
|
},
|
|
@@ -385,17 +378,18 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
385
378
|
},
|
|
386
379
|
'Delta': {}
|
|
387
380
|
};
|
|
388
|
-
|
|
381
|
+
const RESULT = (0, _getUpdatedSectionStates.default)(SECTIONS, TASKS, NON_SEQUENTIAL);
|
|
389
382
|
expect(RESULT[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.CANNOT_START_YET); // Charlie
|
|
390
383
|
});
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
tasks: [
|
|
384
|
+
it('should allow dependent state to start if incomplete dependencies are skipped, and skipped are ignored', () => {
|
|
385
|
+
const SKIPPABLE_SECTIONS = [SECTIONS[0], {
|
|
386
|
+
...SECTIONS[1],
|
|
387
|
+
tasks: [{
|
|
388
|
+
...SECTIONS[1].tasks[0],
|
|
395
389
|
ignoreSkipped: true
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
|
|
390
|
+
}]
|
|
391
|
+
}, SECTIONS[2]];
|
|
392
|
+
const TASKS = {
|
|
399
393
|
'Alpha': {
|
|
400
394
|
complete: true
|
|
401
395
|
},
|
|
@@ -405,12 +399,11 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
405
399
|
},
|
|
406
400
|
'Delta': {}
|
|
407
401
|
};
|
|
408
|
-
|
|
402
|
+
const RESULT = (0, _getUpdatedSectionStates.default)(SKIPPABLE_SECTIONS, TASKS, NON_SEQUENTIAL);
|
|
409
403
|
expect(RESULT[1].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED); // Charlie
|
|
410
404
|
});
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
var SHOW_WHEN_SECTIONS = [{
|
|
405
|
+
it('should automatically skip tasks that are not shown', () => {
|
|
406
|
+
const SHOW_WHEN_SECTIONS = [{
|
|
414
407
|
name: 'First',
|
|
415
408
|
tasks: [{
|
|
416
409
|
name: 'Alpha'
|
|
@@ -438,7 +431,7 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
438
431
|
ignoreSkipped: true
|
|
439
432
|
}]
|
|
440
433
|
}];
|
|
441
|
-
|
|
434
|
+
const TASKS = {
|
|
442
435
|
'Alpha': {
|
|
443
436
|
complete: true
|
|
444
437
|
},
|
|
@@ -447,11 +440,11 @@ describe('components.FormRenderer.helpers.getUpdatedSectionStates', function ()
|
|
|
447
440
|
},
|
|
448
441
|
'Delta': {}
|
|
449
442
|
};
|
|
450
|
-
|
|
443
|
+
const DATA = {
|
|
451
444
|
echo: 'foxtrot',
|
|
452
445
|
golf: 'hotel'
|
|
453
446
|
};
|
|
454
|
-
|
|
447
|
+
const RESULT = (0, _getUpdatedSectionStates.default)(SHOW_WHEN_SECTIONS, TASKS, NON_SEQUENTIAL, DATA);
|
|
455
448
|
expect(RESULT[2].tasks[0].state).toEqual(_models.TaskStates.TYPES.NOT_STARTED); // Charlie
|
|
456
449
|
});
|
|
457
450
|
});
|
|
@@ -13,10 +13,10 @@ var _getNextPageId = _interopRequireDefault(require("./getNextPageId"));
|
|
|
13
13
|
var _getPage = _interopRequireDefault(require("./getPage"));
|
|
14
14
|
var _getSubmissionStatus = _interopRequireDefault(require("./getSubmissionStatus"));
|
|
15
15
|
var _getUpdatedSectionStates = _interopRequireDefault(require("./getUpdatedSectionStates"));
|
|
16
|
-
function _interopRequireDefault(
|
|
16
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
17
|
// Local imports
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
const helpers = {
|
|
20
20
|
canActionProceed: _canActionProceed.default,
|
|
21
21
|
canCYASubmit: _canCYASubmit.default,
|
|
22
22
|
cleanHiddenNestedData: _cleanHiddenNestedData.default,
|
|
@@ -5,5 +5,5 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _FormRenderer = _interopRequireDefault(require("./FormRenderer"));
|
|
8
|
-
function _interopRequireDefault(
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
9
|
var _default = exports.default = _FormRenderer.default;
|