@ukhomeoffice/cop-react-form-renderer 6.5.1-peter → 6.7.0-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CheckYourAnswers/Answer.js +12 -12
- package/dist/components/CheckYourAnswers/Answer.test.js +92 -127
- package/dist/components/CheckYourAnswers/CheckYourAnswers.js +101 -131
- package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +463 -769
- package/dist/components/CollectionPage/CollectionPage.js +73 -63
- package/dist/components/CollectionPage/CollectionPage.test.js +316 -366
- package/dist/components/CollectionSummary/BannerStrip.js +13 -13
- package/dist/components/CollectionSummary/BannerStrip.test.js +80 -76
- package/dist/components/CollectionSummary/CollectionSummary.js +97 -107
- package/dist/components/CollectionSummary/CollectionSummary.test.js +152 -142
- package/dist/components/CollectionSummary/Confirmation.js +14 -12
- package/dist/components/CollectionSummary/Confirmation.test.js +68 -63
- package/dist/components/CollectionSummary/RenderListView.js +45 -51
- package/dist/components/CollectionSummary/RenderListView.test.js +78 -77
- package/dist/components/CollectionSummary/SummaryCard.js +104 -135
- package/dist/components/CollectionSummary/SummaryCard.test.js +930 -962
- package/dist/components/CollectionSummary/SummaryCardDetails.js +72 -71
- package/dist/components/CollectionSummary/SummaryCardDetails.test.js +128 -135
- package/dist/components/CollectionSummary/SummaryCardValidationContext.js +30 -35
- package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +62 -74
- package/dist/components/FormComponent/Collection.js +74 -108
- package/dist/components/FormComponent/Collection.test.js +909 -1081
- package/dist/components/FormComponent/Container.js +40 -38
- package/dist/components/FormComponent/Container.test.js +314 -345
- package/dist/components/FormComponent/FormComponent.js +69 -72
- package/dist/components/FormComponent/FormComponent.test.js +353 -414
- 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 +7 -7
- package/dist/components/FormComponent/helpers/getComponentError.js +3 -5
- package/dist/components/FormComponent/helpers/getComponentError.test.js +14 -14
- package/dist/components/FormComponent/helpers/getComponentFieldSet.js +3 -4
- package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +6 -6
- package/dist/components/FormComponent/helpers/index.js +4 -4
- package/dist/components/FormPage/FormPage.js +65 -80
- package/dist/components/FormPage/FormPage.test.js +127 -163
- package/dist/components/FormRenderer/FormRenderer.js +143 -179
- package/dist/components/FormRenderer/FormRenderer.test.js +730 -1115
- package/dist/components/FormRenderer/handlers/cyaAction.js +2 -2
- package/dist/components/FormRenderer/handlers/getPageId.js +1 -3
- package/dist/components/FormRenderer/handlers/getPageId.test.js +14 -14
- package/dist/components/FormRenderer/handlers/handlers.test.js +32 -32
- package/dist/components/FormRenderer/handlers/index.js +1 -1
- package/dist/components/FormRenderer/handlers/navigate.js +3 -3
- package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
- package/dist/components/FormRenderer/helpers/canActionProceed.test.js +15 -15
- package/dist/components/FormRenderer/helpers/canCYASubmit.js +1 -3
- package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +16 -20
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +17 -22
- package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +16 -16
- package/dist/components/FormRenderer/helpers/getCYA.js +3 -5
- package/dist/components/FormRenderer/helpers/getCYA.test.js +11 -11
- package/dist/components/FormRenderer/helpers/getFormState.js +5 -7
- package/dist/components/FormRenderer/helpers/getFormState.test.js +10 -10
- package/dist/components/FormRenderer/helpers/getNextPageId.js +13 -24
- package/dist/components/FormRenderer/helpers/getNextPageId.test.js +67 -67
- package/dist/components/FormRenderer/helpers/getPage.js +2 -4
- package/dist/components/FormRenderer/helpers/getPage.test.js +11 -11
- package/dist/components/FormRenderer/helpers/getRelevantPages.js +7 -9
- package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +14 -14
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +5 -5
- package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +103 -97
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +62 -60
- package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +71 -78
- package/dist/components/FormRenderer/helpers/index.js +2 -4
- package/dist/components/FormRenderer/onCYAAction.js +59 -51
- package/dist/components/FormRenderer/onCYAAction.test.js +164 -152
- package/dist/components/FormRenderer/onPageAction.js +44 -47
- package/dist/components/FormRenderer/onPageAction.test.js +223 -213
- package/dist/components/FormRenderer/onTaskAction.js +9 -13
- package/dist/components/FormRenderer/onTaskAction.test.js +93 -88
- package/dist/components/PageActions/ActionButton.js +12 -15
- package/dist/components/PageActions/ActionButton.test.js +56 -78
- package/dist/components/PageActions/PageActions.js +10 -10
- package/dist/components/PageActions/PageActions.test.js +86 -115
- package/dist/components/SummaryList/GroupAction.js +9 -17
- package/dist/components/SummaryList/GroupAction.test.js +37 -33
- package/dist/components/SummaryList/RowAction.js +11 -16
- package/dist/components/SummaryList/RowAction.test.js +37 -33
- package/dist/components/SummaryList/SummaryList.js +21 -26
- package/dist/components/SummaryList/SummaryList.test.js +143 -166
- package/dist/components/SummaryList/SummaryListHeadingRow.js +6 -4
- package/dist/components/SummaryList/SummaryListRow.js +6 -4
- package/dist/components/SummaryList/SummaryListTitleRow.js +5 -3
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +3 -5
- package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +22 -22
- package/dist/components/SummaryList/helpers/getRowActionAttributes.js +3 -5
- package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +22 -22
- package/dist/components/SummaryList/helpers/index.js +1 -1
- package/dist/components/TaskList/Task.js +19 -29
- package/dist/components/TaskList/Task.test.js +83 -76
- package/dist/components/TaskList/TaskList.js +45 -71
- package/dist/components/TaskList/TaskList.test.js +113 -111
- package/dist/components/TaskList/TaskState.js +7 -5
- package/dist/components/TaskList/TaskState.test.js +52 -45
- package/dist/components/index.js +7 -7
- package/dist/context/HooksContext/HooksContext.js +57 -80
- package/dist/context/HooksContext/HooksContext.test.js +26 -35
- package/dist/context/HooksContext/index.js +3 -4
- package/dist/context/ValidationContext/ValidationContext.js +43 -94
- package/dist/context/ValidationContext/ValidationContext.test.js +56 -68
- package/dist/context/ValidationContext/index.js +3 -4
- package/dist/context/index.js +2 -2
- package/dist/hooks/index.js +9 -10
- package/dist/hooks/useAxios.js +14 -40
- package/dist/hooks/useGetRequest.js +61 -97
- package/dist/hooks/useHooks.js +1 -3
- package/dist/hooks/useRefData.js +26 -39
- package/dist/hooks/useValidation.js +1 -3
- package/dist/index.js +13 -14
- 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 +9 -9
- package/dist/setupTests.js +30 -31
- package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
- package/dist/utils/CheckYourAnswers/getCYAAction.test.js +52 -54
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +15 -25
- package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +33 -35
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +17 -31
- package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +42 -44
- package/dist/utils/CheckYourAnswers/getCYARow.js +6 -6
- package/dist/utils/CheckYourAnswers/getCYARow.test.js +86 -86
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +18 -24
- package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +15 -16
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +33 -36
- package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +58 -61
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +83 -89
- package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +164 -138
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +25 -20
- package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +103 -97
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +13 -18
- package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +70 -76
- package/dist/utils/CheckYourAnswers/getComponentRowForCYA.js +11 -11
- package/dist/utils/CheckYourAnswers/getComponentRowForCYA.test.js +7 -7
- package/dist/utils/CheckYourAnswers/index.js +1 -1
- package/dist/utils/CheckYourAnswers/showComponentCYA.js +4 -4
- package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +25 -25
- package/dist/utils/CollectionPage/addCollectionPageEntry.js +2 -2
- package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +5 -5
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +2 -2
- package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +17 -18
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +18 -20
- package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +55 -26
- package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
- package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +10 -10
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +7 -11
- package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +22 -22
- package/dist/utils/CollectionPage/getCollectionPageData.js +8 -12
- package/dist/utils/CollectionPage/getCollectionPageData.test.js +19 -19
- package/dist/utils/CollectionPage/getErrorsForCollection.js +24 -24
- package/dist/utils/CollectionPage/getErrorsForCollection.test.js +20 -22
- package/dist/utils/CollectionPage/getQuickEditPage.js +36 -28
- package/dist/utils/CollectionPage/getQuickEditPage.test.js +26 -45
- package/dist/utils/CollectionPage/index.js +1 -1
- package/dist/utils/CollectionPage/mergeCollectionPages.js +31 -35
- package/dist/utils/CollectionPage/mergeCollectionPages.test.js +20 -20
- package/dist/utils/CollectionPage/removeCollectionPageEntry.js +4 -6
- package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +10 -10
- package/dist/utils/CollectionPage/setCollectionPageData.js +10 -16
- package/dist/utils/CollectionPage/setCollectionPageData.test.js +24 -24
- package/dist/utils/Component/addShowWhen.js +4 -8
- package/dist/utils/Component/addShowWhen.test.js +37 -37
- package/dist/utils/Component/applyToComponentTree.js +18 -18
- package/dist/utils/Component/applyToComponentTree.test.js +27 -32
- package/dist/utils/Component/cleanAttributes.js +10 -13
- package/dist/utils/Component/cleanAttributes.test.js +17 -18
- package/dist/utils/Component/elevateNestedComponents.js +5 -5
- package/dist/utils/Component/elevateNestedComponents.test.js +30 -30
- package/dist/utils/Component/getComponent.js +88 -94
- package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +18 -17
- package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +46 -59
- package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +39 -48
- package/dist/utils/Component/getComponentTests/getComponent.date.test.js +23 -33
- package/dist/utils/Component/getComponentTests/getComponent.details.test.js +20 -18
- package/dist/utils/Component/getComponentTests/getComponent.email.test.js +17 -22
- package/dist/utils/Component/getComponentTests/getComponent.file.test.js +20 -25
- package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +10 -9
- package/dist/utils/Component/getComponentTests/getComponent.html.test.js +17 -15
- package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +9 -8
- package/dist/utils/Component/getComponentTests/getComponent.list.test.js +17 -15
- package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +22 -26
- package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +155 -175
- package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +17 -15
- package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +17 -22
- package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +57 -72
- package/dist/utils/Component/getComponentTests/getComponent.select.test.js +17 -22
- package/dist/utils/Component/getComponentTests/getComponent.text.test.js +17 -22
- package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +31 -38
- package/dist/utils/Component/getComponentTests/getComponent.time.test.js +20 -29
- package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +2 -2
- package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +9 -8
- package/dist/utils/Component/getDefaultValue.js +6 -8
- package/dist/utils/Component/getDefaultValue.test.js +12 -12
- package/dist/utils/Component/getDefaultValueFromConfig.js +22 -21
- package/dist/utils/Component/getDefaultValueFromConfig.test.js +31 -31
- package/dist/utils/Component/index.js +1 -1
- package/dist/utils/Component/isEditable.js +2 -4
- package/dist/utils/Component/isEditable.test.js +14 -15
- package/dist/utils/Component/optionIsSelected.js +1 -1
- package/dist/utils/Component/optionIsSelected.test.js +9 -9
- package/dist/utils/Component/setupContainerComponentsPath.js +27 -29
- package/dist/utils/Component/setupContainerComponentsPath.test.js +11 -11
- package/dist/utils/Component/showComponent.js +1 -1
- package/dist/utils/Component/showComponent.test.js +28 -28
- package/dist/utils/Component/wrapInFormGroup.js +2 -2
- package/dist/utils/Condition/index.js +1 -1
- package/dist/utils/Condition/meetsAllConditions.js +8 -8
- package/dist/utils/Condition/meetsAllConditions.test.js +20 -20
- package/dist/utils/Condition/meetsCondition.js +16 -25
- package/dist/utils/Condition/meetsCondition.test.js +402 -402
- package/dist/utils/Condition/meetsOneCondition.js +5 -5
- package/dist/utils/Condition/meetsOneCondition.test.js +16 -16
- package/dist/utils/Condition/setupConditions.js +13 -18
- package/dist/utils/Condition/setupConditions.test.js +7 -7
- package/dist/utils/Container/getEditableComponents.js +3 -5
- package/dist/utils/Container/getEditableComponents.test.js +43 -45
- package/dist/utils/Container/index.js +1 -1
- package/dist/utils/Container/setupNesting.js +16 -20
- package/dist/utils/Container/setupNesting.test.js +27 -30
- package/dist/utils/Container/showContainer.js +3 -7
- package/dist/utils/Container/showContainer.test.js +30 -30
- package/dist/utils/Data/applyFormula.js +38 -48
- package/dist/utils/Data/applyFormula.test.js +20 -20
- package/dist/utils/Data/getAutocompleteSource.js +18 -26
- package/dist/utils/Data/getAutocompleteSource.test.js +80 -86
- package/dist/utils/Data/getDataPath.js +18 -28
- package/dist/utils/Data/getDataPath.test.js +12 -12
- package/dist/utils/Data/getOptions.js +24 -30
- package/dist/utils/Data/getOptions.test.js +27 -27
- package/dist/utils/Data/getSourceData.js +6 -19
- package/dist/utils/Data/getSourceData.test.js +84 -80
- package/dist/utils/Data/index.js +1 -1
- package/dist/utils/Data/nestInRefdataOptions.js +9 -16
- package/dist/utils/Data/nestInRefdataOptions.test.js +16 -16
- package/dist/utils/Data/refDataToOptions.js +10 -13
- package/dist/utils/Data/refDataToOptions.test.js +19 -19
- package/dist/utils/Data/setDataItem.js +7 -8
- package/dist/utils/Data/setDataItem.test.js +37 -37
- package/dist/utils/Data/setupFormData.js +13 -21
- package/dist/utils/Data/setupFormData.test.js +51 -50
- package/dist/utils/Data/setupRefDataUrlForComponent.js +20 -26
- package/dist/utils/Data/setupRefDataUrlForComponent.test.js +24 -24
- package/dist/utils/FormPage/applyConditionalProperties.js +5 -9
- package/dist/utils/FormPage/applyConditionalProperties.test.js +15 -18
- package/dist/utils/FormPage/getConditionalText.js +3 -3
- package/dist/utils/FormPage/getConditionalText.test.js +29 -29
- package/dist/utils/FormPage/getFormPage.js +15 -16
- package/dist/utils/FormPage/getFormPage.test.js +47 -46
- package/dist/utils/FormPage/getFormPages.js +7 -12
- package/dist/utils/FormPage/getFormPages.test.js +20 -23
- package/dist/utils/FormPage/getPageActions.js +9 -15
- package/dist/utils/FormPage/getPageActions.test.js +32 -32
- package/dist/utils/FormPage/getParagraphFromText.js +5 -7
- package/dist/utils/FormPage/getParagraphFromText.test.js +6 -6
- package/dist/utils/FormPage/index.js +2 -4
- package/dist/utils/FormPage/showFormPage.js +3 -7
- package/dist/utils/FormPage/showFormPage.test.js +32 -32
- package/dist/utils/FormPage/showFormPageCYA.js +1 -1
- package/dist/utils/FormPage/showFormPageCYA.test.js +8 -8
- package/dist/utils/FormPage/useComponent.js +21 -28
- package/dist/utils/FormPage/useComponent.test.js +77 -79
- package/dist/utils/Format/formatData.js +1 -1
- package/dist/utils/Format/formatData.test.js +18 -18
- package/dist/utils/Format/formatDataForComponent.js +5 -6
- package/dist/utils/Format/formatDataForComponent.test.js +50 -78
- package/dist/utils/Format/formatDataForForm.js +6 -8
- package/dist/utils/Format/formatDataForForm.test.js +13 -16
- package/dist/utils/Format/formatDataForPage.js +4 -5
- package/dist/utils/Format/formatDataForPage.test.js +20 -25
- package/dist/utils/Format/index.js +1 -1
- package/dist/utils/Hub/getFormHub.js +1 -1
- package/dist/utils/Hub/getFormHub.test.js +28 -31
- package/dist/utils/Hub/index.js +1 -1
- package/dist/utils/Meta/constants.js +2 -2
- package/dist/utils/Meta/documents/getDocuments.js +1 -1
- package/dist/utils/Meta/documents/getDocuments.test.js +24 -16
- package/dist/utils/Meta/documents/index.js +1 -1
- package/dist/utils/Meta/documents/setDocumentsForField.js +14 -16
- package/dist/utils/Meta/documents/setDocumentsForField.test.js +68 -34
- package/dist/utils/Meta/index.js +1 -1
- package/dist/utils/Operate/checkValueIsTruthy.js +2 -2
- package/dist/utils/Operate/checkValueIsTruthy.test.js +16 -16
- package/dist/utils/Operate/getFirstOf.js +5 -5
- package/dist/utils/Operate/getFirstOf.test.js +31 -31
- package/dist/utils/Operate/getIndexOfMatchingValueIn.js +10 -10
- package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +46 -52
- package/dist/utils/Operate/index.js +1 -1
- package/dist/utils/Operate/persistValueInFormData.js +3 -3
- package/dist/utils/Operate/persistValueInFormData.test.js +22 -20
- package/dist/utils/Operate/runPageOperations.js +7 -7
- package/dist/utils/Operate/runPageOperations.test.js +35 -36
- package/dist/utils/Operate/setValueInFormData.js +2 -2
- package/dist/utils/Operate/setValueInFormData.test.js +16 -16
- package/dist/utils/Operate/shouldRun.js +6 -6
- package/dist/utils/Operate/shouldRun.test.js +21 -27
- package/dist/utils/Validate/additional/conditionallyRequired.js +4 -4
- package/dist/utils/Validate/additional/conditionallyRequired.test.js +18 -18
- package/dist/utils/Validate/additional/index.js +6 -6
- package/dist/utils/Validate/additional/index.test.js +12 -12
- package/dist/utils/Validate/additional/mustBeAfter.js +2 -2
- package/dist/utils/Validate/additional/mustBeAfter.test.js +40 -40
- package/dist/utils/Validate/additional/mustBeBefore.js +2 -2
- package/dist/utils/Validate/additional/mustBeBefore.test.js +28 -28
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +7 -11
- package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +37 -41
- package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
- package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +18 -18
- package/dist/utils/Validate/additional/mustBeInTheFuture.js +2 -2
- package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +12 -12
- package/dist/utils/Validate/additional/mustBeInThePast.js +3 -3
- package/dist/utils/Validate/additional/mustBeInThePast.test.js +12 -12
- package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
- package/dist/utils/Validate/additional/mustBeLessThan.test.js +17 -17
- package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
- package/dist/utils/Validate/additional/mustBeLongerThan.test.js +16 -16
- package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
- package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +20 -20
- package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
- package/dist/utils/Validate/additional/mustBeShorterThan.test.js +16 -16
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +8 -4
- package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +64 -32
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +2 -2
- package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +14 -16
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
- package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +12 -12
- package/dist/utils/Validate/additional/mustNotContainSql.js +3 -4
- package/dist/utils/Validate/additional/mustNotContainSql.test.js +14 -14
- package/dist/utils/Validate/additional/mustSelectOnlyOne.js +2 -2
- package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +28 -26
- package/dist/utils/Validate/additional/utils.js +9 -22
- package/dist/utils/Validate/index.js +1 -1
- package/dist/utils/Validate/validateCollection.js +19 -25
- package/dist/utils/Validate/validateCollection.test.js +74 -66
- package/dist/utils/Validate/validateComponent.js +17 -15
- package/dist/utils/Validate/validateComponent.test.js +167 -146
- package/dist/utils/Validate/validateContainer.js +15 -20
- package/dist/utils/Validate/validateContainer.test.js +58 -52
- package/dist/utils/Validate/validateDate.js +15 -21
- package/dist/utils/Validate/validateDate.test.js +31 -32
- package/dist/utils/Validate/validateEmail.js +6 -8
- package/dist/utils/Validate/validateEmail.test.js +25 -25
- package/dist/utils/Validate/validateMultifile.js +5 -7
- package/dist/utils/Validate/validateMultifile.test.js +17 -18
- package/dist/utils/Validate/validatePage.js +19 -22
- package/dist/utils/Validate/validatePage.test.js +215 -203
- package/dist/utils/Validate/validateRegex.js +3 -5
- package/dist/utils/Validate/validateRegex.test.js +14 -14
- package/dist/utils/Validate/validateRequired.js +4 -6
- package/dist/utils/Validate/validateRequired.test.js +18 -18
- package/dist/utils/Validate/validateTextArea.js +4 -6
- package/dist/utils/Validate/validateTextArea.test.js +20 -20
- package/dist/utils/Validate/validateTime.js +11 -18
- package/dist/utils/Validate/validateTime.test.js +16 -16
- package/dist/utils/index.js +7 -9
- package/package.json +2 -2
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-data.json +0 -4
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-form.json +0 -61
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-after.json +0 -429
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-before.json +0 -449
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-airpax-form.json +0 -15219
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab-2-data-after.json +0 -516
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab-2-data-before.json +0 -593
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-eab2-form.json +0 -15219
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-data-after.json +0 -84
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-data-before.json +0 -98
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/cop-mandec-form.json +0 -9158
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collection-data-removed.json +0 -4
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collections.json +0 -8
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components-removed.json +0 -3
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components.json +0 -5
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-entire-collection-removed.json +0 -3
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-component-removed.json +0 -10
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-components.json +0 -11
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-for-nested-components.json +0 -96
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections-delete-entire.json +0 -47
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections.json +0 -46
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-components.json +0 -48
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/test.json +0 -1605
- package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/test2.json +0 -205
- package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +0 -206
- package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +0 -143
- package/dist/components/FormRenderer/helpers/deleteNodeByPath.js +0 -26
- package/dist/components/FormRenderer/helpers/deleteNodeByPath.test.js +0 -56
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
4
3
|
var _react = require("@testing-library/react");
|
|
5
4
|
var _axios = _interopRequireDefault(require("axios"));
|
|
6
5
|
var _axiosMockAdapter = _interopRequireDefault(require("axios-mock-adapter"));
|
|
@@ -18,28 +17,14 @@ var _userProfileData = _interopRequireDefault(require("../../json/userProfile.da
|
|
|
18
17
|
var _userProfile = _interopRequireDefault(require("../../json/userProfile.json"));
|
|
19
18
|
var _taskList = _interopRequireDefault(require("../../json/taskList.json"));
|
|
20
19
|
var _firstForm = _interopRequireDefault(require("../../json/firstForm.json"));
|
|
21
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function
|
|
22
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" !=
|
|
20
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
21
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
23
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
|
-
function
|
|
25
|
-
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; }
|
|
26
|
-
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; }
|
|
27
|
-
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
28
|
-
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); }
|
|
29
|
-
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, catch: function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
30
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
31
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
32
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
33
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
34
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
35
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
36
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
37
|
-
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
38
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } // Global imports
|
|
23
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } // Global imports
|
|
39
24
|
// Local imports
|
|
40
25
|
// JSON
|
|
41
|
-
|
|
42
|
-
|
|
26
|
+
const setDate = (element, date) => {
|
|
27
|
+
const items = element.children;
|
|
43
28
|
_react.fireEvent.change(items[0].childNodes[0].childNodes[1], {
|
|
44
29
|
target: {
|
|
45
30
|
name: 'date-day',
|
|
@@ -59,19 +44,15 @@ var setDate = function setDate(element, date) {
|
|
|
59
44
|
}
|
|
60
45
|
});
|
|
61
46
|
};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
var refDataUrl = function refDataUrl(suffix) {
|
|
72
|
-
return "".concat(_userProfileData.default.urls.refData, "/").concat(suffix);
|
|
73
|
-
};
|
|
74
|
-
beforeEach(function () {
|
|
47
|
+
const sleep = ms => new Promise(resolve => {
|
|
48
|
+
setTimeout(resolve, ms);
|
|
49
|
+
});
|
|
50
|
+
describe('components', () => {
|
|
51
|
+
describe('FormRenderer', () => {
|
|
52
|
+
const mockAxios = new _axiosMockAdapter.default(_axios.default);
|
|
53
|
+
let container = null;
|
|
54
|
+
const refDataUrl = suffix => "".concat(_userProfileData.default.urls.refData, "/").concat(suffix);
|
|
55
|
+
beforeEach(() => {
|
|
75
56
|
container = document.createElement('div');
|
|
76
57
|
document.body.appendChild(container);
|
|
77
58
|
mockAxios.reset();
|
|
@@ -79,1103 +60,737 @@ describe('components', function () {
|
|
|
79
60
|
mockAxios.onGet(refDataUrl('grade')).reply(200, _grade.default);
|
|
80
61
|
mockAxios.onGet(refDataUrl('team')).reply(200, _team.default);
|
|
81
62
|
});
|
|
82
|
-
afterEach(
|
|
63
|
+
afterEach(() => {
|
|
83
64
|
(0, _reactDom.unmountComponentAtNode)(container);
|
|
84
65
|
container.remove();
|
|
85
66
|
container = null;
|
|
86
67
|
});
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
68
|
+
const checkForm = formContainer => {
|
|
69
|
+
const formWrapper = formContainer;
|
|
70
|
+
const form = formWrapper.childNodes[0];
|
|
90
71
|
expect(form.tagName).toEqual('DIV');
|
|
91
72
|
expect(form.classList).toContain(_FormRenderer.DEFAULT_CLASS);
|
|
92
73
|
return form;
|
|
93
74
|
};
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
actions = _summaryList$childNod[2];
|
|
75
|
+
const getChangeLink = summaryList => {
|
|
76
|
+
const [,, actions] = summaryList.childNodes[0].childNodes[0].childNodes;
|
|
97
77
|
return actions.childNodes[0];
|
|
98
78
|
};
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
error: 'Something went wrong'
|
|
306
|
-
}]);
|
|
307
|
-
};
|
|
308
|
-
HOOKS = {
|
|
309
|
-
onSubmit: ON_SUBMIT,
|
|
310
|
-
onAction: function onAction(formData, patch) {
|
|
311
|
-
return {
|
|
312
|
-
formData: formData,
|
|
313
|
-
patch: patch
|
|
314
|
-
};
|
|
315
|
-
}
|
|
316
|
-
};
|
|
317
|
-
_context10.next = 5;
|
|
318
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
|
|
319
|
-
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
320
|
-
while (1) switch (_context9.prev = _context9.next) {
|
|
321
|
-
case 0:
|
|
322
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
323
|
-
data: _userProfileData.default,
|
|
324
|
-
hooks: HOOKS
|
|
325
|
-
})), container);
|
|
326
|
-
case 1:
|
|
327
|
-
case "end":
|
|
328
|
-
return _context9.stop();
|
|
329
|
-
}
|
|
330
|
-
}, _callee9);
|
|
331
|
-
})));
|
|
332
|
-
case 5:
|
|
333
|
-
form = checkForm(container); // Navigate to the "Are you a civil servant?" page.
|
|
334
|
-
hub = form.childNodes[1]; // Hub = CYA
|
|
335
|
-
_hub$childNodes3 = _slicedToArray(hub.childNodes, 3), civilServantList = _hub$childNodes3[2];
|
|
336
|
-
link = getChangeLink(civilServantList);
|
|
337
|
-
_react.fireEvent.click(link, {});
|
|
338
|
-
|
|
339
|
-
// Should already be answered "Yes", so simply click "Continue".
|
|
340
|
-
page = form.childNodes[0];
|
|
341
|
-
continueButton = getContinueButton(page);
|
|
342
|
-
expect(ON_SUBMIT_CALLS.length).toEqual(0);
|
|
343
|
-
_react.fireEvent.click(continueButton, {});
|
|
344
|
-
expect(ON_SUBMIT_CALLS.length).toEqual(1);
|
|
345
|
-
expect(ON_SUBMIT_CALLS[0].type).toEqual(_models.PageAction.TYPES.SUBMIT);
|
|
346
|
-
expect(ON_SUBMIT_CALLS[0].payload.areYouACivilServant).toEqual('yes');
|
|
347
|
-
|
|
348
|
-
// And we should be kept on the same page.
|
|
349
|
-
expect(form.childNodes.length).toEqual(1); // Just the page.
|
|
350
|
-
pageHeading = form.childNodes[0].childNodes[1];
|
|
351
|
-
expect(pageHeading.tagName).toEqual('H1');
|
|
352
|
-
expect(pageHeading.textContent).toEqual(_userProfile.default.pages[1].title);
|
|
353
|
-
case 21:
|
|
354
|
-
case "end":
|
|
355
|
-
return _context10.stop();
|
|
356
|
-
}
|
|
357
|
-
}, _callee10);
|
|
358
|
-
})));
|
|
359
|
-
it('should handle a page submission once regardless of how many times page action is clicked', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {
|
|
360
|
-
var ON_PAGE_CHANGE_CALLS, ON_PAGE_CHANGE, ON_SUBMIT_CALLS, ON_SUBMIT, HOOKS, _container$childNodes, continueButtonGroup, continueFormButton, innerDiv, firstNameInput, EVENT, submitButton;
|
|
361
|
-
return _regeneratorRuntime().wrap(function _callee12$(_context12) {
|
|
362
|
-
while (1) switch (_context12.prev = _context12.next) {
|
|
363
|
-
case 0:
|
|
364
|
-
ON_PAGE_CHANGE_CALLS = [];
|
|
365
|
-
ON_PAGE_CHANGE = function ON_PAGE_CHANGE(pageId) {
|
|
366
|
-
ON_PAGE_CHANGE_CALLS.push(pageId);
|
|
367
|
-
};
|
|
368
|
-
ON_SUBMIT_CALLS = [];
|
|
369
|
-
ON_SUBMIT = /*#__PURE__*/function () {
|
|
370
|
-
var _ref12 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(type, payload, onSuccess, onError, fieldName, fieldValue) {
|
|
371
|
-
return _regeneratorRuntime().wrap(function _callee11$(_context11) {
|
|
372
|
-
while (1) switch (_context11.prev = _context11.next) {
|
|
373
|
-
case 0:
|
|
374
|
-
ON_SUBMIT_CALLS.push({
|
|
375
|
-
type: type,
|
|
376
|
-
payload: payload,
|
|
377
|
-
onSuccess: onSuccess,
|
|
378
|
-
onError: onError,
|
|
379
|
-
fieldName: fieldName,
|
|
380
|
-
fieldValue: fieldValue
|
|
381
|
-
});
|
|
382
|
-
|
|
383
|
-
// mock a delay when submitting to the backend
|
|
384
|
-
_context11.next = 3;
|
|
385
|
-
return sleep(2000);
|
|
386
|
-
case 3:
|
|
387
|
-
onSuccess();
|
|
388
|
-
case 4:
|
|
389
|
-
case "end":
|
|
390
|
-
return _context11.stop();
|
|
391
|
-
}
|
|
392
|
-
}, _callee11);
|
|
393
|
-
}));
|
|
394
|
-
return function ON_SUBMIT(_x, _x2, _x3, _x4, _x5, _x6) {
|
|
395
|
-
return _ref12.apply(this, arguments);
|
|
396
|
-
};
|
|
397
|
-
}();
|
|
398
|
-
HOOKS = {
|
|
399
|
-
onSubmit: ON_SUBMIT,
|
|
400
|
-
onPageChange: ON_PAGE_CHANGE
|
|
401
|
-
};
|
|
402
|
-
(0, _testUtils.act)(function () {
|
|
403
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _firstForm.default, {
|
|
404
|
-
hooks: HOOKS,
|
|
405
|
-
type: _models.FormTypes.CYA
|
|
406
|
-
})), container);
|
|
407
|
-
});
|
|
408
|
-
_container$childNodes = _slicedToArray(container.childNodes[0].childNodes[0].childNodes, 6), continueButtonGroup = _container$childNodes[5]; // go to first question page
|
|
409
|
-
continueFormButton = continueButtonGroup.childNodes[0];
|
|
410
|
-
_react.fireEvent.click(continueFormButton);
|
|
411
|
-
innerDiv = container.childNodes[0].childNodes[0]; // enter a value in the input field
|
|
412
|
-
firstNameInput = innerDiv.childNodes[1].childNodes[2];
|
|
413
|
-
EVENT = {
|
|
414
|
-
target: {
|
|
415
|
-
name: firstNameInput.id,
|
|
416
|
-
value: 'abc'
|
|
417
|
-
}
|
|
418
|
-
};
|
|
419
|
-
_react.fireEvent.change(firstNameInput, EVENT);
|
|
420
|
-
submitButton = innerDiv.childNodes[2].childNodes[0]; // click on save and continue
|
|
421
|
-
_react.fireEvent.click(submitButton);
|
|
422
|
-
|
|
423
|
-
// click on save and continue again
|
|
424
|
-
_react.fireEvent.click(submitButton);
|
|
425
|
-
|
|
426
|
-
// click on save and continue a third time
|
|
427
|
-
_react.fireEvent.click(submitButton);
|
|
428
|
-
|
|
429
|
-
// only expect one submit call to be made
|
|
430
|
-
expect(ON_SUBMIT_CALLS.length).toEqual(1);
|
|
431
|
-
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(1);
|
|
432
|
-
expect(ON_SUBMIT_CALLS[0].type).toEqual(_models.PageAction.TYPES.SAVE_AND_CONTINUE);
|
|
433
|
-
case 20:
|
|
434
|
-
case "end":
|
|
435
|
-
return _context12.stop();
|
|
436
|
-
}
|
|
437
|
-
}, _callee12);
|
|
438
|
-
})));
|
|
439
|
-
it('should handle a page submission repeatedly if ignoreSubmittingFlag is true', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {
|
|
440
|
-
var ON_PAGE_CHANGE_CALLS, ON_PAGE_CHANGE, ON_SUBMIT_CALLS, ON_SUBMIT, HOOKS, formDefinition, form, hub, _hub$childNodes4, civilServantList, link, page, continueButton;
|
|
441
|
-
return _regeneratorRuntime().wrap(function _callee14$(_context14) {
|
|
442
|
-
while (1) switch (_context14.prev = _context14.next) {
|
|
443
|
-
case 0:
|
|
444
|
-
ON_PAGE_CHANGE_CALLS = [];
|
|
445
|
-
ON_PAGE_CHANGE = function ON_PAGE_CHANGE(pageId) {
|
|
446
|
-
ON_PAGE_CHANGE_CALLS.push(pageId);
|
|
447
|
-
};
|
|
448
|
-
ON_SUBMIT_CALLS = [];
|
|
449
|
-
ON_SUBMIT = /*#__PURE__*/function () {
|
|
450
|
-
var _ref14 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13(type, payload, onSuccess, onError, fieldName, fieldValue) {
|
|
451
|
-
return _regeneratorRuntime().wrap(function _callee13$(_context13) {
|
|
452
|
-
while (1) switch (_context13.prev = _context13.next) {
|
|
453
|
-
case 0:
|
|
454
|
-
ON_SUBMIT_CALLS.push({
|
|
455
|
-
type: type,
|
|
456
|
-
payload: payload,
|
|
457
|
-
onSuccess: onSuccess,
|
|
458
|
-
onError: onError,
|
|
459
|
-
fieldName: fieldName,
|
|
460
|
-
fieldValue: fieldValue
|
|
461
|
-
});
|
|
462
|
-
|
|
463
|
-
// mock a delay when submitting to the backend
|
|
464
|
-
_context13.next = 3;
|
|
465
|
-
return sleep(2000);
|
|
466
|
-
case 3:
|
|
467
|
-
onSuccess();
|
|
468
|
-
case 4:
|
|
469
|
-
case "end":
|
|
470
|
-
return _context13.stop();
|
|
471
|
-
}
|
|
472
|
-
}, _callee13);
|
|
473
|
-
}));
|
|
474
|
-
return function ON_SUBMIT(_x7, _x8, _x9, _x10, _x11, _x12) {
|
|
475
|
-
return _ref14.apply(this, arguments);
|
|
476
|
-
};
|
|
477
|
-
}();
|
|
478
|
-
HOOKS = {
|
|
479
|
-
onSubmit: ON_SUBMIT,
|
|
480
|
-
onPageChange: ON_PAGE_CHANGE
|
|
481
|
-
};
|
|
482
|
-
formDefinition = _objectSpread({}, _userProfile.default);
|
|
483
|
-
formDefinition.pages[1].actions = [{
|
|
484
|
-
type: 'saveAndContinue',
|
|
485
|
-
page: 'test',
|
|
486
|
-
ignoreSubmittingFlag: true
|
|
487
|
-
}, {
|
|
488
|
-
type: 'cancel'
|
|
489
|
-
}];
|
|
490
|
-
(0, _testUtils.act)(function () {
|
|
491
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, formDefinition, {
|
|
492
|
-
data: _userProfileData.default,
|
|
493
|
-
hooks: HOOKS
|
|
494
|
-
})), container);
|
|
495
|
-
});
|
|
496
|
-
form = checkForm(container); // Navigate to the "Are you a civil servant?" page.
|
|
497
|
-
hub = form.childNodes[1]; // Hub = CYA
|
|
498
|
-
_hub$childNodes4 = _slicedToArray(hub.childNodes, 3), civilServantList = _hub$childNodes4[2];
|
|
499
|
-
link = getChangeLink(civilServantList);
|
|
500
|
-
_react.fireEvent.click(link, {});
|
|
501
|
-
|
|
502
|
-
// Should already be answered "Yes", so simply click "Continue".
|
|
503
|
-
page = form.childNodes[0];
|
|
504
|
-
continueButton = getContinueButton(page);
|
|
505
|
-
expect(ON_SUBMIT_CALLS.length).toEqual(0);
|
|
506
|
-
_react.fireEvent.click(continueButton, {});
|
|
507
|
-
expect(ON_SUBMIT_CALLS.length).toEqual(1);
|
|
508
|
-
expect(ON_SUBMIT_CALLS[0].type).toEqual(_models.PageAction.TYPES.SAVE_AND_CONTINUE);
|
|
509
|
-
|
|
510
|
-
// click on save and continue
|
|
511
|
-
_react.fireEvent.click(continueButton);
|
|
512
|
-
|
|
513
|
-
// click on save and continue again
|
|
514
|
-
_react.fireEvent.click(continueButton);
|
|
515
|
-
|
|
516
|
-
// click on save and continue a third time
|
|
517
|
-
_react.fireEvent.click(continueButton);
|
|
518
|
-
|
|
519
|
-
// expect all submit calls to be made
|
|
520
|
-
expect(ON_SUBMIT_CALLS.length).toEqual(4);
|
|
521
|
-
case 23:
|
|
522
|
-
case "end":
|
|
523
|
-
return _context14.stop();
|
|
524
|
-
}
|
|
525
|
-
}, _callee14);
|
|
526
|
-
})));
|
|
527
|
-
it('should handle page navigation', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {
|
|
528
|
-
var ON_PAGE_CHANGE_CALLS, ON_PAGE_CHANGE, HOOKS, form, hub, _hub$childNodes5, lineManagerList, link, page, pageHeading, continueButton, newPageHeading;
|
|
529
|
-
return _regeneratorRuntime().wrap(function _callee16$(_context16) {
|
|
530
|
-
while (1) switch (_context16.prev = _context16.next) {
|
|
531
|
-
case 0:
|
|
532
|
-
ON_PAGE_CHANGE_CALLS = [];
|
|
533
|
-
ON_PAGE_CHANGE = function ON_PAGE_CHANGE(pageId) {
|
|
534
|
-
ON_PAGE_CHANGE_CALLS.push(pageId);
|
|
535
|
-
};
|
|
536
|
-
HOOKS = {
|
|
537
|
-
onPageChange: ON_PAGE_CHANGE
|
|
538
|
-
};
|
|
539
|
-
_context16.next = 5;
|
|
540
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {
|
|
541
|
-
return _regeneratorRuntime().wrap(function _callee15$(_context15) {
|
|
542
|
-
while (1) switch (_context15.prev = _context15.next) {
|
|
543
|
-
case 0:
|
|
544
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
545
|
-
data: _userProfileData.default,
|
|
546
|
-
hooks: HOOKS
|
|
547
|
-
})), container);
|
|
548
|
-
case 1:
|
|
549
|
-
case "end":
|
|
550
|
-
return _context15.stop();
|
|
551
|
-
}
|
|
552
|
-
}, _callee15);
|
|
553
|
-
})));
|
|
554
|
-
case 5:
|
|
555
|
-
form = checkForm(container); // Navigate to the "Add or change a line manager" page.
|
|
556
|
-
hub = form.childNodes[1]; // Hub = CYA
|
|
557
|
-
_hub$childNodes5 = _slicedToArray(hub.childNodes, 6), lineManagerList = _hub$childNodes5[5];
|
|
558
|
-
link = getChangeLink(lineManagerList);
|
|
559
|
-
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(0);
|
|
560
|
-
_react.fireEvent.click(link, {});
|
|
561
|
-
expect(ON_PAGE_CHANGE_CALLS[0]).toEqual(_userProfile.default.pages[4].id);
|
|
562
|
-
|
|
563
|
-
// Should be on the page explaining what changing the line manager means.
|
|
564
|
-
page = form.childNodes[0];
|
|
565
|
-
pageHeading = page.childNodes[0];
|
|
566
|
-
expect(pageHeading.tagName).toEqual('H1');
|
|
567
|
-
expect(pageHeading.textContent).toEqual(_userProfile.default.pages[4].title);
|
|
568
|
-
|
|
569
|
-
// Now click on the "Continue" button on here.
|
|
570
|
-
continueButton = getContinueButton(page);
|
|
571
|
-
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(1);
|
|
572
|
-
_react.fireEvent.click(continueButton, {});
|
|
573
|
-
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(2);
|
|
574
|
-
expect(ON_PAGE_CHANGE_CALLS[1]).toEqual(_userProfile.default.pages[5].id);
|
|
575
|
-
newPageHeading = form.childNodes[0].childNodes[0];
|
|
576
|
-
expect(newPageHeading.tagName).toEqual('H1');
|
|
577
|
-
expect(newPageHeading.textContent).toEqual(_userProfile.default.pages[5].title);
|
|
578
|
-
case 24:
|
|
579
|
-
case "end":
|
|
580
|
-
return _context16.stop();
|
|
581
|
-
}
|
|
582
|
-
}, _callee16);
|
|
583
|
-
})));
|
|
584
|
-
it('should show no title when hide_title is set to true', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {
|
|
585
|
-
var form, hub;
|
|
586
|
-
return _regeneratorRuntime().wrap(function _callee18$(_context18) {
|
|
587
|
-
while (1) switch (_context18.prev = _context18.next) {
|
|
588
|
-
case 0:
|
|
589
|
-
_context18.next = 2;
|
|
590
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {
|
|
591
|
-
return _regeneratorRuntime().wrap(function _callee17$(_context17) {
|
|
592
|
-
while (1) switch (_context17.prev = _context17.next) {
|
|
593
|
-
case 0:
|
|
594
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
595
|
-
data: _userProfileData.default,
|
|
596
|
-
hide_title: true
|
|
597
|
-
})), container);
|
|
598
|
-
case 1:
|
|
599
|
-
case "end":
|
|
600
|
-
return _context17.stop();
|
|
601
|
-
}
|
|
602
|
-
}, _callee17);
|
|
603
|
-
})));
|
|
604
|
-
case 2:
|
|
605
|
-
form = checkForm(container);
|
|
606
|
-
expect(form.childNodes.length).toEqual(1); // Hub page (= CYA)
|
|
607
|
-
hub = form.childNodes[0];
|
|
608
|
-
expect(hub.tagName).toEqual('DIV');
|
|
609
|
-
expect(hub.classList).toContain(_CheckYourAnswers.DEFAULT_CLASS);
|
|
610
|
-
case 7:
|
|
611
|
-
case "end":
|
|
612
|
-
return _context18.stop();
|
|
613
|
-
}
|
|
614
|
-
}, _callee18);
|
|
615
|
-
})));
|
|
616
|
-
it('should render a task list', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {
|
|
617
|
-
var taskList;
|
|
618
|
-
return _regeneratorRuntime().wrap(function _callee20$(_context20) {
|
|
619
|
-
while (1) switch (_context20.prev = _context20.next) {
|
|
620
|
-
case 0:
|
|
621
|
-
_context20.next = 2;
|
|
622
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {
|
|
623
|
-
return _regeneratorRuntime().wrap(function _callee19$(_context19) {
|
|
624
|
-
while (1) switch (_context19.prev = _context19.next) {
|
|
625
|
-
case 0:
|
|
626
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _taskList.default), container);
|
|
627
|
-
case 1:
|
|
628
|
-
case "end":
|
|
629
|
-
return _context19.stop();
|
|
630
|
-
}
|
|
631
|
-
}, _callee19);
|
|
632
|
-
})));
|
|
633
|
-
case 2:
|
|
634
|
-
taskList = container.childNodes[0].childNodes[1];
|
|
635
|
-
expect(taskList.classList).toContain(_TaskList.DEFAULT_CLASS);
|
|
636
|
-
case 4:
|
|
637
|
-
case "end":
|
|
638
|
-
return _context20.stop();
|
|
639
|
-
}
|
|
640
|
-
}, _callee20);
|
|
641
|
-
})));
|
|
642
|
-
it('should render a cya page', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {
|
|
643
|
-
var cya;
|
|
644
|
-
return _regeneratorRuntime().wrap(function _callee22$(_context22) {
|
|
645
|
-
while (1) switch (_context22.prev = _context22.next) {
|
|
646
|
-
case 0:
|
|
647
|
-
_context22.next = 2;
|
|
648
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {
|
|
649
|
-
return _regeneratorRuntime().wrap(function _callee21$(_context21) {
|
|
650
|
-
while (1) switch (_context21.prev = _context21.next) {
|
|
651
|
-
case 0:
|
|
652
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _firstForm.default), container);
|
|
653
|
-
case 1:
|
|
654
|
-
case "end":
|
|
655
|
-
return _context21.stop();
|
|
656
|
-
}
|
|
657
|
-
}, _callee21);
|
|
658
|
-
})));
|
|
659
|
-
case 2:
|
|
660
|
-
cya = container.childNodes[0];
|
|
661
|
-
expect(cya.classList).toContain('hods-form');
|
|
662
|
-
case 4:
|
|
663
|
-
case "end":
|
|
664
|
-
return _context22.stop();
|
|
665
|
-
}
|
|
666
|
-
}, _callee22);
|
|
667
|
-
})));
|
|
668
|
-
it('should load task list with notes', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {
|
|
669
|
-
var ON_SUBMIT_CALLS, ON_SUBMIT, HOOKS, TASK_LIST_WITH_NOTES, taskList;
|
|
670
|
-
return _regeneratorRuntime().wrap(function _callee24$(_context24) {
|
|
671
|
-
while (1) switch (_context24.prev = _context24.next) {
|
|
672
|
-
case 0:
|
|
673
|
-
ON_SUBMIT_CALLS = [];
|
|
674
|
-
ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
|
|
675
|
-
ON_SUBMIT_CALLS.push(payload);
|
|
676
|
-
onSuccess();
|
|
677
|
-
};
|
|
678
|
-
HOOKS = {
|
|
679
|
-
onSubmit: ON_SUBMIT
|
|
680
|
-
};
|
|
681
|
-
TASK_LIST_WITH_NOTES = JSON.parse(JSON.stringify(_taskList.default));
|
|
682
|
-
TASK_LIST_WITH_NOTES.hub.notes = {
|
|
683
|
-
title: "test title",
|
|
684
|
-
text: "test text",
|
|
685
|
-
show_when: [{
|
|
686
|
-
"op": "=",
|
|
687
|
-
"field": "areYouACivilServant",
|
|
688
|
-
"value": "yes"
|
|
689
|
-
}]
|
|
690
|
-
};
|
|
691
|
-
_context24.next = 7;
|
|
692
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {
|
|
693
|
-
return _regeneratorRuntime().wrap(function _callee23$(_context23) {
|
|
694
|
-
while (1) switch (_context23.prev = _context23.next) {
|
|
695
|
-
case 0:
|
|
696
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, TASK_LIST_WITH_NOTES, {
|
|
697
|
-
data: _userProfileData.default,
|
|
698
|
-
hooks: HOOKS
|
|
699
|
-
})), container);
|
|
700
|
-
case 1:
|
|
701
|
-
case "end":
|
|
702
|
-
return _context23.stop();
|
|
703
|
-
}
|
|
704
|
-
}, _callee23);
|
|
705
|
-
})));
|
|
706
|
-
case 7:
|
|
707
|
-
taskList = container.childNodes[0].childNodes[1];
|
|
708
|
-
expect(taskList.childNodes[5].textContent).toEqual("test text");
|
|
709
|
-
expect(taskList.childNodes[5].classList).toContain('govuk-textarea');
|
|
710
|
-
case 10:
|
|
711
|
-
case "end":
|
|
712
|
-
return _context24.stop();
|
|
713
|
-
}
|
|
714
|
-
}, _callee24);
|
|
715
|
-
})));
|
|
716
|
-
it('should not load task list with notes', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {
|
|
717
|
-
var ON_SUBMIT_CALLS, ON_SUBMIT, HOOKS, TASK_LIST_WITH_NOTES, taskList;
|
|
718
|
-
return _regeneratorRuntime().wrap(function _callee26$(_context26) {
|
|
719
|
-
while (1) switch (_context26.prev = _context26.next) {
|
|
720
|
-
case 0:
|
|
721
|
-
ON_SUBMIT_CALLS = [];
|
|
722
|
-
ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
|
|
723
|
-
ON_SUBMIT_CALLS.push(payload);
|
|
724
|
-
onSuccess();
|
|
725
|
-
};
|
|
726
|
-
HOOKS = {
|
|
727
|
-
onSubmit: ON_SUBMIT
|
|
728
|
-
};
|
|
729
|
-
TASK_LIST_WITH_NOTES = JSON.parse(JSON.stringify(_taskList.default));
|
|
730
|
-
TASK_LIST_WITH_NOTES.hub.notes = {
|
|
731
|
-
title: "test title",
|
|
732
|
-
text: "test text",
|
|
733
|
-
show_when: [{
|
|
734
|
-
"op": "!=",
|
|
735
|
-
"field": "changeSummary",
|
|
736
|
-
"value": undefined
|
|
737
|
-
}]
|
|
738
|
-
};
|
|
739
|
-
_context26.next = 7;
|
|
740
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {
|
|
741
|
-
return _regeneratorRuntime().wrap(function _callee25$(_context25) {
|
|
742
|
-
while (1) switch (_context25.prev = _context25.next) {
|
|
743
|
-
case 0:
|
|
744
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, TASK_LIST_WITH_NOTES, {
|
|
745
|
-
data: _userProfileData.default,
|
|
746
|
-
hooks: HOOKS
|
|
747
|
-
})), container);
|
|
748
|
-
case 1:
|
|
749
|
-
case "end":
|
|
750
|
-
return _context25.stop();
|
|
751
|
-
}
|
|
752
|
-
}, _callee25);
|
|
753
|
-
})));
|
|
754
|
-
case 7:
|
|
755
|
-
taskList = container.childNodes[0].childNodes[1];
|
|
756
|
-
taskList.childNodes.forEach(function (child) {
|
|
757
|
-
// eslint-disable-next-line no-console
|
|
758
|
-
console.log("taskList, child = ".concat(JSON.stringify(child.textContent)));
|
|
759
|
-
});
|
|
760
|
-
expect(taskList.childNodes[5].textContent).not.toEqual("test text");
|
|
761
|
-
expect(taskList.childNodes[5].classList).not.toContain('govuk-textarea');
|
|
762
|
-
case 11:
|
|
763
|
-
case "end":
|
|
764
|
-
return _context26.stop();
|
|
765
|
-
}
|
|
766
|
-
}, _callee26);
|
|
767
|
-
})));
|
|
768
|
-
it('should handle navigating between task list pages', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {
|
|
769
|
-
var ON_SUBMIT_CALLS, ON_SUBMIT, HOOKS, taskList, firstTaskStatus, secondTaskStatus, firstTask, newPage, fieldset, continueButton, seaButton, cyaPageChange, modeChangeLink, changePage, airButton, cyaPage, finalSubmit;
|
|
770
|
-
return _regeneratorRuntime().wrap(function _callee28$(_context28) {
|
|
771
|
-
while (1) switch (_context28.prev = _context28.next) {
|
|
772
|
-
case 0:
|
|
773
|
-
ON_SUBMIT_CALLS = [];
|
|
774
|
-
ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
|
|
775
|
-
ON_SUBMIT_CALLS.push(payload);
|
|
776
|
-
onSuccess();
|
|
777
|
-
};
|
|
778
|
-
HOOKS = {
|
|
779
|
-
onSubmit: ON_SUBMIT
|
|
780
|
-
};
|
|
781
|
-
_context28.next = 5;
|
|
782
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {
|
|
783
|
-
return _regeneratorRuntime().wrap(function _callee27$(_context27) {
|
|
784
|
-
while (1) switch (_context27.prev = _context27.next) {
|
|
785
|
-
case 0:
|
|
786
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _taskList.default, {
|
|
787
|
-
hooks: HOOKS
|
|
788
|
-
})), container);
|
|
789
|
-
case 1:
|
|
790
|
-
case "end":
|
|
791
|
-
return _context27.stop();
|
|
792
|
-
}
|
|
793
|
-
}, _callee27);
|
|
794
|
-
})));
|
|
795
|
-
case 5:
|
|
796
|
-
taskList = container.childNodes[0].childNodes[1]; // Check statuses are correct
|
|
797
|
-
firstTaskStatus = taskList.childNodes[3].childNodes[0].childNodes[1];
|
|
798
|
-
expect(firstTaskStatus.textContent).toEqual(_models.TaskStates.DETAILS[_models.TaskStates.TYPES.NOT_STARTED].label);
|
|
799
|
-
secondTaskStatus = taskList.childNodes[3].childNodes[1].childNodes[1];
|
|
800
|
-
expect(secondTaskStatus.textContent).toEqual(_models.TaskStates.DETAILS[_models.TaskStates.TYPES.CANNOT_START_YET].label);
|
|
801
|
-
|
|
802
|
-
// Launch first task
|
|
803
|
-
firstTask = taskList.childNodes[3].childNodes[0].childNodes[0].childNodes[0];
|
|
804
|
-
expect(firstTask.textContent).toEqual('Date, location and mode details');
|
|
805
|
-
_react.fireEvent.click(firstTask, {});
|
|
806
|
-
|
|
807
|
-
// Fill first page and navigate
|
|
808
|
-
newPage = container.childNodes[0].childNodes[0];
|
|
809
|
-
expect(newPage.childNodes[0].textContent).toEqual('Event Date');
|
|
810
|
-
fieldset = newPage.childNodes[1].childNodes[0]; // child nodes of fieldset are legend and date
|
|
811
|
-
setDate(fieldset.children[1], ['7', '7', '2022']);
|
|
812
|
-
continueButton = newPage.childNodes[2].childNodes[0];
|
|
813
|
-
_react.fireEvent.click(continueButton, {});
|
|
814
|
-
|
|
815
|
-
// Fill second page and navigate
|
|
816
|
-
newPage = container.childNodes[0].childNodes[0];
|
|
817
|
-
expect(newPage.childNodes[0].textContent).toEqual('Event Mode');
|
|
818
|
-
seaButton = newPage.childNodes[1].childNodes[0].childNodes[2].childNodes[0];
|
|
819
|
-
expect(seaButton.textContent).toEqual('Sea');
|
|
820
|
-
_react.fireEvent.click(seaButton.childNodes[0], {});
|
|
821
|
-
continueButton = newPage.childNodes[2].childNodes[0];
|
|
822
|
-
_react.fireEvent.click(continueButton, {});
|
|
823
|
-
|
|
824
|
-
// Click change to mode on CYA page
|
|
825
|
-
cyaPageChange = container.childNodes[0].childNodes[0];
|
|
826
|
-
expect(cyaPageChange.childNodes[0].textContent).toEqual('Check your answers');
|
|
827
|
-
modeChangeLink = cyaPageChange.childNodes[4].childNodes[0].childNodes[0].childNodes[2].childNodes[0];
|
|
828
|
-
expect(modeChangeLink.textContent).toEqual('Change Event Mode');
|
|
829
|
-
_react.fireEvent.click(modeChangeLink, {});
|
|
830
|
-
changePage = container.childNodes[0].childNodes[0];
|
|
831
|
-
expect(changePage.childNodes[0].textContent).toEqual('Event Mode');
|
|
832
|
-
// Click on radio for 'Air'
|
|
833
|
-
airButton = changePage.childNodes[1].childNodes[0].childNodes[2].childNodes[1];
|
|
834
|
-
expect(airButton.textContent).toEqual('Air');
|
|
835
|
-
_react.fireEvent.click(airButton.childNodes[0]);
|
|
836
|
-
// Continue again to CYA page
|
|
837
|
-
expect(changePage.childNodes[2].childNodes[0].textContent).toEqual('Save and continue');
|
|
838
|
-
continueButton = changePage.childNodes[2].childNodes[0];
|
|
839
|
-
_react.fireEvent.click(continueButton, {});
|
|
840
|
-
|
|
841
|
-
// Continue on from CYA page
|
|
842
|
-
cyaPage = container.childNodes[0].childNodes[0];
|
|
843
|
-
expect(cyaPage.childNodes[0].textContent).toEqual('Check your answers');
|
|
844
|
-
expect(cyaPage.childNodes[5].childNodes[0].textContent).toEqual('Save and continue');
|
|
845
|
-
expect(cyaPage.childNodes[5].childNodes[1].textContent).toEqual('Save and return later');
|
|
846
|
-
_react.fireEvent.click(cyaPage.childNodes[5].childNodes[0], {});
|
|
847
|
-
|
|
848
|
-
// Should be back at task list
|
|
849
|
-
expect(container.childNodes[0].childNodes[0].textContent).toEqual('Task List Form');
|
|
850
|
-
|
|
851
|
-
// Check statuses are correct
|
|
852
|
-
firstTaskStatus = container.childNodes[0].childNodes[1].childNodes[3].childNodes[0].childNodes[1];
|
|
853
|
-
expect(firstTaskStatus.textContent).toEqual(_models.TaskStates.DETAILS[_models.TaskStates.TYPES.COMPLETE].label);
|
|
854
|
-
secondTaskStatus = container.childNodes[0].childNodes[1].childNodes[3].childNodes[1].childNodes[1];
|
|
855
|
-
expect(secondTaskStatus.textContent).toEqual(_models.TaskStates.DETAILS[_models.TaskStates.TYPES.NOT_STARTED].label);
|
|
856
|
-
|
|
857
|
-
// Check final data submitted to backend is as expected
|
|
858
|
-
finalSubmit = ON_SUBMIT_CALLS[ON_SUBMIT_CALLS.length - 1];
|
|
859
|
-
expect(finalSubmit.date).toEqual('7-7-2022');
|
|
860
|
-
expect(finalSubmit.mode).toEqual('air');
|
|
861
|
-
expect(finalSubmit.formStatus.tasks['Date, location and mode details'].complete).toEqual(true);
|
|
862
|
-
case 53:
|
|
863
|
-
case "end":
|
|
864
|
-
return _context28.stop();
|
|
865
|
-
}
|
|
866
|
-
}, _callee28);
|
|
867
|
-
})));
|
|
868
|
-
it('should go straight to CYA page if a complete task is selected', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {
|
|
869
|
-
var ON_SUBMIT, HOOKS, taskList, newPage, fieldset;
|
|
870
|
-
return _regeneratorRuntime().wrap(function _callee30$(_context30) {
|
|
871
|
-
while (1) switch (_context30.prev = _context30.next) {
|
|
872
|
-
case 0:
|
|
873
|
-
ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
|
|
874
|
-
onSuccess();
|
|
875
|
-
};
|
|
876
|
-
HOOKS = {
|
|
877
|
-
onSubmit: ON_SUBMIT
|
|
878
|
-
};
|
|
879
|
-
_context30.next = 4;
|
|
880
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {
|
|
881
|
-
return _regeneratorRuntime().wrap(function _callee29$(_context29) {
|
|
882
|
-
while (1) switch (_context29.prev = _context29.next) {
|
|
883
|
-
case 0:
|
|
884
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _taskList.default, {
|
|
885
|
-
hooks: HOOKS
|
|
886
|
-
})), container);
|
|
887
|
-
case 1:
|
|
888
|
-
case "end":
|
|
889
|
-
return _context29.stop();
|
|
890
|
-
}
|
|
891
|
-
}, _callee29);
|
|
892
|
-
})));
|
|
893
|
-
case 4:
|
|
894
|
-
taskList = container.childNodes[0].childNodes[1]; // Launch first task
|
|
895
|
-
_react.fireEvent.click(taskList.childNodes[3].childNodes[0].childNodes[0].childNodes[0], {});
|
|
896
|
-
|
|
897
|
-
// Fill first page and navigate
|
|
898
|
-
newPage = container.childNodes[0].childNodes[0];
|
|
899
|
-
fieldset = newPage.childNodes[1].childNodes[0];
|
|
900
|
-
setDate(fieldset.children[1], ['7', '7', '2022']);
|
|
901
|
-
// child nodes of fieldset are legend and date
|
|
902
|
-
|
|
903
|
-
_react.fireEvent.click(newPage.childNodes[2].childNodes[0], {});
|
|
904
|
-
|
|
905
|
-
// Fill second page and navigate
|
|
906
|
-
newPage = container.childNodes[0].childNodes[0];
|
|
907
|
-
_react.fireEvent.click(newPage.childNodes[1].childNodes[0].childNodes[2].childNodes[0].childNodes[0], {});
|
|
908
|
-
_react.fireEvent.click(newPage.childNodes[2].childNodes[0], {});
|
|
909
|
-
|
|
910
|
-
// Continue on from CYA page
|
|
911
|
-
_react.fireEvent.click(container.childNodes[0].childNodes[0].childNodes[5].childNodes[0], {});
|
|
912
|
-
|
|
913
|
-
// Launch same task again
|
|
914
|
-
_react.fireEvent.click(container.childNodes[0].childNodes[1].childNodes[3].childNodes[0].childNodes[0].childNodes[0], {});
|
|
915
|
-
|
|
916
|
-
// Should be at CYA page
|
|
917
|
-
expect(container.childNodes[0].childNodes[0].childNodes[0].textContent).toEqual('Check your answers');
|
|
918
|
-
case 16:
|
|
919
|
-
case "end":
|
|
920
|
-
return _context30.stop();
|
|
921
|
-
}
|
|
922
|
-
}, _callee30);
|
|
923
|
-
})));
|
|
924
|
-
it('should go to incomplete page when selecting in-progress task', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee32() {
|
|
925
|
-
var ON_SUBMIT, HOOKS, DATA, taskList;
|
|
926
|
-
return _regeneratorRuntime().wrap(function _callee32$(_context32) {
|
|
927
|
-
while (1) switch (_context32.prev = _context32.next) {
|
|
928
|
-
case 0:
|
|
929
|
-
ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
|
|
930
|
-
onSuccess();
|
|
931
|
-
};
|
|
932
|
-
HOOKS = {
|
|
933
|
-
onSubmit: ON_SUBMIT
|
|
934
|
-
};
|
|
935
|
-
DATA = {
|
|
936
|
-
"date": "7-7-2022",
|
|
937
|
-
"formStatus": {
|
|
938
|
-
"tasks": {
|
|
939
|
-
"Date, location and mode details": {
|
|
940
|
-
"complete": false,
|
|
941
|
-
"currentPage": "eventMode"
|
|
942
|
-
}
|
|
943
|
-
},
|
|
944
|
-
"taskPage": "eventMode"
|
|
945
|
-
}
|
|
946
|
-
};
|
|
947
|
-
_context32.next = 5;
|
|
948
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee31() {
|
|
949
|
-
return _regeneratorRuntime().wrap(function _callee31$(_context31) {
|
|
950
|
-
while (1) switch (_context31.prev = _context31.next) {
|
|
951
|
-
case 0:
|
|
952
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _taskList.default, {
|
|
953
|
-
hooks: HOOKS,
|
|
954
|
-
data: DATA
|
|
955
|
-
})), container);
|
|
956
|
-
case 1:
|
|
957
|
-
case "end":
|
|
958
|
-
return _context31.stop();
|
|
959
|
-
}
|
|
960
|
-
}, _callee31);
|
|
961
|
-
})));
|
|
962
|
-
case 5:
|
|
963
|
-
taskList = container.childNodes[0].childNodes[1]; // Launch first task
|
|
964
|
-
_react.fireEvent.click(taskList.childNodes[3].childNodes[0].childNodes[0].childNodes[0], {});
|
|
965
|
-
|
|
966
|
-
// Should be at Event Mode page
|
|
967
|
-
expect(container.childNodes[0].childNodes[0].childNodes[0].textContent).toEqual('Event Mode');
|
|
968
|
-
case 8:
|
|
969
|
-
case "end":
|
|
970
|
-
return _context32.stop();
|
|
971
|
-
}
|
|
972
|
-
}, _callee32);
|
|
973
|
-
})));
|
|
974
|
-
it('should go to the first page of a complete task if noTaskCYAs specified', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee34() {
|
|
975
|
-
var ON_SUBMIT, HOOKS, TASK_LIST_WITH_NO_TASK_CYAS, taskList, newPage, fieldset;
|
|
976
|
-
return _regeneratorRuntime().wrap(function _callee34$(_context34) {
|
|
977
|
-
while (1) switch (_context34.prev = _context34.next) {
|
|
978
|
-
case 0:
|
|
979
|
-
ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
|
|
980
|
-
onSuccess();
|
|
981
|
-
};
|
|
982
|
-
HOOKS = {
|
|
983
|
-
onSubmit: ON_SUBMIT
|
|
984
|
-
};
|
|
985
|
-
TASK_LIST_WITH_NO_TASK_CYAS = JSON.parse(JSON.stringify(_taskList.default));
|
|
986
|
-
TASK_LIST_WITH_NO_TASK_CYAS.hub.noTaskCYAs = true;
|
|
987
|
-
TASK_LIST_WITH_NO_TASK_CYAS.pages[1].actions[0] = {
|
|
988
|
-
type: 'save',
|
|
989
|
-
complete: true
|
|
990
|
-
};
|
|
991
|
-
_context34.next = 7;
|
|
992
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee33() {
|
|
993
|
-
return _regeneratorRuntime().wrap(function _callee33$(_context33) {
|
|
994
|
-
while (1) switch (_context33.prev = _context33.next) {
|
|
995
|
-
case 0:
|
|
996
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, TASK_LIST_WITH_NO_TASK_CYAS, {
|
|
997
|
-
hooks: HOOKS
|
|
998
|
-
})), container);
|
|
999
|
-
case 1:
|
|
1000
|
-
case "end":
|
|
1001
|
-
return _context33.stop();
|
|
1002
|
-
}
|
|
1003
|
-
}, _callee33);
|
|
1004
|
-
})));
|
|
1005
|
-
case 7:
|
|
1006
|
-
taskList = container.childNodes[0].childNodes[1]; // Launch first task
|
|
1007
|
-
_react.fireEvent.click(taskList.childNodes[3].childNodes[0].childNodes[0].childNodes[0], {});
|
|
1008
|
-
|
|
1009
|
-
// Fill first page and navigate
|
|
1010
|
-
newPage = container.childNodes[0].childNodes[0];
|
|
1011
|
-
fieldset = newPage.childNodes[1].childNodes[0];
|
|
1012
|
-
setDate(fieldset.children[1], ['7', '7', '2022']);
|
|
1013
|
-
_react.fireEvent.click(newPage.childNodes[2].childNodes[0], {});
|
|
1014
|
-
|
|
1015
|
-
// Fill second page
|
|
1016
|
-
newPage = container.childNodes[0].childNodes[0];
|
|
1017
|
-
// expect(newPage.childNodes[1].childNodes[0].childNodes[2].childNodes[0].childNodes[0]).toEqual('');
|
|
1018
|
-
_react.fireEvent.click(newPage.childNodes[1].childNodes[0].childNodes[2].childNodes[0].childNodes[0], {});
|
|
1019
|
-
_react.fireEvent.click(newPage.childNodes[2].childNodes[0], {});
|
|
1020
|
-
|
|
1021
|
-
// Launch same task again
|
|
1022
|
-
_react.fireEvent.click(container.childNodes[0].childNodes[1].childNodes[3].childNodes[0].childNodes[0].childNodes[0], {});
|
|
1023
|
-
|
|
1024
|
-
// Should be on the first page
|
|
1025
|
-
expect(container.childNodes[0].childNodes[0].childNodes[0].textContent).toEqual('Event Date');
|
|
1026
|
-
case 18:
|
|
1027
|
-
case "end":
|
|
1028
|
-
return _context34.stop();
|
|
79
|
+
const getContinueButton = page => page.childNodes[page.childNodes.length - 1].childNodes[0].childNodes[0];
|
|
80
|
+
const getCancelButton = page => page.childNodes[page.childNodes.length - 1].childNodes[1].childNodes[0];
|
|
81
|
+
it('should start on the hub page correctly and display the title', async () => {
|
|
82
|
+
await (0, _testUtils.act)(async () => {
|
|
83
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
84
|
+
data: _userProfileData.default
|
|
85
|
+
})), container);
|
|
86
|
+
});
|
|
87
|
+
const form = checkForm(container);
|
|
88
|
+
expect(form.childNodes.length).toEqual(2); // Title + Hub page (= CYA)
|
|
89
|
+
const title = form.childNodes[0];
|
|
90
|
+
expect(title.tagName).toEqual('H1');
|
|
91
|
+
expect(title.textContent).toEqual(_userProfile.default.title);
|
|
92
|
+
const hub = form.childNodes[1];
|
|
93
|
+
expect(hub.tagName).toEqual('DIV');
|
|
94
|
+
expect(hub.classList).toContain(_CheckYourAnswers.DEFAULT_CLASS);
|
|
95
|
+
});
|
|
96
|
+
it('should fire the onFormLoad method passed in the hooks', async () => {
|
|
97
|
+
let onFormLoadCalled = false;
|
|
98
|
+
const ON_FORM_LOAD = () => {
|
|
99
|
+
onFormLoadCalled = true;
|
|
100
|
+
};
|
|
101
|
+
const HOOKS = {
|
|
102
|
+
onFormLoad: ON_FORM_LOAD
|
|
103
|
+
};
|
|
104
|
+
await (0, _testUtils.act)(async () => {
|
|
105
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
106
|
+
data: _userProfileData.default,
|
|
107
|
+
hooks: HOOKS
|
|
108
|
+
})), container);
|
|
109
|
+
});
|
|
110
|
+
expect(onFormLoadCalled).toBeTruthy();
|
|
111
|
+
});
|
|
112
|
+
it('should navigate to the first editable page', async () => {
|
|
113
|
+
const ON_PAGE_CHANGE_CALLS = [];
|
|
114
|
+
const ON_PAGE_CHANGE = pageId => {
|
|
115
|
+
ON_PAGE_CHANGE_CALLS.push(pageId);
|
|
116
|
+
};
|
|
117
|
+
const HOOKS = {
|
|
118
|
+
onPageChange: ON_PAGE_CHANGE
|
|
119
|
+
};
|
|
120
|
+
await (0, _testUtils.act)(async () => {
|
|
121
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
122
|
+
data: _userProfileData.default,
|
|
123
|
+
hooks: HOOKS
|
|
124
|
+
})), container);
|
|
125
|
+
});
|
|
126
|
+
const form = checkForm(container);
|
|
127
|
+
const hub = form.childNodes[1]; // Hub = CYA
|
|
128
|
+
const [,, civilServantList] = hub.childNodes;
|
|
129
|
+
const link = getChangeLink(civilServantList);
|
|
130
|
+
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(0);
|
|
131
|
+
_react.fireEvent.click(link, {});
|
|
132
|
+
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(1);
|
|
133
|
+
expect(ON_PAGE_CHANGE_CALLS[0]).toEqual(_userProfile.default.pages[1].id);
|
|
134
|
+
|
|
135
|
+
// The form layout should have changed to the current page.
|
|
136
|
+
expect(form.childNodes.length).toEqual(1); // Just the page.
|
|
137
|
+
const page = form.childNodes[0];
|
|
138
|
+
const pageHeading = page.childNodes[0];
|
|
139
|
+
expect(pageHeading.tagName).toEqual('H1');
|
|
140
|
+
expect(pageHeading.textContent).toEqual(_userProfile.default.pages[1].title);
|
|
141
|
+
});
|
|
142
|
+
it('should handle a page submission', async () => {
|
|
143
|
+
const ON_SUBMIT_CALLS = [];
|
|
144
|
+
const ON_SUBMIT = (type, payload, onSuccess, onError, fieldName, fieldValue) => {
|
|
145
|
+
ON_SUBMIT_CALLS.push({
|
|
146
|
+
type,
|
|
147
|
+
payload,
|
|
148
|
+
onSuccess,
|
|
149
|
+
onError,
|
|
150
|
+
fieldName,
|
|
151
|
+
fieldValue
|
|
152
|
+
});
|
|
153
|
+
onSuccess();
|
|
154
|
+
};
|
|
155
|
+
const HOOKS = {
|
|
156
|
+
onSubmit: ON_SUBMIT
|
|
157
|
+
};
|
|
158
|
+
await (0, _testUtils.act)(async () => {
|
|
159
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
160
|
+
data: _userProfileData.default,
|
|
161
|
+
hooks: HOOKS,
|
|
162
|
+
type: _models.FormTypes.HUB
|
|
163
|
+
})), container);
|
|
164
|
+
});
|
|
165
|
+
const form = checkForm(container);
|
|
166
|
+
|
|
167
|
+
// Navigate to the "Are you a civil servant?" page.
|
|
168
|
+
const hub = form.childNodes[1]; // Hub = CYA
|
|
169
|
+
const [,, civilServantList] = hub.childNodes;
|
|
170
|
+
const link = getChangeLink(civilServantList);
|
|
171
|
+
_react.fireEvent.click(link, {});
|
|
172
|
+
|
|
173
|
+
// Should already be answered "Yes", but select "No, I'm a contractor" option to generate patch
|
|
174
|
+
// and then click "Continue".
|
|
175
|
+
_react.fireEvent.click(_react.screen.getByText("No, I'm a contractor"));
|
|
176
|
+
const page = form.childNodes[0];
|
|
177
|
+
const continueButton = getContinueButton(page);
|
|
178
|
+
expect(ON_SUBMIT_CALLS.length).toEqual(0);
|
|
179
|
+
_react.fireEvent.click(continueButton, {});
|
|
180
|
+
expect(ON_SUBMIT_CALLS.length).toEqual(1);
|
|
181
|
+
expect(ON_SUBMIT_CALLS[0].type).toEqual(_models.PageAction.TYPES.SUBMIT);
|
|
182
|
+
expect(ON_SUBMIT_CALLS[0].payload.areYouACivilServant).toEqual('no-contractor');
|
|
183
|
+
expect(ON_SUBMIT_CALLS[0].fieldName).toEqual('Are you a civil servant?');
|
|
184
|
+
expect(ON_SUBMIT_CALLS[0].fieldValue).toEqual("No, I'm a contractor");
|
|
185
|
+
|
|
186
|
+
// And we should be back on the hub.
|
|
187
|
+
expect(form.childNodes.length).toEqual(2); // Title + Hub page (= CYA)
|
|
188
|
+
const title = form.childNodes[0];
|
|
189
|
+
expect(title.tagName).toEqual('H1');
|
|
190
|
+
expect(title.textContent).toEqual(_userProfile.default.title);
|
|
191
|
+
});
|
|
192
|
+
it('should handle a page submission error', async () => {
|
|
193
|
+
const ON_SUBMIT_CALLS = [];
|
|
194
|
+
const ON_SUBMIT = (type, payload, onSuccess, onError) => {
|
|
195
|
+
ON_SUBMIT_CALLS.push({
|
|
196
|
+
type,
|
|
197
|
+
payload,
|
|
198
|
+
onSuccess,
|
|
199
|
+
onError
|
|
200
|
+
});
|
|
201
|
+
onError([{
|
|
202
|
+
id: 'unknown',
|
|
203
|
+
error: 'Something went wrong'
|
|
204
|
+
}]);
|
|
205
|
+
};
|
|
206
|
+
const HOOKS = {
|
|
207
|
+
onSubmit: ON_SUBMIT,
|
|
208
|
+
onAction: (formData, patch) => ({
|
|
209
|
+
formData,
|
|
210
|
+
patch
|
|
211
|
+
})
|
|
212
|
+
};
|
|
213
|
+
await (0, _testUtils.act)(async () => {
|
|
214
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
215
|
+
data: _userProfileData.default,
|
|
216
|
+
hooks: HOOKS
|
|
217
|
+
})), container);
|
|
218
|
+
});
|
|
219
|
+
const form = checkForm(container);
|
|
220
|
+
|
|
221
|
+
// Navigate to the "Are you a civil servant?" page.
|
|
222
|
+
const hub = form.childNodes[1]; // Hub = CYA
|
|
223
|
+
const [,, civilServantList] = hub.childNodes;
|
|
224
|
+
const link = getChangeLink(civilServantList);
|
|
225
|
+
_react.fireEvent.click(link, {});
|
|
226
|
+
|
|
227
|
+
// Should already be answered "Yes", so simply click "Continue".
|
|
228
|
+
const page = form.childNodes[0];
|
|
229
|
+
const continueButton = getContinueButton(page);
|
|
230
|
+
expect(ON_SUBMIT_CALLS.length).toEqual(0);
|
|
231
|
+
_react.fireEvent.click(continueButton, {});
|
|
232
|
+
expect(ON_SUBMIT_CALLS.length).toEqual(1);
|
|
233
|
+
expect(ON_SUBMIT_CALLS[0].type).toEqual(_models.PageAction.TYPES.SUBMIT);
|
|
234
|
+
expect(ON_SUBMIT_CALLS[0].payload.areYouACivilServant).toEqual('yes');
|
|
235
|
+
|
|
236
|
+
// And we should be kept on the same page.
|
|
237
|
+
expect(form.childNodes.length).toEqual(1); // Just the page.
|
|
238
|
+
const pageHeading = form.childNodes[0].childNodes[1];
|
|
239
|
+
expect(pageHeading.tagName).toEqual('H1');
|
|
240
|
+
expect(pageHeading.textContent).toEqual(_userProfile.default.pages[1].title);
|
|
241
|
+
});
|
|
242
|
+
it('should handle a page submission once regardless of how many times page action is clicked', async () => {
|
|
243
|
+
const ON_PAGE_CHANGE_CALLS = [];
|
|
244
|
+
const ON_PAGE_CHANGE = pageId => {
|
|
245
|
+
ON_PAGE_CHANGE_CALLS.push(pageId);
|
|
246
|
+
};
|
|
247
|
+
const ON_SUBMIT_CALLS = [];
|
|
248
|
+
const ON_SUBMIT = async (type, payload, onSuccess, onError, fieldName, fieldValue) => {
|
|
249
|
+
ON_SUBMIT_CALLS.push({
|
|
250
|
+
type,
|
|
251
|
+
payload,
|
|
252
|
+
onSuccess,
|
|
253
|
+
onError,
|
|
254
|
+
fieldName,
|
|
255
|
+
fieldValue
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
// mock a delay when submitting to the backend
|
|
259
|
+
await sleep(2000);
|
|
260
|
+
onSuccess();
|
|
261
|
+
};
|
|
262
|
+
const HOOKS = {
|
|
263
|
+
onSubmit: ON_SUBMIT,
|
|
264
|
+
onPageChange: ON_PAGE_CHANGE
|
|
265
|
+
};
|
|
266
|
+
(0, _testUtils.act)(() => {
|
|
267
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _firstForm.default, {
|
|
268
|
+
hooks: HOOKS,
|
|
269
|
+
type: _models.FormTypes.CYA
|
|
270
|
+
})), container);
|
|
271
|
+
});
|
|
272
|
+
const [,,,,, continueButtonGroup] = container.childNodes[0].childNodes[0].childNodes;
|
|
273
|
+
|
|
274
|
+
// go to first question page
|
|
275
|
+
const continueFormButton = continueButtonGroup.childNodes[0];
|
|
276
|
+
_react.fireEvent.click(continueFormButton);
|
|
277
|
+
const innerDiv = container.childNodes[0].childNodes[0];
|
|
278
|
+
|
|
279
|
+
// enter a value in the input field
|
|
280
|
+
const firstNameInput = innerDiv.childNodes[1].childNodes[2];
|
|
281
|
+
const EVENT = {
|
|
282
|
+
target: {
|
|
283
|
+
name: firstNameInput.id,
|
|
284
|
+
value: 'abc'
|
|
1029
285
|
}
|
|
1030
|
-
}
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
var ON_CANCEL_CALLS, ON_CANCEL, HOOKS, form, hub, _hub$childNodes6, civilServantList, link, page, cancel;
|
|
1034
|
-
return _regeneratorRuntime().wrap(function _callee36$(_context36) {
|
|
1035
|
-
while (1) switch (_context36.prev = _context36.next) {
|
|
1036
|
-
case 0:
|
|
1037
|
-
ON_CANCEL_CALLS = [];
|
|
1038
|
-
ON_CANCEL = function ON_CANCEL() {
|
|
1039
|
-
ON_CANCEL_CALLS.push(undefined);
|
|
1040
|
-
};
|
|
1041
|
-
HOOKS = {
|
|
1042
|
-
onCancel: ON_CANCEL
|
|
1043
|
-
};
|
|
1044
|
-
_context36.next = 5;
|
|
1045
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee35() {
|
|
1046
|
-
return _regeneratorRuntime().wrap(function _callee35$(_context35) {
|
|
1047
|
-
while (1) switch (_context35.prev = _context35.next) {
|
|
1048
|
-
case 0:
|
|
1049
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
1050
|
-
data: _userProfileData.default,
|
|
1051
|
-
hooks: HOOKS
|
|
1052
|
-
})), container);
|
|
1053
|
-
case 1:
|
|
1054
|
-
case "end":
|
|
1055
|
-
return _context35.stop();
|
|
1056
|
-
}
|
|
1057
|
-
}, _callee35);
|
|
1058
|
-
})));
|
|
1059
|
-
case 5:
|
|
1060
|
-
form = checkForm(container); // Navigate to the "Are you a civil servant?" page.
|
|
1061
|
-
hub = form.childNodes[1]; // Hub = CYA
|
|
1062
|
-
_hub$childNodes6 = _slicedToArray(hub.childNodes, 3), civilServantList = _hub$childNodes6[2];
|
|
1063
|
-
link = getChangeLink(civilServantList);
|
|
1064
|
-
_react.fireEvent.click(link, {});
|
|
286
|
+
};
|
|
287
|
+
_react.fireEvent.change(firstNameInput, EVENT);
|
|
288
|
+
const submitButton = innerDiv.childNodes[2].childNodes[0];
|
|
1065
289
|
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
cancel = getCancelButton(page);
|
|
1069
|
-
expect(ON_CANCEL_CALLS.length).toEqual(0);
|
|
1070
|
-
_react.fireEvent.click(cancel, {});
|
|
1071
|
-
expect(ON_CANCEL_CALLS.length).toEqual(1);
|
|
1072
|
-
case 15:
|
|
1073
|
-
case "end":
|
|
1074
|
-
return _context36.stop();
|
|
1075
|
-
}
|
|
1076
|
-
}, _callee36);
|
|
1077
|
-
})));
|
|
1078
|
-
it('should navigate to a specific page at the beginning of a task if it is set as the firstPage of a task', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee38() {
|
|
1079
|
-
var ON_SUBMIT_CALLS, ON_SUBMIT, HOOKS, TASK_LIST_NON_SEQUENTIAL, taskList, firstTask, newPage;
|
|
1080
|
-
return _regeneratorRuntime().wrap(function _callee38$(_context38) {
|
|
1081
|
-
while (1) switch (_context38.prev = _context38.next) {
|
|
1082
|
-
case 0:
|
|
1083
|
-
ON_SUBMIT_CALLS = [];
|
|
1084
|
-
ON_SUBMIT = function ON_SUBMIT(type, payload, onSuccess) {
|
|
1085
|
-
ON_SUBMIT_CALLS.push(payload);
|
|
1086
|
-
onSuccess();
|
|
1087
|
-
};
|
|
1088
|
-
HOOKS = {
|
|
1089
|
-
onSubmit: ON_SUBMIT
|
|
1090
|
-
};
|
|
1091
|
-
TASK_LIST_NON_SEQUENTIAL = JSON.parse(JSON.stringify(_taskList.default));
|
|
1092
|
-
TASK_LIST_NON_SEQUENTIAL.hub.nonSequential = true;
|
|
1093
|
-
_context38.next = 7;
|
|
1094
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee37() {
|
|
1095
|
-
return _regeneratorRuntime().wrap(function _callee37$(_context37) {
|
|
1096
|
-
while (1) switch (_context37.prev = _context37.next) {
|
|
1097
|
-
case 0:
|
|
1098
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, TASK_LIST_NON_SEQUENTIAL, {
|
|
1099
|
-
hooks: HOOKS
|
|
1100
|
-
})), container);
|
|
1101
|
-
case 1:
|
|
1102
|
-
case "end":
|
|
1103
|
-
return _context37.stop();
|
|
1104
|
-
}
|
|
1105
|
-
}, _callee37);
|
|
1106
|
-
})));
|
|
1107
|
-
case 7:
|
|
1108
|
-
taskList = container.childNodes[0].childNodes[1]; // Launch first task of second section
|
|
1109
|
-
firstTask = taskList.childNodes[5].childNodes[0].childNodes[0].childNodes[0];
|
|
1110
|
-
expect(firstTask.textContent).toEqual('People details');
|
|
1111
|
-
_react.fireEvent.click(firstTask, {});
|
|
290
|
+
// click on save and continue
|
|
291
|
+
_react.fireEvent.click(submitButton);
|
|
1112
292
|
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
expect(newPage.childNodes[0].textContent).toEqual('Surname');
|
|
1116
|
-
case 13:
|
|
1117
|
-
case "end":
|
|
1118
|
-
return _context38.stop();
|
|
1119
|
-
}
|
|
1120
|
-
}, _callee38);
|
|
1121
|
-
})));
|
|
1122
|
-
it('should handle page navigation correctly when hideBlankRows is true', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee40() {
|
|
1123
|
-
var ON_PAGE_CHANGE_CALLS, ON_PAGE_CHANGE, HOOKS, form, hub, _hub$childNodes7, lineManagerList, link, page, pageHeading, continueButton, newPageHeading;
|
|
1124
|
-
return _regeneratorRuntime().wrap(function _callee40$(_context40) {
|
|
1125
|
-
while (1) switch (_context40.prev = _context40.next) {
|
|
1126
|
-
case 0:
|
|
1127
|
-
ON_PAGE_CHANGE_CALLS = [];
|
|
1128
|
-
ON_PAGE_CHANGE = function ON_PAGE_CHANGE(pageId) {
|
|
1129
|
-
ON_PAGE_CHANGE_CALLS.push(pageId);
|
|
1130
|
-
};
|
|
1131
|
-
HOOKS = {
|
|
1132
|
-
onPageChange: ON_PAGE_CHANGE
|
|
1133
|
-
};
|
|
1134
|
-
_context40.next = 5;
|
|
1135
|
-
return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee39() {
|
|
1136
|
-
return _regeneratorRuntime().wrap(function _callee39$(_context39) {
|
|
1137
|
-
while (1) switch (_context39.prev = _context39.next) {
|
|
1138
|
-
case 0:
|
|
1139
|
-
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
1140
|
-
data: _userProfileData.default,
|
|
1141
|
-
hooks: HOOKS,
|
|
1142
|
-
hideBlankRows: true
|
|
1143
|
-
})), container);
|
|
1144
|
-
case 1:
|
|
1145
|
-
case "end":
|
|
1146
|
-
return _context39.stop();
|
|
1147
|
-
}
|
|
1148
|
-
}, _callee39);
|
|
1149
|
-
})));
|
|
1150
|
-
case 5:
|
|
1151
|
-
form = checkForm(container); // Navigate to the "Add or change a line manager" page.
|
|
1152
|
-
hub = form.childNodes[1]; // Hub = CYA
|
|
1153
|
-
_hub$childNodes7 = _slicedToArray(hub.childNodes, 4), lineManagerList = _hub$childNodes7[3];
|
|
1154
|
-
link = getChangeLink(lineManagerList);
|
|
1155
|
-
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(0);
|
|
1156
|
-
_react.fireEvent.click(link, {});
|
|
1157
|
-
expect(ON_PAGE_CHANGE_CALLS[0]).toEqual(_userProfile.default.pages[4].id);
|
|
293
|
+
// click on save and continue again
|
|
294
|
+
_react.fireEvent.click(submitButton);
|
|
1158
295
|
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
pageHeading = page.childNodes[0];
|
|
1162
|
-
expect(pageHeading.tagName).toEqual('H1');
|
|
1163
|
-
expect(pageHeading.textContent).toEqual(_userProfile.default.pages[4].title);
|
|
296
|
+
// click on save and continue a third time
|
|
297
|
+
_react.fireEvent.click(submitButton);
|
|
1164
298
|
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
299
|
+
// only expect one submit call to be made
|
|
300
|
+
expect(ON_SUBMIT_CALLS.length).toEqual(1);
|
|
301
|
+
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(1);
|
|
302
|
+
expect(ON_SUBMIT_CALLS[0].type).toEqual(_models.PageAction.TYPES.SAVE_AND_CONTINUE);
|
|
303
|
+
});
|
|
304
|
+
it('should handle a page submission repeatedly if ignoreSubmittingFlag is true', async () => {
|
|
305
|
+
const ON_PAGE_CHANGE_CALLS = [];
|
|
306
|
+
const ON_PAGE_CHANGE = pageId => {
|
|
307
|
+
ON_PAGE_CHANGE_CALLS.push(pageId);
|
|
308
|
+
};
|
|
309
|
+
const ON_SUBMIT_CALLS = [];
|
|
310
|
+
const ON_SUBMIT = async (type, payload, onSuccess, onError, fieldName, fieldValue) => {
|
|
311
|
+
ON_SUBMIT_CALLS.push({
|
|
312
|
+
type,
|
|
313
|
+
payload,
|
|
314
|
+
onSuccess,
|
|
315
|
+
onError,
|
|
316
|
+
fieldName,
|
|
317
|
+
fieldValue
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
// mock a delay when submitting to the backend
|
|
321
|
+
await sleep(2000);
|
|
322
|
+
onSuccess();
|
|
323
|
+
};
|
|
324
|
+
const HOOKS = {
|
|
325
|
+
onSubmit: ON_SUBMIT,
|
|
326
|
+
onPageChange: ON_PAGE_CHANGE
|
|
327
|
+
};
|
|
328
|
+
const formDefinition = {
|
|
329
|
+
..._userProfile.default
|
|
330
|
+
};
|
|
331
|
+
formDefinition.pages[1].actions = [{
|
|
332
|
+
type: 'saveAndContinue',
|
|
333
|
+
page: 'test',
|
|
334
|
+
ignoreSubmittingFlag: true
|
|
335
|
+
}, {
|
|
336
|
+
type: 'cancel'
|
|
337
|
+
}];
|
|
338
|
+
(0, _testUtils.act)(() => {
|
|
339
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, formDefinition, {
|
|
340
|
+
data: _userProfileData.default,
|
|
341
|
+
hooks: HOOKS
|
|
342
|
+
})), container);
|
|
343
|
+
});
|
|
344
|
+
const form = checkForm(container);
|
|
345
|
+
|
|
346
|
+
// Navigate to the "Are you a civil servant?" page.
|
|
347
|
+
const hub = form.childNodes[1]; // Hub = CYA
|
|
348
|
+
const [,, civilServantList] = hub.childNodes;
|
|
349
|
+
const link = getChangeLink(civilServantList);
|
|
350
|
+
_react.fireEvent.click(link, {});
|
|
351
|
+
|
|
352
|
+
// Should already be answered "Yes", so simply click "Continue".
|
|
353
|
+
const page = form.childNodes[0];
|
|
354
|
+
const continueButton = getContinueButton(page);
|
|
355
|
+
expect(ON_SUBMIT_CALLS.length).toEqual(0);
|
|
356
|
+
_react.fireEvent.click(continueButton, {});
|
|
357
|
+
expect(ON_SUBMIT_CALLS.length).toEqual(1);
|
|
358
|
+
expect(ON_SUBMIT_CALLS[0].type).toEqual(_models.PageAction.TYPES.SAVE_AND_CONTINUE);
|
|
359
|
+
|
|
360
|
+
// click on save and continue
|
|
361
|
+
_react.fireEvent.click(continueButton);
|
|
362
|
+
|
|
363
|
+
// click on save and continue again
|
|
364
|
+
_react.fireEvent.click(continueButton);
|
|
365
|
+
|
|
366
|
+
// click on save and continue a third time
|
|
367
|
+
_react.fireEvent.click(continueButton);
|
|
368
|
+
|
|
369
|
+
// expect all submit calls to be made
|
|
370
|
+
expect(ON_SUBMIT_CALLS.length).toEqual(4);
|
|
371
|
+
});
|
|
372
|
+
it('should handle page navigation', async () => {
|
|
373
|
+
const ON_PAGE_CHANGE_CALLS = [];
|
|
374
|
+
const ON_PAGE_CHANGE = pageId => {
|
|
375
|
+
ON_PAGE_CHANGE_CALLS.push(pageId);
|
|
376
|
+
};
|
|
377
|
+
const HOOKS = {
|
|
378
|
+
onPageChange: ON_PAGE_CHANGE
|
|
379
|
+
};
|
|
380
|
+
await (0, _testUtils.act)(async () => {
|
|
381
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
382
|
+
data: _userProfileData.default,
|
|
383
|
+
hooks: HOOKS
|
|
384
|
+
})), container);
|
|
385
|
+
});
|
|
386
|
+
const form = checkForm(container);
|
|
387
|
+
|
|
388
|
+
// Navigate to the "Add or change a line manager" page.
|
|
389
|
+
const hub = form.childNodes[1]; // Hub = CYA
|
|
390
|
+
const [,,,,, lineManagerList] = hub.childNodes;
|
|
391
|
+
const link = getChangeLink(lineManagerList);
|
|
392
|
+
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(0);
|
|
393
|
+
_react.fireEvent.click(link, {});
|
|
394
|
+
expect(ON_PAGE_CHANGE_CALLS[0]).toEqual(_userProfile.default.pages[4].id);
|
|
395
|
+
|
|
396
|
+
// Should be on the page explaining what changing the line manager means.
|
|
397
|
+
const page = form.childNodes[0];
|
|
398
|
+
const pageHeading = page.childNodes[0];
|
|
399
|
+
expect(pageHeading.tagName).toEqual('H1');
|
|
400
|
+
expect(pageHeading.textContent).toEqual(_userProfile.default.pages[4].title);
|
|
401
|
+
|
|
402
|
+
// Now click on the "Continue" button on here.
|
|
403
|
+
const continueButton = getContinueButton(page);
|
|
404
|
+
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(1);
|
|
405
|
+
_react.fireEvent.click(continueButton, {});
|
|
406
|
+
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(2);
|
|
407
|
+
expect(ON_PAGE_CHANGE_CALLS[1]).toEqual(_userProfile.default.pages[5].id);
|
|
408
|
+
const newPageHeading = form.childNodes[0].childNodes[0];
|
|
409
|
+
expect(newPageHeading.tagName).toEqual('H1');
|
|
410
|
+
expect(newPageHeading.textContent).toEqual(_userProfile.default.pages[5].title);
|
|
411
|
+
});
|
|
412
|
+
it('should show no title when hide_title is set to true', async () => {
|
|
413
|
+
await (0, _testUtils.act)(async () => {
|
|
414
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
415
|
+
data: _userProfileData.default,
|
|
416
|
+
hide_title: true
|
|
417
|
+
})), container);
|
|
418
|
+
});
|
|
419
|
+
const form = checkForm(container);
|
|
420
|
+
expect(form.childNodes.length).toEqual(1); // Hub page (= CYA)
|
|
421
|
+
const hub = form.childNodes[0];
|
|
422
|
+
expect(hub.tagName).toEqual('DIV');
|
|
423
|
+
expect(hub.classList).toContain(_CheckYourAnswers.DEFAULT_CLASS);
|
|
424
|
+
});
|
|
425
|
+
it('should render a task list', async () => {
|
|
426
|
+
await (0, _testUtils.act)(async () => {
|
|
427
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _taskList.default), container);
|
|
428
|
+
});
|
|
429
|
+
const taskList = container.childNodes[0].childNodes[1];
|
|
430
|
+
expect(taskList.classList).toContain(_TaskList.DEFAULT_CLASS);
|
|
431
|
+
});
|
|
432
|
+
it('should render a cya page', async () => {
|
|
433
|
+
await (0, _testUtils.act)(async () => {
|
|
434
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _firstForm.default), container);
|
|
435
|
+
});
|
|
436
|
+
const cya = container.childNodes[0];
|
|
437
|
+
expect(cya.classList).toContain('hods-form');
|
|
438
|
+
});
|
|
439
|
+
it('should load task list with notes', async () => {
|
|
440
|
+
const ON_SUBMIT_CALLS = [];
|
|
441
|
+
const ON_SUBMIT = (type, payload, onSuccess) => {
|
|
442
|
+
ON_SUBMIT_CALLS.push(payload);
|
|
443
|
+
onSuccess();
|
|
444
|
+
};
|
|
445
|
+
const HOOKS = {
|
|
446
|
+
onSubmit: ON_SUBMIT
|
|
447
|
+
};
|
|
448
|
+
const TASK_LIST_WITH_NOTES = JSON.parse(JSON.stringify(_taskList.default));
|
|
449
|
+
TASK_LIST_WITH_NOTES.hub.notes = {
|
|
450
|
+
title: "test title",
|
|
451
|
+
text: "test text",
|
|
452
|
+
show_when: [{
|
|
453
|
+
"op": "=",
|
|
454
|
+
"field": "areYouACivilServant",
|
|
455
|
+
"value": "yes"
|
|
456
|
+
}]
|
|
457
|
+
};
|
|
458
|
+
await (0, _testUtils.act)(async () => {
|
|
459
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, TASK_LIST_WITH_NOTES, {
|
|
460
|
+
data: _userProfileData.default,
|
|
461
|
+
hooks: HOOKS
|
|
462
|
+
})), container);
|
|
463
|
+
});
|
|
464
|
+
const taskList = container.childNodes[0].childNodes[1];
|
|
465
|
+
expect(taskList.childNodes[5].textContent).toEqual("test text");
|
|
466
|
+
expect(taskList.childNodes[5].classList).toContain('govuk-textarea');
|
|
467
|
+
});
|
|
468
|
+
it('should not load task list with notes', async () => {
|
|
469
|
+
const ON_SUBMIT_CALLS = [];
|
|
470
|
+
const ON_SUBMIT = (type, payload, onSuccess) => {
|
|
471
|
+
ON_SUBMIT_CALLS.push(payload);
|
|
472
|
+
onSuccess();
|
|
473
|
+
};
|
|
474
|
+
const HOOKS = {
|
|
475
|
+
onSubmit: ON_SUBMIT
|
|
476
|
+
};
|
|
477
|
+
const TASK_LIST_WITH_NOTES = JSON.parse(JSON.stringify(_taskList.default));
|
|
478
|
+
TASK_LIST_WITH_NOTES.hub.notes = {
|
|
479
|
+
title: "test title",
|
|
480
|
+
text: "test text",
|
|
481
|
+
show_when: [{
|
|
482
|
+
"op": "!=",
|
|
483
|
+
"field": "changeSummary",
|
|
484
|
+
"value": undefined
|
|
485
|
+
}]
|
|
486
|
+
};
|
|
487
|
+
await (0, _testUtils.act)(async () => {
|
|
488
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, TASK_LIST_WITH_NOTES, {
|
|
489
|
+
data: _userProfileData.default,
|
|
490
|
+
hooks: HOOKS
|
|
491
|
+
})), container);
|
|
492
|
+
});
|
|
493
|
+
const taskList = container.childNodes[0].childNodes[1];
|
|
494
|
+
taskList.childNodes.forEach(child => {
|
|
495
|
+
// eslint-disable-next-line no-console
|
|
496
|
+
console.log("taskList, child = ".concat(JSON.stringify(child.textContent)));
|
|
497
|
+
});
|
|
498
|
+
expect(taskList.childNodes[5].textContent).not.toEqual("test text");
|
|
499
|
+
expect(taskList.childNodes[5].classList).not.toContain('govuk-textarea');
|
|
500
|
+
});
|
|
501
|
+
it('should handle navigating between task list pages', async () => {
|
|
502
|
+
const ON_SUBMIT_CALLS = [];
|
|
503
|
+
const ON_SUBMIT = (type, payload, onSuccess) => {
|
|
504
|
+
ON_SUBMIT_CALLS.push(payload);
|
|
505
|
+
onSuccess();
|
|
506
|
+
};
|
|
507
|
+
const HOOKS = {
|
|
508
|
+
onSubmit: ON_SUBMIT
|
|
509
|
+
};
|
|
510
|
+
await (0, _testUtils.act)(async () => {
|
|
511
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _taskList.default, {
|
|
512
|
+
hooks: HOOKS
|
|
513
|
+
})), container);
|
|
514
|
+
});
|
|
515
|
+
const taskList = container.childNodes[0].childNodes[1];
|
|
516
|
+
|
|
517
|
+
// Check statuses are correct
|
|
518
|
+
let firstTaskStatus = taskList.childNodes[3].childNodes[0].childNodes[1];
|
|
519
|
+
expect(firstTaskStatus.textContent).toEqual(_models.TaskStates.DETAILS[_models.TaskStates.TYPES.NOT_STARTED].label);
|
|
520
|
+
let secondTaskStatus = taskList.childNodes[3].childNodes[1].childNodes[1];
|
|
521
|
+
expect(secondTaskStatus.textContent).toEqual(_models.TaskStates.DETAILS[_models.TaskStates.TYPES.CANNOT_START_YET].label);
|
|
522
|
+
|
|
523
|
+
// Launch first task
|
|
524
|
+
const firstTask = taskList.childNodes[3].childNodes[0].childNodes[0].childNodes[0];
|
|
525
|
+
expect(firstTask.textContent).toEqual('Date, location and mode details');
|
|
526
|
+
_react.fireEvent.click(firstTask, {});
|
|
527
|
+
|
|
528
|
+
// Fill first page and navigate
|
|
529
|
+
let newPage = container.childNodes[0].childNodes[0];
|
|
530
|
+
expect(newPage.childNodes[0].textContent).toEqual('Event Date');
|
|
531
|
+
const fieldset = newPage.childNodes[1].childNodes[0];
|
|
532
|
+
// child nodes of fieldset are legend and date
|
|
533
|
+
setDate(fieldset.children[1], ['7', '7', '2022']);
|
|
534
|
+
let continueButton = newPage.childNodes[2].childNodes[0];
|
|
535
|
+
_react.fireEvent.click(continueButton, {});
|
|
536
|
+
|
|
537
|
+
// Fill second page and navigate
|
|
538
|
+
newPage = container.childNodes[0].childNodes[0];
|
|
539
|
+
expect(newPage.childNodes[0].textContent).toEqual('Event Mode');
|
|
540
|
+
const seaButton = newPage.childNodes[1].childNodes[0].childNodes[2].childNodes[0];
|
|
541
|
+
expect(seaButton.textContent).toEqual('Sea');
|
|
542
|
+
_react.fireEvent.click(seaButton.childNodes[0], {});
|
|
543
|
+
continueButton = newPage.childNodes[2].childNodes[0];
|
|
544
|
+
_react.fireEvent.click(continueButton, {});
|
|
545
|
+
|
|
546
|
+
// Click change to mode on CYA page
|
|
547
|
+
const cyaPageChange = container.childNodes[0].childNodes[0];
|
|
548
|
+
expect(cyaPageChange.childNodes[0].textContent).toEqual('Check your answers');
|
|
549
|
+
const modeChangeLink = cyaPageChange.childNodes[4].childNodes[0].childNodes[0].childNodes[2].childNodes[0];
|
|
550
|
+
expect(modeChangeLink.textContent).toEqual('Change Event Mode');
|
|
551
|
+
_react.fireEvent.click(modeChangeLink, {});
|
|
552
|
+
const changePage = container.childNodes[0].childNodes[0];
|
|
553
|
+
expect(changePage.childNodes[0].textContent).toEqual('Event Mode');
|
|
554
|
+
// Click on radio for 'Air'
|
|
555
|
+
const airButton = changePage.childNodes[1].childNodes[0].childNodes[2].childNodes[1];
|
|
556
|
+
expect(airButton.textContent).toEqual('Air');
|
|
557
|
+
_react.fireEvent.click(airButton.childNodes[0]);
|
|
558
|
+
// Continue again to CYA page
|
|
559
|
+
expect(changePage.childNodes[2].childNodes[0].textContent).toEqual('Save and continue');
|
|
560
|
+
continueButton = changePage.childNodes[2].childNodes[0];
|
|
561
|
+
_react.fireEvent.click(continueButton, {});
|
|
562
|
+
|
|
563
|
+
// Continue on from CYA page
|
|
564
|
+
const cyaPage = container.childNodes[0].childNodes[0];
|
|
565
|
+
expect(cyaPage.childNodes[0].textContent).toEqual('Check your answers');
|
|
566
|
+
expect(cyaPage.childNodes[5].childNodes[0].textContent).toEqual('Save and continue');
|
|
567
|
+
expect(cyaPage.childNodes[5].childNodes[1].textContent).toEqual('Save and return later');
|
|
568
|
+
_react.fireEvent.click(cyaPage.childNodes[5].childNodes[0], {});
|
|
569
|
+
|
|
570
|
+
// Should be back at task list
|
|
571
|
+
expect(container.childNodes[0].childNodes[0].textContent).toEqual('Task List Form');
|
|
572
|
+
|
|
573
|
+
// Check statuses are correct
|
|
574
|
+
firstTaskStatus = container.childNodes[0].childNodes[1].childNodes[3].childNodes[0].childNodes[1];
|
|
575
|
+
expect(firstTaskStatus.textContent).toEqual(_models.TaskStates.DETAILS[_models.TaskStates.TYPES.COMPLETE].label);
|
|
576
|
+
secondTaskStatus = container.childNodes[0].childNodes[1].childNodes[3].childNodes[1].childNodes[1];
|
|
577
|
+
expect(secondTaskStatus.textContent).toEqual(_models.TaskStates.DETAILS[_models.TaskStates.TYPES.NOT_STARTED].label);
|
|
578
|
+
|
|
579
|
+
// Check final data submitted to backend is as expected
|
|
580
|
+
const finalSubmit = ON_SUBMIT_CALLS[ON_SUBMIT_CALLS.length - 1];
|
|
581
|
+
expect(finalSubmit.date).toEqual('7-7-2022');
|
|
582
|
+
expect(finalSubmit.mode).toEqual('air');
|
|
583
|
+
expect(finalSubmit.formStatus.tasks['Date, location and mode details'].complete).toEqual(true);
|
|
584
|
+
});
|
|
585
|
+
it('should go straight to CYA page if a complete task is selected', async () => {
|
|
586
|
+
const ON_SUBMIT = (type, payload, onSuccess) => {
|
|
587
|
+
onSuccess();
|
|
588
|
+
};
|
|
589
|
+
const HOOKS = {
|
|
590
|
+
onSubmit: ON_SUBMIT
|
|
591
|
+
};
|
|
592
|
+
await (0, _testUtils.act)(async () => {
|
|
593
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _taskList.default, {
|
|
594
|
+
hooks: HOOKS
|
|
595
|
+
})), container);
|
|
596
|
+
});
|
|
597
|
+
const taskList = container.childNodes[0].childNodes[1];
|
|
598
|
+
|
|
599
|
+
// Launch first task
|
|
600
|
+
_react.fireEvent.click(taskList.childNodes[3].childNodes[0].childNodes[0].childNodes[0], {});
|
|
601
|
+
|
|
602
|
+
// Fill first page and navigate
|
|
603
|
+
let newPage = container.childNodes[0].childNodes[0];
|
|
604
|
+
const fieldset = newPage.childNodes[1].childNodes[0];
|
|
605
|
+
setDate(fieldset.children[1], ['7', '7', '2022']);
|
|
606
|
+
// child nodes of fieldset are legend and date
|
|
607
|
+
|
|
608
|
+
_react.fireEvent.click(newPage.childNodes[2].childNodes[0], {});
|
|
609
|
+
|
|
610
|
+
// Fill second page and navigate
|
|
611
|
+
newPage = container.childNodes[0].childNodes[0];
|
|
612
|
+
_react.fireEvent.click(newPage.childNodes[1].childNodes[0].childNodes[2].childNodes[0].childNodes[0], {});
|
|
613
|
+
_react.fireEvent.click(newPage.childNodes[2].childNodes[0], {});
|
|
614
|
+
|
|
615
|
+
// Continue on from CYA page
|
|
616
|
+
_react.fireEvent.click(container.childNodes[0].childNodes[0].childNodes[5].childNodes[0], {});
|
|
617
|
+
|
|
618
|
+
// Launch same task again
|
|
619
|
+
_react.fireEvent.click(container.childNodes[0].childNodes[1].childNodes[3].childNodes[0].childNodes[0].childNodes[0], {});
|
|
620
|
+
|
|
621
|
+
// Should be at CYA page
|
|
622
|
+
expect(container.childNodes[0].childNodes[0].childNodes[0].textContent).toEqual('Check your answers');
|
|
623
|
+
});
|
|
624
|
+
it('should go to incomplete page when selecting in-progress task', async () => {
|
|
625
|
+
const ON_SUBMIT = (type, payload, onSuccess) => {
|
|
626
|
+
onSuccess();
|
|
627
|
+
};
|
|
628
|
+
const HOOKS = {
|
|
629
|
+
onSubmit: ON_SUBMIT
|
|
630
|
+
};
|
|
631
|
+
const DATA = {
|
|
632
|
+
"date": "7-7-2022",
|
|
633
|
+
"formStatus": {
|
|
634
|
+
"tasks": {
|
|
635
|
+
"Date, location and mode details": {
|
|
636
|
+
"complete": false,
|
|
637
|
+
"currentPage": "eventMode"
|
|
638
|
+
}
|
|
639
|
+
},
|
|
640
|
+
"taskPage": "eventMode"
|
|
1177
641
|
}
|
|
1178
|
-
}
|
|
1179
|
-
|
|
642
|
+
};
|
|
643
|
+
await (0, _testUtils.act)(async () => {
|
|
644
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _taskList.default, {
|
|
645
|
+
hooks: HOOKS,
|
|
646
|
+
data: DATA
|
|
647
|
+
})), container);
|
|
648
|
+
});
|
|
649
|
+
const taskList = container.childNodes[0].childNodes[1];
|
|
650
|
+
|
|
651
|
+
// Launch first task
|
|
652
|
+
_react.fireEvent.click(taskList.childNodes[3].childNodes[0].childNodes[0].childNodes[0], {});
|
|
653
|
+
|
|
654
|
+
// Should be at Event Mode page
|
|
655
|
+
expect(container.childNodes[0].childNodes[0].childNodes[0].textContent).toEqual('Event Mode');
|
|
656
|
+
});
|
|
657
|
+
it('should go to the first page of a complete task if noTaskCYAs specified', async () => {
|
|
658
|
+
const ON_SUBMIT = (type, payload, onSuccess) => {
|
|
659
|
+
onSuccess();
|
|
660
|
+
};
|
|
661
|
+
const HOOKS = {
|
|
662
|
+
onSubmit: ON_SUBMIT
|
|
663
|
+
};
|
|
664
|
+
const TASK_LIST_WITH_NO_TASK_CYAS = JSON.parse(JSON.stringify(_taskList.default));
|
|
665
|
+
TASK_LIST_WITH_NO_TASK_CYAS.hub.noTaskCYAs = true;
|
|
666
|
+
TASK_LIST_WITH_NO_TASK_CYAS.pages[1].actions[0] = {
|
|
667
|
+
type: 'save',
|
|
668
|
+
complete: true
|
|
669
|
+
};
|
|
670
|
+
await (0, _testUtils.act)(async () => {
|
|
671
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, TASK_LIST_WITH_NO_TASK_CYAS, {
|
|
672
|
+
hooks: HOOKS
|
|
673
|
+
})), container);
|
|
674
|
+
});
|
|
675
|
+
const taskList = container.childNodes[0].childNodes[1];
|
|
676
|
+
|
|
677
|
+
// Launch first task
|
|
678
|
+
_react.fireEvent.click(taskList.childNodes[3].childNodes[0].childNodes[0].childNodes[0], {});
|
|
679
|
+
|
|
680
|
+
// Fill first page and navigate
|
|
681
|
+
let newPage = container.childNodes[0].childNodes[0];
|
|
682
|
+
const fieldset = newPage.childNodes[1].childNodes[0];
|
|
683
|
+
setDate(fieldset.children[1], ['7', '7', '2022']);
|
|
684
|
+
_react.fireEvent.click(newPage.childNodes[2].childNodes[0], {});
|
|
685
|
+
|
|
686
|
+
// Fill second page
|
|
687
|
+
newPage = container.childNodes[0].childNodes[0];
|
|
688
|
+
// expect(newPage.childNodes[1].childNodes[0].childNodes[2].childNodes[0].childNodes[0]).toEqual('');
|
|
689
|
+
_react.fireEvent.click(newPage.childNodes[1].childNodes[0].childNodes[2].childNodes[0].childNodes[0], {});
|
|
690
|
+
_react.fireEvent.click(newPage.childNodes[2].childNodes[0], {});
|
|
691
|
+
|
|
692
|
+
// Launch same task again
|
|
693
|
+
_react.fireEvent.click(container.childNodes[0].childNodes[1].childNodes[3].childNodes[0].childNodes[0].childNodes[0], {});
|
|
694
|
+
|
|
695
|
+
// Should be on the first page
|
|
696
|
+
expect(container.childNodes[0].childNodes[0].childNodes[0].textContent).toEqual('Event Date');
|
|
697
|
+
});
|
|
698
|
+
it('should handle cancellation from a page', async () => {
|
|
699
|
+
const ON_CANCEL_CALLS = [];
|
|
700
|
+
const ON_CANCEL = () => {
|
|
701
|
+
ON_CANCEL_CALLS.push(undefined);
|
|
702
|
+
};
|
|
703
|
+
const HOOKS = {
|
|
704
|
+
onCancel: ON_CANCEL
|
|
705
|
+
};
|
|
706
|
+
await (0, _testUtils.act)(async () => {
|
|
707
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
708
|
+
data: _userProfileData.default,
|
|
709
|
+
hooks: HOOKS
|
|
710
|
+
})), container);
|
|
711
|
+
});
|
|
712
|
+
const form = checkForm(container);
|
|
713
|
+
|
|
714
|
+
// Navigate to the "Are you a civil servant?" page.
|
|
715
|
+
const hub = form.childNodes[1]; // Hub = CYA
|
|
716
|
+
const [,, civilServantList] = hub.childNodes;
|
|
717
|
+
const link = getChangeLink(civilServantList);
|
|
718
|
+
_react.fireEvent.click(link, {});
|
|
719
|
+
|
|
720
|
+
// Should already be answered "Yes", so simply click "Continue".
|
|
721
|
+
const page = form.childNodes[0];
|
|
722
|
+
const cancel = getCancelButton(page);
|
|
723
|
+
expect(ON_CANCEL_CALLS.length).toEqual(0);
|
|
724
|
+
_react.fireEvent.click(cancel, {});
|
|
725
|
+
expect(ON_CANCEL_CALLS.length).toEqual(1);
|
|
726
|
+
});
|
|
727
|
+
it('should navigate to a specific page at the beginning of a task if it is set as the firstPage of a task', async () => {
|
|
728
|
+
const ON_SUBMIT_CALLS = [];
|
|
729
|
+
const ON_SUBMIT = (type, payload, onSuccess) => {
|
|
730
|
+
ON_SUBMIT_CALLS.push(payload);
|
|
731
|
+
onSuccess();
|
|
732
|
+
};
|
|
733
|
+
const HOOKS = {
|
|
734
|
+
onSubmit: ON_SUBMIT
|
|
735
|
+
};
|
|
736
|
+
const TASK_LIST_NON_SEQUENTIAL = JSON.parse(JSON.stringify(_taskList.default));
|
|
737
|
+
TASK_LIST_NON_SEQUENTIAL.hub.nonSequential = true;
|
|
738
|
+
await (0, _testUtils.act)(async () => {
|
|
739
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, TASK_LIST_NON_SEQUENTIAL, {
|
|
740
|
+
hooks: HOOKS
|
|
741
|
+
})), container);
|
|
742
|
+
});
|
|
743
|
+
const taskList = container.childNodes[0].childNodes[1];
|
|
744
|
+
|
|
745
|
+
// Launch first task of second section
|
|
746
|
+
const firstTask = taskList.childNodes[5].childNodes[0].childNodes[0].childNodes[0];
|
|
747
|
+
expect(firstTask.textContent).toEqual('People details');
|
|
748
|
+
_react.fireEvent.click(firstTask, {});
|
|
749
|
+
|
|
750
|
+
// Should be at Surname page
|
|
751
|
+
const newPage = container.childNodes[0].childNodes[0];
|
|
752
|
+
expect(newPage.childNodes[0].textContent).toEqual('Surname');
|
|
753
|
+
});
|
|
754
|
+
it('should handle page navigation correctly when hideBlankRows is true', async () => {
|
|
755
|
+
const ON_PAGE_CHANGE_CALLS = [];
|
|
756
|
+
const ON_PAGE_CHANGE = pageId => {
|
|
757
|
+
ON_PAGE_CHANGE_CALLS.push(pageId);
|
|
758
|
+
};
|
|
759
|
+
const HOOKS = {
|
|
760
|
+
onPageChange: ON_PAGE_CHANGE
|
|
761
|
+
};
|
|
762
|
+
await (0, _testUtils.act)(async () => {
|
|
763
|
+
(0, _reactDom.render)( /*#__PURE__*/_react2.default.createElement(_FormRenderer.default, _extends({}, _userProfile.default, {
|
|
764
|
+
data: _userProfileData.default,
|
|
765
|
+
hooks: HOOKS,
|
|
766
|
+
hideBlankRows: true
|
|
767
|
+
})), container);
|
|
768
|
+
});
|
|
769
|
+
const form = checkForm(container);
|
|
770
|
+
|
|
771
|
+
// Navigate to the "Add or change a line manager" page.
|
|
772
|
+
const hub = form.childNodes[1]; // Hub = CYA
|
|
773
|
+
const [,,, lineManagerList] = hub.childNodes;
|
|
774
|
+
const link = getChangeLink(lineManagerList);
|
|
775
|
+
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(0);
|
|
776
|
+
_react.fireEvent.click(link, {});
|
|
777
|
+
expect(ON_PAGE_CHANGE_CALLS[0]).toEqual(_userProfile.default.pages[4].id);
|
|
778
|
+
|
|
779
|
+
// Should be on the page explaining what changing the line manager means.
|
|
780
|
+
const page = form.childNodes[0];
|
|
781
|
+
const pageHeading = page.childNodes[0];
|
|
782
|
+
expect(pageHeading.tagName).toEqual('H1');
|
|
783
|
+
expect(pageHeading.textContent).toEqual(_userProfile.default.pages[4].title);
|
|
784
|
+
|
|
785
|
+
// Now click on the "Continue" button on here.
|
|
786
|
+
const continueButton = getContinueButton(page);
|
|
787
|
+
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(1);
|
|
788
|
+
_react.fireEvent.click(continueButton, {});
|
|
789
|
+
expect(ON_PAGE_CHANGE_CALLS.length).toEqual(2);
|
|
790
|
+
expect(ON_PAGE_CHANGE_CALLS[1]).toEqual(_userProfile.default.pages[5].id);
|
|
791
|
+
const newPageHeading = form.childNodes[0].childNodes[0];
|
|
792
|
+
expect(newPageHeading.tagName).toEqual('H1');
|
|
793
|
+
expect(newPageHeading.textContent).toEqual(_userProfile.default.pages[5].title);
|
|
794
|
+
});
|
|
1180
795
|
});
|
|
1181
796
|
});
|