@ukhomeoffice/cop-react-form-renderer 5.14.2 → 5.14.4

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.
Files changed (328) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +15 -15
  2. package/dist/components/CheckYourAnswers/Answer.test.js +94 -128
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +99 -129
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +291 -501
  5. package/dist/components/CheckYourAnswers/index.js +2 -3
  6. package/dist/components/CollectionPage/CollectionPage.js +64 -58
  7. package/dist/components/CollectionPage/CollectionPage.test.js +212 -238
  8. package/dist/components/CollectionPage/index.js +2 -3
  9. package/dist/components/FormComponent/Collection.js +77 -113
  10. package/dist/components/FormComponent/Collection.test.js +688 -787
  11. package/dist/components/FormComponent/Container.js +44 -43
  12. package/dist/components/FormComponent/Container.test.js +316 -346
  13. package/dist/components/FormComponent/FormComponent.js +58 -64
  14. package/dist/components/FormComponent/FormComponent.test.js +180 -219
  15. package/dist/components/FormComponent/helpers/addLabel.js +5 -9
  16. package/dist/components/FormComponent/helpers/getComponentDisabled.js +2 -3
  17. package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +8 -8
  18. package/dist/components/FormComponent/helpers/getComponentError.js +4 -7
  19. package/dist/components/FormComponent/helpers/getComponentError.test.js +15 -15
  20. package/dist/components/FormComponent/helpers/getComponentFieldSet.js +2 -2
  21. package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +7 -7
  22. package/dist/components/FormComponent/helpers/index.js +5 -5
  23. package/dist/components/FormComponent/index.js +2 -3
  24. package/dist/components/FormPage/FormPage.js +65 -79
  25. package/dist/components/FormPage/FormPage.test.js +134 -170
  26. package/dist/components/FormPage/index.js +2 -3
  27. package/dist/components/FormRenderer/FormRenderer.js +151 -193
  28. package/dist/components/FormRenderer/FormRenderer.test.js +598 -920
  29. package/dist/components/FormRenderer/handlers/cyaAction.js +4 -5
  30. package/dist/components/FormRenderer/handlers/getPageId.js +2 -5
  31. package/dist/components/FormRenderer/handlers/getPageId.test.js +15 -15
  32. package/dist/components/FormRenderer/handlers/handlers.test.js +33 -33
  33. package/dist/components/FormRenderer/handlers/index.js +3 -4
  34. package/dist/components/FormRenderer/handlers/navigate.js +5 -6
  35. package/dist/components/FormRenderer/handlers/submissionError.js +2 -3
  36. package/dist/components/FormRenderer/helpers/canActionProceed.js +2 -3
  37. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +10 -10
  38. package/dist/components/FormRenderer/helpers/canCYASubmit.js +2 -5
  39. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +17 -21
  40. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +19 -27
  41. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +17 -17
  42. package/dist/components/FormRenderer/helpers/getCYA.js +6 -9
  43. package/dist/components/FormRenderer/helpers/getCYA.test.js +12 -12
  44. package/dist/components/FormRenderer/helpers/getFormState.js +7 -10
  45. package/dist/components/FormRenderer/helpers/getFormState.test.js +11 -11
  46. package/dist/components/FormRenderer/helpers/getNextPageId.js +19 -34
  47. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +68 -68
  48. package/dist/components/FormRenderer/helpers/getPage.js +3 -6
  49. package/dist/components/FormRenderer/helpers/getPage.test.js +12 -12
  50. package/dist/components/FormRenderer/helpers/getRelevantPages.js +9 -13
  51. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +15 -15
  52. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +12 -13
  53. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +98 -92
  54. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +66 -66
  55. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +72 -79
  56. package/dist/components/FormRenderer/helpers/index.js +3 -4
  57. package/dist/components/FormRenderer/index.js +2 -3
  58. package/dist/components/FormRenderer/onCYAAction.js +52 -62
  59. package/dist/components/FormRenderer/onCYAAction.test.js +146 -138
  60. package/dist/components/FormRenderer/onPageAction.js +48 -47
  61. package/dist/components/FormRenderer/onPageAction.test.js +219 -205
  62. package/dist/components/FormRenderer/onTaskAction.js +12 -17
  63. package/dist/components/FormRenderer/onTaskAction.test.js +94 -89
  64. package/dist/components/PageActions/ActionButton.js +15 -19
  65. package/dist/components/PageActions/ActionButton.test.js +58 -79
  66. package/dist/components/PageActions/PageActions.js +12 -13
  67. package/dist/components/PageActions/PageActions.test.js +88 -116
  68. package/dist/components/PageActions/index.js +2 -3
  69. package/dist/components/SummaryList/GroupAction.js +15 -23
  70. package/dist/components/SummaryList/GroupAction.test.js +41 -37
  71. package/dist/components/SummaryList/RowAction.js +14 -19
  72. package/dist/components/SummaryList/RowAction.test.js +41 -37
  73. package/dist/components/SummaryList/SummaryList.js +25 -30
  74. package/dist/components/SummaryList/SummaryList.test.js +160 -182
  75. package/dist/components/SummaryList/SummaryListHeadingRow.js +9 -8
  76. package/dist/components/SummaryList/SummaryListRow.js +9 -8
  77. package/dist/components/SummaryList/SummaryListTitleRow.js +8 -7
  78. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +5 -8
  79. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +24 -24
  80. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +5 -8
  81. package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +24 -24
  82. package/dist/components/SummaryList/helpers/index.js +2 -2
  83. package/dist/components/SummaryList/index.js +2 -3
  84. package/dist/components/TaskList/Task.js +22 -33
  85. package/dist/components/TaskList/Task.test.js +84 -77
  86. package/dist/components/TaskList/TaskList.js +46 -75
  87. package/dist/components/TaskList/TaskList.test.js +118 -113
  88. package/dist/components/TaskList/TaskState.js +9 -9
  89. package/dist/components/TaskList/TaskState.test.js +56 -49
  90. package/dist/components/TaskList/index.js +2 -3
  91. package/dist/components/index.js +8 -8
  92. package/dist/context/HooksContext/HooksContext.js +59 -85
  93. package/dist/context/HooksContext/HooksContext.test.js +28 -36
  94. package/dist/context/HooksContext/index.js +4 -6
  95. package/dist/context/ValidationContext/ValidationContext.js +35 -76
  96. package/dist/context/ValidationContext/ValidationContext.test.js +50 -61
  97. package/dist/context/ValidationContext/index.js +4 -6
  98. package/dist/context/index.js +3 -3
  99. package/dist/hooks/index.js +10 -11
  100. package/dist/hooks/useAxios.js +17 -43
  101. package/dist/hooks/useGetRequest.js +61 -106
  102. package/dist/hooks/useHooks.js +2 -5
  103. package/dist/hooks/useRefData.js +29 -45
  104. package/dist/hooks/useValidation.js +2 -5
  105. package/dist/index.js +15 -17
  106. package/dist/models/CollectionLabels.js +2 -3
  107. package/dist/models/ComponentTypes.js +25 -26
  108. package/dist/models/EventTypes.js +5 -6
  109. package/dist/models/FormPages.js +5 -6
  110. package/dist/models/FormTypes.js +9 -10
  111. package/dist/models/HubFormats.js +4 -5
  112. package/dist/models/PageAction.js +45 -42
  113. package/dist/models/TaskStates.js +30 -31
  114. package/dist/models/index.js +11 -12
  115. package/dist/setupTests.js +20 -24
  116. package/dist/utils/CheckYourAnswers/getCYAAction.js +6 -7
  117. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +53 -55
  118. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +18 -20
  119. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +21 -23
  120. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +17 -21
  121. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +18 -20
  122. package/dist/utils/CheckYourAnswers/getCYARow.js +8 -10
  123. package/dist/utils/CheckYourAnswers/getCYARow.test.js +72 -72
  124. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +20 -27
  125. package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +16 -17
  126. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +41 -47
  127. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +72 -75
  128. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +71 -78
  129. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +133 -114
  130. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +27 -23
  131. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +112 -106
  132. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +16 -23
  133. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +77 -83
  134. package/dist/utils/CheckYourAnswers/index.js +3 -4
  135. package/dist/utils/CheckYourAnswers/showComponentCYA.js +7 -9
  136. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +25 -25
  137. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +9 -16
  138. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +19 -20
  139. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +4 -8
  140. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +15 -15
  141. package/dist/utils/CollectionPage/index.js +3 -4
  142. package/dist/utils/CollectionPage/mergeCollectionPages.js +26 -29
  143. package/dist/utils/CollectionPage/mergeCollectionPages.test.js +15 -15
  144. package/dist/utils/Component/addShowWhen.js +5 -10
  145. package/dist/utils/Component/addShowWhen.test.js +38 -38
  146. package/dist/utils/Component/applyToComponentTree.js +20 -22
  147. package/dist/utils/Component/applyToComponentTree.test.js +28 -33
  148. package/dist/utils/Component/cleanAttributes.js +11 -16
  149. package/dist/utils/Component/cleanAttributes.test.js +17 -18
  150. package/dist/utils/Component/elevateNestedComponents.js +7 -9
  151. package/dist/utils/Component/elevateNestedComponents.test.js +19 -19
  152. package/dist/utils/Component/getComponent.js +91 -99
  153. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +19 -18
  154. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +51 -63
  155. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +41 -49
  156. package/dist/utils/Component/getComponentTests/getComponent.date.test.js +33 -37
  157. package/dist/utils/Component/getComponentTests/getComponent.details.test.js +21 -19
  158. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +19 -23
  159. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +23 -27
  160. package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +12 -11
  161. package/dist/utils/Component/getComponentTests/getComponent.html.test.js +18 -16
  162. package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +10 -9
  163. package/dist/utils/Component/getComponentTests/getComponent.list.test.js +18 -16
  164. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +24 -27
  165. package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +156 -175
  166. package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +18 -16
  167. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +19 -23
  168. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +59 -73
  169. package/dist/utils/Component/getComponentTests/getComponent.select.test.js +19 -23
  170. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +19 -23
  171. package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +35 -41
  172. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +24 -32
  173. package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +3 -3
  174. package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +10 -9
  175. package/dist/utils/Component/getDefaultValue.js +7 -9
  176. package/dist/utils/Component/getDefaultValue.test.js +14 -14
  177. package/dist/utils/Component/index.js +3 -4
  178. package/dist/utils/Component/isEditable.js +3 -7
  179. package/dist/utils/Component/isEditable.test.js +14 -15
  180. package/dist/utils/Component/optionIsSelected.js +2 -3
  181. package/dist/utils/Component/optionIsSelected.test.js +10 -10
  182. package/dist/utils/Component/setupContainerComponentsPath.js +30 -33
  183. package/dist/utils/Component/setupContainerComponentsPath.test.js +16 -16
  184. package/dist/utils/Component/showComponent.js +4 -6
  185. package/dist/utils/Component/showComponent.test.js +29 -29
  186. package/dist/utils/Component/wrapInFormGroup.js +6 -6
  187. package/dist/utils/Condition/index.js +3 -4
  188. package/dist/utils/Condition/meetsAllConditions.js +9 -10
  189. package/dist/utils/Condition/meetsAllConditions.test.js +18 -18
  190. package/dist/utils/Condition/meetsCondition.js +19 -27
  191. package/dist/utils/Condition/meetsCondition.test.js +377 -377
  192. package/dist/utils/Condition/meetsOneCondition.js +7 -8
  193. package/dist/utils/Condition/meetsOneCondition.test.js +17 -17
  194. package/dist/utils/Condition/setupConditions.js +15 -21
  195. package/dist/utils/Condition/setupConditions.test.js +8 -8
  196. package/dist/utils/Container/getEditableComponents.js +5 -8
  197. package/dist/utils/Container/getEditableComponents.test.js +44 -46
  198. package/dist/utils/Container/index.js +3 -4
  199. package/dist/utils/Container/setupNesting.js +17 -24
  200. package/dist/utils/Container/setupNesting.test.js +28 -31
  201. package/dist/utils/Container/showContainer.js +5 -10
  202. package/dist/utils/Container/showContainer.test.js +31 -31
  203. package/dist/utils/Data/applyFormula.js +41 -52
  204. package/dist/utils/Data/applyFormula.test.js +26 -26
  205. package/dist/utils/Data/getAutocompleteSource.js +11 -14
  206. package/dist/utils/Data/getAutocompleteSource.test.js +59 -59
  207. package/dist/utils/Data/getDataPath.js +21 -32
  208. package/dist/utils/Data/getDataPath.test.js +20 -20
  209. package/dist/utils/Data/getOptions.js +22 -28
  210. package/dist/utils/Data/getOptions.test.js +21 -21
  211. package/dist/utils/Data/getSourceData.js +7 -21
  212. package/dist/utils/Data/getSourceData.test.js +85 -81
  213. package/dist/utils/Data/index.js +3 -4
  214. package/dist/utils/Data/refDataToOptions.js +12 -17
  215. package/dist/utils/Data/refDataToOptions.test.js +20 -20
  216. package/dist/utils/Data/setDataItem.js +8 -10
  217. package/dist/utils/Data/setDataItem.test.js +38 -38
  218. package/dist/utils/Data/setupFormData.js +32 -48
  219. package/dist/utils/Data/setupFormData.test.js +99 -98
  220. package/dist/utils/Data/setupRefDataUrlForComponent.js +22 -30
  221. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +28 -28
  222. package/dist/utils/FormPage/applyConditionalProperties.js +7 -12
  223. package/dist/utils/FormPage/applyConditionalProperties.test.js +16 -19
  224. package/dist/utils/FormPage/getFormPage.js +17 -19
  225. package/dist/utils/FormPage/getFormPage.test.js +49 -48
  226. package/dist/utils/FormPage/getFormPages.js +9 -15
  227. package/dist/utils/FormPage/getFormPages.test.js +22 -25
  228. package/dist/utils/FormPage/getPageActions.js +11 -19
  229. package/dist/utils/FormPage/getPageActions.test.js +33 -33
  230. package/dist/utils/FormPage/getParagraphFromText.js +6 -9
  231. package/dist/utils/FormPage/getParagraphFromText.test.js +7 -7
  232. package/dist/utils/FormPage/index.js +3 -4
  233. package/dist/utils/FormPage/showFormPage.js +5 -10
  234. package/dist/utils/FormPage/showFormPage.test.js +33 -33
  235. package/dist/utils/FormPage/showFormPageCYA.js +4 -5
  236. package/dist/utils/FormPage/showFormPageCYA.test.js +9 -9
  237. package/dist/utils/FormPage/useComponent.js +21 -29
  238. package/dist/utils/FormPage/useComponent.test.js +71 -73
  239. package/dist/utils/Format/formatData.js +2 -3
  240. package/dist/utils/Format/formatData.test.js +19 -19
  241. package/dist/utils/Format/formatDataForComponent.js +6 -9
  242. package/dist/utils/Format/formatDataForComponent.test.js +50 -78
  243. package/dist/utils/Format/formatDataForForm.js +7 -10
  244. package/dist/utils/Format/formatDataForForm.test.js +14 -17
  245. package/dist/utils/Format/formatDataForPage.js +4 -7
  246. package/dist/utils/Format/formatDataForPage.test.js +20 -25
  247. package/dist/utils/Format/index.js +3 -4
  248. package/dist/utils/Hub/getFormHub.js +3 -4
  249. package/dist/utils/Hub/getFormHub.test.js +29 -32
  250. package/dist/utils/Hub/index.js +3 -4
  251. package/dist/utils/Meta/constants.js +2 -4
  252. package/dist/utils/Meta/documents/getDocuments.js +2 -6
  253. package/dist/utils/Meta/documents/getDocuments.test.js +25 -17
  254. package/dist/utils/Meta/documents/index.js +3 -4
  255. package/dist/utils/Meta/documents/setDocumentsForField.js +16 -19
  256. package/dist/utils/Meta/documents/setDocumentsForField.test.js +69 -35
  257. package/dist/utils/Meta/index.js +3 -4
  258. package/dist/utils/Operate/checkValueIsTruthy.js +5 -6
  259. package/dist/utils/Operate/checkValueIsTruthy.test.js +17 -17
  260. package/dist/utils/Operate/getFirstOf.js +9 -10
  261. package/dist/utils/Operate/getFirstOf.test.js +33 -33
  262. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +13 -14
  263. package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +47 -53
  264. package/dist/utils/Operate/index.js +3 -4
  265. package/dist/utils/Operate/persistValueInFormData.js +7 -8
  266. package/dist/utils/Operate/persistValueInFormData.test.js +23 -21
  267. package/dist/utils/Operate/runPageOperations.js +10 -11
  268. package/dist/utils/Operate/runPageOperations.test.js +36 -37
  269. package/dist/utils/Operate/setValueInFormData.js +6 -7
  270. package/dist/utils/Operate/setValueInFormData.test.js +17 -17
  271. package/dist/utils/Operate/shouldRun.js +9 -10
  272. package/dist/utils/Operate/shouldRun.test.js +22 -28
  273. package/dist/utils/Validate/additional/conditionallyRequired.js +5 -7
  274. package/dist/utils/Validate/additional/conditionallyRequired.test.js +19 -19
  275. package/dist/utils/Validate/additional/index.js +8 -9
  276. package/dist/utils/Validate/additional/index.test.js +13 -13
  277. package/dist/utils/Validate/additional/mustBeAfter.js +4 -5
  278. package/dist/utils/Validate/additional/mustBeAfter.test.js +41 -41
  279. package/dist/utils/Validate/additional/mustBeBefore.js +4 -5
  280. package/dist/utils/Validate/additional/mustBeBefore.test.js +29 -29
  281. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +8 -14
  282. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +34 -38
  283. package/dist/utils/Validate/additional/mustBeGreaterThan.js +3 -4
  284. package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +19 -19
  285. package/dist/utils/Validate/additional/mustBeInTheFuture.js +5 -6
  286. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +13 -13
  287. package/dist/utils/Validate/additional/mustBeInThePast.js +6 -7
  288. package/dist/utils/Validate/additional/mustBeInThePast.test.js +13 -13
  289. package/dist/utils/Validate/additional/mustBeLessThan.js +3 -4
  290. package/dist/utils/Validate/additional/mustBeLessThan.test.js +18 -18
  291. package/dist/utils/Validate/additional/mustBeLongerThan.js +2 -3
  292. package/dist/utils/Validate/additional/mustBeLongerThan.test.js +17 -17
  293. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +3 -4
  294. package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +21 -21
  295. package/dist/utils/Validate/additional/mustBeShorterThan.js +2 -3
  296. package/dist/utils/Validate/additional/mustBeShorterThan.test.js +17 -17
  297. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +4 -7
  298. package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +15 -17
  299. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +2 -3
  300. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +13 -13
  301. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +4 -7
  302. package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +29 -27
  303. package/dist/utils/Validate/additional/utils.js +9 -25
  304. package/dist/utils/Validate/index.js +3 -4
  305. package/dist/utils/Validate/validateCollection.js +22 -29
  306. package/dist/utils/Validate/validateCollection.test.js +85 -77
  307. package/dist/utils/Validate/validateComponent.js +19 -19
  308. package/dist/utils/Validate/validateComponent.test.js +169 -147
  309. package/dist/utils/Validate/validateContainer.js +16 -22
  310. package/dist/utils/Validate/validateContainer.test.js +52 -48
  311. package/dist/utils/Validate/validateDate.js +14 -21
  312. package/dist/utils/Validate/validateDate.test.js +28 -29
  313. package/dist/utils/Validate/validateEmail.js +8 -11
  314. package/dist/utils/Validate/validateEmail.test.js +26 -26
  315. package/dist/utils/Validate/validateMultifile.js +6 -10
  316. package/dist/utils/Validate/validateMultifile.test.js +17 -18
  317. package/dist/utils/Validate/validatePage.js +20 -22
  318. package/dist/utils/Validate/validatePage.test.js +146 -143
  319. package/dist/utils/Validate/validateRegex.js +6 -10
  320. package/dist/utils/Validate/validateRegex.test.js +17 -17
  321. package/dist/utils/Validate/validateRequired.js +6 -9
  322. package/dist/utils/Validate/validateRequired.test.js +19 -19
  323. package/dist/utils/Validate/validateTextArea.js +6 -9
  324. package/dist/utils/Validate/validateTextArea.test.js +21 -21
  325. package/dist/utils/Validate/validateTime.js +8 -16
  326. package/dist/utils/Validate/validateTime.test.js +15 -15
  327. package/dist/utils/index.js +10 -12
  328. package/package.json +9 -6
@@ -16,45 +16,34 @@ var _groupOfRow = _interopRequireDefault(require("../../json/groupOfRow.json"));
16
16
  var _setupTests = require("../../setupTests");
17
17
  var _utils = _interopRequireDefault(require("../../utils"));
18
18
  var _CheckYourAnswers = _interopRequireWildcard(require("./CheckYourAnswers"));
19
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
20
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
23
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
24
- 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."); }
25
- 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); }
26
- 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; }
27
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
28
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
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 exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) keys.push(key); return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, catch: function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
30
- 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); } }
31
- 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); }); }; }
32
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
33
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
34
- 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; }
35
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
36
- 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); }
37
- describe('components', function () {
38
- describe('CheckYourAnswers', function () {
39
- var mockAxios = new _axiosMockAdapter.default(_axios.default);
40
- var DATA = _utils.default.Data.setupForm(_userProfile.default.pages, _userProfile.default.components, _userProfileData.default);
41
- var PAGES = _utils.default.FormPage.getAll(_userProfile.default.pages, _userProfile.default.components, _objectSpread({}, DATA));
42
- var ON_ROW_ACTION_CALLS = [];
43
- var ON_ROW_ACTION = function ON_ROW_ACTION(row) {
19
+ 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); }
20
+ 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; }
21
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
22
+ // Global imports
23
+
24
+ // Local imports
25
+
26
+ describe('components', () => {
27
+ describe('CheckYourAnswers', () => {
28
+ const mockAxios = new _axiosMockAdapter.default(_axios.default);
29
+ const DATA = _utils.default.Data.setupForm(_userProfile.default.pages, _userProfile.default.components, _userProfileData.default);
30
+ const PAGES = _utils.default.FormPage.getAll(_userProfile.default.pages, _userProfile.default.components, {
31
+ ...DATA
32
+ });
33
+ const ON_ROW_ACTION_CALLS = [];
34
+ const ON_ROW_ACTION = row => {
44
35
  ON_ROW_ACTION_CALLS.push(row);
45
36
  };
46
- var ON_ACTION_CALLS = [];
47
- var ON_ACTION = function ON_ACTION(action, onError) {
37
+ const ON_ACTION_CALLS = [];
38
+ const ON_ACTION = (action, onError) => {
48
39
  ON_ACTION_CALLS.push({
49
- action: action,
50
- onError: onError
40
+ action,
41
+ onError
51
42
  });
52
43
  };
53
- var container = null;
54
- var refDataUrl = function refDataUrl(suffix) {
55
- return "".concat(_userProfileData.default.urls.refData, "/").concat(suffix);
56
- };
57
- beforeEach(function () {
44
+ let container = null;
45
+ const refDataUrl = suffix => `${_userProfileData.default.urls.refData}/${suffix}`;
46
+ beforeEach(() => {
58
47
  ON_ROW_ACTION_CALLS.length = 0;
59
48
  ON_ACTION_CALLS.length = 0;
60
49
  container = document.createElement('div');
@@ -64,19 +53,19 @@ describe('components', function () {
64
53
  mockAxios.onGet(refDataUrl('grade')).reply(200, _grade.default);
65
54
  mockAxios.onGet(refDataUrl('team')).reply(200, _team.default);
66
55
  });
67
- afterEach(function () {
56
+ afterEach(() => {
68
57
  (0, _reactDom.unmountComponentAtNode)(container);
69
58
  container.remove();
70
59
  container = null;
71
60
  });
72
- var checkCYA = function checkCYA(cyaContainer) {
73
- var checkCYAContainer = cyaContainer;
74
- var cya = checkCYAContainer.childNodes[0];
61
+ const checkCYA = cyaContainer => {
62
+ const checkCYAContainer = cyaContainer;
63
+ const cya = checkCYAContainer.childNodes[0];
75
64
  expect(cya.tagName).toEqual('DIV');
76
65
  expect(cya.classList).toContain(_CheckYourAnswers.DEFAULT_CLASS);
77
66
  return cya;
78
67
  };
79
- var checkRow = function checkRow(row, key, value, action) {
68
+ const checkRow = (row, key, value, action) => {
80
69
  expect(row.textContent).toContain(key);
81
70
  expect(row.textContent).toContain(value);
82
71
  if (action) {
@@ -85,467 +74,268 @@ describe('components', function () {
85
74
  expect(row.textContent).not.toContain('Change');
86
75
  }
87
76
  };
88
- it('should show default title if none is provided', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
89
- var cya, title;
90
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
91
- while (1) switch (_context2.prev = _context2.next) {
92
- case 0:
93
- _context2.next = 2;
94
- return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
95
- return _regeneratorRuntime().wrap(function _callee$(_context) {
96
- while (1) switch (_context.prev = _context.next) {
97
- case 0:
98
- (0, _setupTests.renderDomWithValidation)( /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
99
- pages: PAGES,
100
- onRowAction: ON_ROW_ACTION,
101
- onAction: ON_ACTION
102
- }), container);
103
- case 1:
104
- case "end":
105
- return _context.stop();
106
- }
107
- }, _callee);
108
- })));
109
- case 2:
110
- cya = checkCYA(container);
111
- title = cya.childNodes[0];
112
- expect(title.classList).toContain('govuk-heading-l');
113
- expect(title.textContent).toEqual(_CheckYourAnswers.DEFAULT_TITLE);
114
- case 6:
115
- case "end":
116
- return _context2.stop();
117
- }
118
- }, _callee2);
119
- })));
120
- it('should allow title to be overridden', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
121
- var TITLE, cya, title;
122
- return _regeneratorRuntime().wrap(function _callee4$(_context4) {
123
- while (1) switch (_context4.prev = _context4.next) {
124
- case 0:
125
- TITLE = 'Alpha Bravo Charlie';
126
- _context4.next = 3;
127
- return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
128
- return _regeneratorRuntime().wrap(function _callee3$(_context3) {
129
- while (1) switch (_context3.prev = _context3.next) {
130
- case 0:
131
- (0, _setupTests.renderDomWithValidation)( /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
132
- title: TITLE,
133
- pages: PAGES,
134
- onRowAction: ON_ROW_ACTION,
135
- onAction: ON_ACTION
136
- }), container);
137
- case 1:
138
- case "end":
139
- return _context3.stop();
140
- }
141
- }, _callee3);
142
- })));
143
- case 3:
144
- cya = checkCYA(container);
145
- title = cya.childNodes[0];
146
- expect(title.classList).toContain('govuk-heading-l');
147
- expect(title.textContent).toEqual(TITLE);
148
- case 7:
149
- case "end":
150
- return _context4.stop();
151
- }
152
- }, _callee4);
153
- })));
154
- it('should show readonly page components correctly', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
155
- var cya, _cya$childNodes, cyaChildNode, names, _names$childNodes, firstName, surname;
156
- return _regeneratorRuntime().wrap(function _callee6$(_context6) {
157
- while (1) switch (_context6.prev = _context6.next) {
158
- case 0:
159
- _context6.next = 2;
160
- return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {
161
- return _regeneratorRuntime().wrap(function _callee5$(_context5) {
162
- while (1) switch (_context5.prev = _context5.next) {
163
- case 0:
164
- (0, _setupTests.renderDomWithValidation)( /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
165
- pages: PAGES,
166
- onRowAction: ON_ROW_ACTION,
167
- onAction: ON_ACTION
168
- }), container);
169
- case 1:
170
- case "end":
171
- return _context5.stop();
172
- }
173
- }, _callee5);
174
- })));
175
- case 2:
176
- cya = checkCYA(container);
177
- _cya$childNodes = _slicedToArray(cya.childNodes, 2), cyaChildNode = _cya$childNodes[1];
178
- names = cyaChildNode.childNodes[0];
179
- expect(names.tagName).toEqual('DL');
180
- expect(names.classList).toContain("govuk-!-margin-bottom-".concat(_CheckYourAnswers.DEFAULT_MARGIN_BOTTOM));
181
- _names$childNodes = _slicedToArray(names.childNodes, 2), firstName = _names$childNodes[0], surname = _names$childNodes[1];
182
- checkRow(firstName, 'First name', 'John', false);
183
- checkRow(surname, 'Last name', 'Smith', false);
184
- case 10:
185
- case "end":
186
- return _context6.stop();
187
- }
188
- }, _callee6);
189
- })));
190
- it('should show editable page components correctly', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
191
- var cya, _cya$childNodes2, title, cyaChildNode, civilServant, _civilServant$childNo, status;
192
- return _regeneratorRuntime().wrap(function _callee8$(_context8) {
193
- while (1) switch (_context8.prev = _context8.next) {
194
- case 0:
195
- _context8.next = 2;
196
- return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
197
- return _regeneratorRuntime().wrap(function _callee7$(_context7) {
198
- while (1) switch (_context7.prev = _context7.next) {
199
- case 0:
200
- (0, _setupTests.renderDomWithValidation)( /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
201
- pages: PAGES,
202
- onRowAction: ON_ROW_ACTION,
203
- onAction: ON_ACTION
204
- }), container);
205
- case 1:
206
- case "end":
207
- return _context7.stop();
208
- }
209
- }, _callee7);
210
- })));
211
- case 2:
212
- cya = checkCYA(container);
213
- _cya$childNodes2 = _slicedToArray(cya.childNodes, 4), title = _cya$childNodes2[2], cyaChildNode = _cya$childNodes2[3];
214
- civilServant = cyaChildNode.childNodes[0];
215
- expect(title.textContent).toEqual('Are you a civil servant?');
216
- expect(civilServant.tagName).toEqual('DL');
217
- expect(civilServant.classList).toContain("govuk-!-margin-bottom-".concat(_CheckYourAnswers.DEFAULT_MARGIN_BOTTOM));
218
- _civilServant$childNo = _slicedToArray(civilServant.childNodes, 1), status = _civilServant$childNo[0];
219
- checkRow(status, 'Are you a civil servant?', 'Yes', true);
220
- case 10:
221
- case "end":
222
- return _context8.stop();
223
- }
224
- }, _callee8);
225
- })));
226
- it('should show editable page components correctly with page titles hidden', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {
227
- var cya, _cya$childNodes3, cyaChildNode, civilServant, _civilServant$childNo2, status;
228
- return _regeneratorRuntime().wrap(function _callee10$(_context10) {
229
- while (1) switch (_context10.prev = _context10.next) {
230
- case 0:
231
- _context10.next = 2;
232
- return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
233
- return _regeneratorRuntime().wrap(function _callee9$(_context9) {
234
- while (1) switch (_context9.prev = _context9.next) {
235
- case 0:
236
- (0, _setupTests.renderDomWithValidation)( /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
237
- pages: PAGES,
238
- onRowAction: ON_ROW_ACTION,
239
- onAction: ON_ACTION,
240
- hide_page_titles: true
241
- }), container);
242
- case 1:
243
- case "end":
244
- return _context9.stop();
245
- }
246
- }, _callee9);
247
- })));
248
- case 2:
249
- cya = checkCYA(container);
250
- _cya$childNodes3 = _slicedToArray(cya.childNodes, 3), cyaChildNode = _cya$childNodes3[2]; // The title simply isn't returned
251
- civilServant = cyaChildNode.childNodes[0];
252
- expect(civilServant.tagName).toEqual('DL');
253
- expect(civilServant.classList).toContain("govuk-!-margin-bottom-0"); // Changed margin if no titles
254
- _civilServant$childNo2 = _slicedToArray(civilServant.childNodes, 1), status = _civilServant$childNo2[0];
255
- checkRow(status, 'Are you a civil servant?', 'Yes', true);
256
- case 9:
257
- case "end":
258
- return _context10.stop();
259
- }
260
- }, _callee10);
261
- })));
262
- it('should show no title if is set to hidden', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {
263
- var cya, _cya$childNodes4, cyaChildNode, names, _names$childNodes2, firstName, surname;
264
- return _regeneratorRuntime().wrap(function _callee12$(_context12) {
265
- while (1) switch (_context12.prev = _context12.next) {
266
- case 0:
267
- _context12.next = 2;
268
- return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {
269
- return _regeneratorRuntime().wrap(function _callee11$(_context11) {
270
- while (1) switch (_context11.prev = _context11.next) {
271
- case 0:
272
- (0, _setupTests.renderDomWithValidation)( /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
273
- pages: PAGES,
274
- onRowAction: ON_ROW_ACTION,
275
- onAction: ON_ACTION,
276
- hide_title: true
277
- }), container);
278
- case 1:
279
- case "end":
280
- return _context11.stop();
281
- }
282
- }, _callee11);
283
- })));
284
- case 2:
285
- cya = checkCYA(container);
286
- _cya$childNodes4 = _slicedToArray(cya.childNodes, 1), cyaChildNode = _cya$childNodes4[0];
287
- names = cyaChildNode.childNodes[0];
288
- expect(names.tagName).toEqual('DL');
289
- expect(names.classList).toContain("govuk-!-margin-bottom-".concat(_CheckYourAnswers.DEFAULT_MARGIN_BOTTOM));
290
- _names$childNodes2 = _slicedToArray(names.childNodes, 2), firstName = _names$childNodes2[0], surname = _names$childNodes2[1];
291
- checkRow(firstName, 'First name', 'John', false);
292
- checkRow(surname, 'Last name', 'Smith', false);
293
- case 10:
294
- case "end":
295
- return _context12.stop();
296
- }
297
- }, _callee12);
298
- })));
299
- it('should show task list in CYA style', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {
300
- var sections, taskHeading1, namesPageHeading, taskHeading2, gradePageHeading;
301
- return _regeneratorRuntime().wrap(function _callee14$(_context14) {
302
- while (1) switch (_context14.prev = _context14.next) {
303
- case 0:
304
- sections = [{
305
- name: 'These are your tasks',
306
- tasks: [{
307
- name: 'Task 1',
308
- state: 'complete',
309
- pages: ['names']
310
- }, {
311
- name: 'Task 2',
312
- state: 'complete',
313
- pages: ['grade']
314
- }]
315
- }];
316
- _context14.next = 3;
317
- return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {
318
- return _regeneratorRuntime().wrap(function _callee13$(_context13) {
319
- while (1) switch (_context13.prev = _context13.next) {
320
- case 0:
321
- (0, _setupTests.renderDomWithValidation)( /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
322
- pages: PAGES,
323
- onRowAction: ON_ROW_ACTION,
324
- onAction: ON_ACTION,
325
- hide_title: true,
326
- sections: sections,
327
- type: "task-list-cya"
328
- }), container);
329
- case 1:
330
- case "end":
331
- return _context13.stop();
332
- }
333
- }, _callee13);
334
- })));
335
- case 3:
336
- taskHeading1 = container.childNodes[0].childNodes[0];
337
- expect(taskHeading1.tagName).toEqual('H2');
338
- expect(taskHeading1.textContent).toEqual('Task 1');
339
- expect(taskHeading1.classList).toContain("govuk-heading-m");
340
- namesPageHeading = container.childNodes[0].childNodes[1];
341
- expect(namesPageHeading.tagName).toEqual('DIV');
342
- expect(namesPageHeading.textContent).toContain('John');
343
- expect(namesPageHeading.classList).toContain("group-of-rows");
344
- taskHeading2 = container.childNodes[0].childNodes[2];
345
- expect(taskHeading2.tagName).toEqual('H2');
346
- expect(taskHeading2.textContent).toEqual('Task 2');
347
- expect(taskHeading2.classList).toContain("govuk-heading-m");
348
- gradePageHeading = container.childNodes[0].childNodes[3];
349
- expect(gradePageHeading.tagName).toEqual('H3');
350
- expect(gradePageHeading.textContent).toEqual("What's your grade?");
351
- expect(gradePageHeading.classList).toContain("govuk-heading-s");
352
- case 19:
353
- case "end":
354
- return _context14.stop();
355
- }
356
- }, _callee14);
357
- })));
358
- it('Show answers from multiple address fields into in one DL', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {
359
- var ADDRESS_DATA, GROUP_PAGES, cya, groupedComponent, keyGroup, valueGroup, changeButtonDiv, changeButton;
360
- return _regeneratorRuntime().wrap(function _callee16$(_context16) {
361
- while (1) switch (_context16.prev = _context16.next) {
362
- case 0:
363
- ADDRESS_DATA = _utils.default.Data.setupForm(_group.default.pages, _group.default.components, _groupData.default);
364
- GROUP_PAGES = _utils.default.FormPage.getAll(_group.default.pages, _group.default.components, _objectSpread({}, ADDRESS_DATA));
365
- _context16.next = 4;
366
- return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {
367
- return _regeneratorRuntime().wrap(function _callee15$(_context15) {
368
- while (1) switch (_context15.prev = _context15.next) {
369
- case 0:
370
- (0, _setupTests.renderDomWithValidation)( /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
371
- pages: GROUP_PAGES,
372
- onRowAction: ON_ROW_ACTION,
373
- onAction: ON_ACTION,
374
- hide_title: true
375
- }), container);
376
- case 1:
377
- case "end":
378
- return _context15.stop();
379
- }
380
- }, _callee15);
381
- })));
382
- case 4:
383
- cya = checkCYA(container);
384
- groupedComponent = cya.childNodes[10];
385
- keyGroup = groupedComponent.childNodes[0].childNodes[0].childNodes[0];
386
- expect(keyGroup.tagName).toEqual('DT');
387
- expect(keyGroup.textContent).toEqual('Address details');
388
- valueGroup = groupedComponent.childNodes[0].childNodes[0].childNodes[1];
389
- expect(valueGroup.childNodes.length).toEqual(4);
390
- expect(valueGroup.tagName).toEqual('DD');
391
- expect(valueGroup.childNodes[0].textContent).toContain('10 Downing Street');
392
- expect(valueGroup.childNodes[1].textContent).toContain('City of Westminster');
393
- expect(valueGroup.childNodes[2].textContent).toContain('London');
394
- expect(valueGroup.childNodes[3].textContent).toContain('SW1A 2AA');
395
- changeButtonDiv = groupedComponent.childNodes[0].childNodes[0].childNodes[2];
396
- expect(changeButtonDiv.classList).toContain('govuk-summary-list__actions');
397
- changeButton = changeButtonDiv.childNodes[0];
398
- expect(changeButton.tagName).toEqual('A');
399
- expect(changeButton.textContent).toEqual('Change address details');
400
- case 21:
401
- case "end":
402
- return _context16.stop();
403
- }
404
- }, _callee16);
405
- })));
406
- it('should render a group with one action button', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {
407
- var GROUP_PAGES, cya, namesGroup, firstNameRow, surname, changeButtonDiv, changeButton;
408
- return _regeneratorRuntime().wrap(function _callee18$(_context18) {
409
- while (1) switch (_context18.prev = _context18.next) {
410
- case 0:
411
- GROUP_PAGES = _utils.default.FormPage.getAll(_groupOfRow.default.pages, _groupOfRow.default.components, _objectSpread({}, DATA));
412
- _context18.next = 3;
413
- return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {
414
- return _regeneratorRuntime().wrap(function _callee17$(_context17) {
415
- while (1) switch (_context17.prev = _context17.next) {
416
- case 0:
417
- (0, _setupTests.renderDomWithValidation)( /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
418
- pages: GROUP_PAGES,
419
- onRowAction: ON_ROW_ACTION,
420
- onAction: ON_ACTION,
421
- groups: _groupOfRow.default.cya.groups
422
- }), container);
423
- case 1:
424
- case "end":
425
- return _context17.stop();
426
- }
427
- }, _callee17);
428
- })));
429
- case 3:
430
- cya = checkCYA(container);
431
- namesGroup = cya.childNodes[2];
432
- firstNameRow = namesGroup.childNodes[0].childNodes[0];
433
- expect(firstNameRow.childNodes.length).toEqual(2);
434
- expect(firstNameRow.childNodes[0].textContent).toEqual('First name (optional)');
435
- expect(firstNameRow.childNodes[0].tagName).toEqual('DT');
436
- expect(firstNameRow.childNodes[1].textContent).toEqual('John');
437
- expect(firstNameRow.childNodes[1].tagName).toEqual('DD');
438
- surname = namesGroup.childNodes[0].childNodes[1];
439
- expect(surname.childNodes.length).toEqual(2);
440
- expect(surname.childNodes[0].textContent).toEqual('Last name (optional)');
441
- expect(surname.childNodes[0].tagName).toEqual('DT');
442
- expect(surname.childNodes[1].textContent).toEqual('Smith');
443
- expect(surname.childNodes[1].tagName).toEqual('DD');
444
- changeButtonDiv = namesGroup.childNodes[0].childNodes[2];
445
- expect(changeButtonDiv.classList).toContain('change-group-button');
446
- changeButton = changeButtonDiv.childNodes[0];
447
- expect(changeButton.tagName).toEqual('A');
448
- expect(changeButton.textContent).toEqual('Change names');
449
- case 22:
450
- case "end":
451
- return _context18.stop();
452
- }
453
- }, _callee18);
454
- })));
455
- it('should show page components corrently with interpolated title and cya_label, if label is missing', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {
456
- var _PAGES, _COMPONENTS, T_PAGES, cya, _cya$childNodes5, cyaTitle, cyaChildNode, names, _names$childNodes3, firstName, surname, _firstName$childNodes, label;
457
- return _regeneratorRuntime().wrap(function _callee20$(_context20) {
458
- while (1) switch (_context20.prev = _context20.next) {
459
- case 0:
460
- _PAGES = [].concat(_userProfile.default.pages); // eslint-disable-next-line no-template-curly-in-string
461
- _PAGES[0] = _objectSpread(_objectSpread({}, _PAGES[0]), {}, {
462
- title: 'Alpha ID: ${businessKey}'
463
- });
464
- _COMPONENTS = [].concat(_userProfile.default.components);
465
- _COMPONENTS[0] = _objectSpread(_objectSpread({}, _COMPONENTS[0]), {}, {
466
- label: undefined,
467
- required: true,
468
- // eslint-disable-next-line no-template-curly-in-string
469
- cya_label: "Text ${currentUser.familyName}"
470
- });
471
- T_PAGES = _utils.default.FormPage.getAll(_PAGES, _COMPONENTS, DATA);
472
- _context20.next = 7;
473
- return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {
474
- return _regeneratorRuntime().wrap(function _callee19$(_context19) {
475
- while (1) switch (_context19.prev = _context19.next) {
476
- case 0:
477
- (0, _setupTests.renderDomWithValidation)( /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
478
- pages: T_PAGES,
479
- onRowAction: ON_ROW_ACTION,
480
- onAction: ON_ACTION
481
- }), container);
482
- case 1:
483
- case "end":
484
- return _context19.stop();
485
- }
486
- }, _callee19);
487
- })));
488
- case 7:
489
- cya = checkCYA(container);
490
- _cya$childNodes5 = _slicedToArray(cya.childNodes, 3), cyaTitle = _cya$childNodes5[1], cyaChildNode = _cya$childNodes5[2];
491
- expect(cyaTitle.textContent).toEqual('Alpha ID: 123456789');
492
- names = cyaChildNode.childNodes[0];
493
- expect(names.tagName).toEqual('DL');
494
- expect(names.classList).toContain("govuk-!-margin-bottom-".concat(_CheckYourAnswers.DEFAULT_MARGIN_BOTTOM));
495
- _names$childNodes3 = _slicedToArray(names.childNodes, 2), firstName = _names$childNodes3[0], surname = _names$childNodes3[1];
496
- _firstName$childNodes = _slicedToArray(firstName.childNodes, 1), label = _firstName$childNodes[0];
497
- expect(label.textContent).toEqual('Text Smith');
498
- checkRow(surname, 'Last name', 'Smith', false);
499
- case 17:
500
- case "end":
501
- return _context20.stop();
502
- }
503
- }, _callee20);
504
- })));
505
- it('should show page components corrently with no label, if label and cya_label are missing', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {
506
- var _PAGES, _COMPONENTS, T_PAGES, cya, _cya$childNodes6, cyaChildNode, names, _names$childNodes4, firstName, surname, _firstName$childNodes2, label;
507
- return _regeneratorRuntime().wrap(function _callee22$(_context22) {
508
- while (1) switch (_context22.prev = _context22.next) {
509
- case 0:
510
- _PAGES = [].concat(_userProfile.default.pages);
511
- _COMPONENTS = [].concat(_userProfile.default.components);
512
- _COMPONENTS[0] = _objectSpread(_objectSpread({}, _COMPONENTS[0]), {}, {
513
- label: undefined,
514
- required: true,
515
- cya_label: undefined
516
- });
517
- T_PAGES = _utils.default.FormPage.getAll(_PAGES, _COMPONENTS, _objectSpread({}, DATA));
518
- _context22.next = 6;
519
- return (0, _testUtils.act)( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {
520
- return _regeneratorRuntime().wrap(function _callee21$(_context21) {
521
- while (1) switch (_context21.prev = _context21.next) {
522
- case 0:
523
- (0, _setupTests.renderDomWithValidation)( /*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
524
- pages: T_PAGES,
525
- onRowAction: ON_ROW_ACTION,
526
- onAction: ON_ACTION
527
- }), container);
528
- case 1:
529
- case "end":
530
- return _context21.stop();
531
- }
532
- }, _callee21);
533
- })));
534
- case 6:
535
- cya = checkCYA(container);
536
- _cya$childNodes6 = _slicedToArray(cya.childNodes, 2), cyaChildNode = _cya$childNodes6[1];
537
- names = cyaChildNode.childNodes[0];
538
- expect(names.tagName).toEqual('DL');
539
- expect(names.classList).toContain("govuk-!-margin-bottom-".concat(_CheckYourAnswers.DEFAULT_MARGIN_BOTTOM));
540
- _names$childNodes4 = _slicedToArray(names.childNodes, 2), firstName = _names$childNodes4[0], surname = _names$childNodes4[1];
541
- _firstName$childNodes2 = _slicedToArray(firstName.childNodes, 1), label = _firstName$childNodes2[0];
542
- expect(label.textContent).toEqual("");
543
- checkRow(surname, 'Last name', 'Smith', false);
544
- case 15:
545
- case "end":
546
- return _context22.stop();
547
- }
548
- }, _callee22);
549
- })));
77
+ it('should show default title if none is provided', async () => {
78
+ await (0, _testUtils.act)(async () => {
79
+ (0, _setupTests.renderDomWithValidation)(/*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
80
+ pages: PAGES,
81
+ onRowAction: ON_ROW_ACTION,
82
+ onAction: ON_ACTION
83
+ }), container);
84
+ });
85
+ const cya = checkCYA(container);
86
+ const title = cya.childNodes[0];
87
+ expect(title.classList).toContain('govuk-heading-l');
88
+ expect(title.textContent).toEqual(_CheckYourAnswers.DEFAULT_TITLE);
89
+ });
90
+ it('should allow title to be overridden', async () => {
91
+ const TITLE = 'Alpha Bravo Charlie';
92
+ await (0, _testUtils.act)(async () => {
93
+ (0, _setupTests.renderDomWithValidation)(/*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
94
+ title: TITLE,
95
+ pages: PAGES,
96
+ onRowAction: ON_ROW_ACTION,
97
+ onAction: ON_ACTION
98
+ }), container);
99
+ });
100
+ const cya = checkCYA(container);
101
+ const title = cya.childNodes[0];
102
+ expect(title.classList).toContain('govuk-heading-l');
103
+ expect(title.textContent).toEqual(TITLE);
104
+ });
105
+ it('should show readonly page components correctly', async () => {
106
+ await (0, _testUtils.act)(async () => {
107
+ (0, _setupTests.renderDomWithValidation)(/*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
108
+ pages: PAGES,
109
+ onRowAction: ON_ROW_ACTION,
110
+ onAction: ON_ACTION
111
+ }), container);
112
+ });
113
+ const cya = checkCYA(container);
114
+ const [, cyaChildNode] = cya.childNodes;
115
+ const names = cyaChildNode.childNodes[0];
116
+ expect(names.tagName).toEqual('DL');
117
+ expect(names.classList).toContain(`govuk-!-margin-bottom-${_CheckYourAnswers.DEFAULT_MARGIN_BOTTOM}`);
118
+ const [firstName, surname] = names.childNodes;
119
+ checkRow(firstName, 'First name', 'John', false);
120
+ checkRow(surname, 'Last name', 'Smith', false);
121
+ });
122
+ it('should show editable page components correctly', async () => {
123
+ await (0, _testUtils.act)(async () => {
124
+ (0, _setupTests.renderDomWithValidation)(/*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
125
+ pages: PAGES,
126
+ onRowAction: ON_ROW_ACTION,
127
+ onAction: ON_ACTION
128
+ }), container);
129
+ });
130
+ const cya = checkCYA(container);
131
+ const [,, title, cyaChildNode] = cya.childNodes;
132
+ const civilServant = cyaChildNode.childNodes[0];
133
+ expect(title.textContent).toEqual('Are you a civil servant?');
134
+ expect(civilServant.tagName).toEqual('DL');
135
+ expect(civilServant.classList).toContain(`govuk-!-margin-bottom-${_CheckYourAnswers.DEFAULT_MARGIN_BOTTOM}`);
136
+ const [status] = civilServant.childNodes;
137
+ checkRow(status, 'Are you a civil servant?', 'Yes', true);
138
+ });
139
+ it('should show editable page components correctly with page titles hidden', async () => {
140
+ await (0, _testUtils.act)(async () => {
141
+ (0, _setupTests.renderDomWithValidation)(/*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
142
+ pages: PAGES,
143
+ onRowAction: ON_ROW_ACTION,
144
+ onAction: ON_ACTION,
145
+ hide_page_titles: true
146
+ }), container);
147
+ });
148
+ const cya = checkCYA(container);
149
+ const [,, cyaChildNode] = cya.childNodes; // The title simply isn't returned
150
+ const civilServant = cyaChildNode.childNodes[0];
151
+ expect(civilServant.tagName).toEqual('DL');
152
+ expect(civilServant.classList).toContain(`govuk-!-margin-bottom-0`); // Changed margin if no titles
153
+ const [status] = civilServant.childNodes;
154
+ checkRow(status, 'Are you a civil servant?', 'Yes', true);
155
+ });
156
+ it('should show no title if is set to hidden', async () => {
157
+ await (0, _testUtils.act)(async () => {
158
+ (0, _setupTests.renderDomWithValidation)(/*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
159
+ pages: PAGES,
160
+ onRowAction: ON_ROW_ACTION,
161
+ onAction: ON_ACTION,
162
+ hide_title: true
163
+ }), container);
164
+ });
165
+ const cya = checkCYA(container);
166
+ const [cyaChildNode] = cya.childNodes;
167
+ const names = cyaChildNode.childNodes[0];
168
+ expect(names.tagName).toEqual('DL');
169
+ expect(names.classList).toContain(`govuk-!-margin-bottom-${_CheckYourAnswers.DEFAULT_MARGIN_BOTTOM}`);
170
+ const [firstName, surname] = names.childNodes;
171
+ checkRow(firstName, 'First name', 'John', false);
172
+ checkRow(surname, 'Last name', 'Smith', false);
173
+ });
174
+ it('should show task list in CYA style', async () => {
175
+ const sections = [{
176
+ name: 'These are your tasks',
177
+ tasks: [{
178
+ name: 'Task 1',
179
+ state: 'complete',
180
+ pages: ['names']
181
+ }, {
182
+ name: 'Task 2',
183
+ state: 'complete',
184
+ pages: ['grade']
185
+ }]
186
+ }];
187
+ await (0, _testUtils.act)(async () => {
188
+ (0, _setupTests.renderDomWithValidation)(/*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
189
+ pages: PAGES,
190
+ onRowAction: ON_ROW_ACTION,
191
+ onAction: ON_ACTION,
192
+ hide_title: true,
193
+ sections: sections,
194
+ type: "task-list-cya"
195
+ }), container);
196
+ });
197
+ const taskHeading1 = container.childNodes[0].childNodes[0];
198
+ expect(taskHeading1.tagName).toEqual('H2');
199
+ expect(taskHeading1.textContent).toEqual('Task 1');
200
+ expect(taskHeading1.classList).toContain("govuk-heading-m");
201
+ const namesPageHeading = container.childNodes[0].childNodes[1];
202
+ expect(namesPageHeading.tagName).toEqual('DIV');
203
+ expect(namesPageHeading.textContent).toContain('John');
204
+ expect(namesPageHeading.classList).toContain("group-of-rows");
205
+ const taskHeading2 = container.childNodes[0].childNodes[2];
206
+ expect(taskHeading2.tagName).toEqual('H2');
207
+ expect(taskHeading2.textContent).toEqual('Task 2');
208
+ expect(taskHeading2.classList).toContain("govuk-heading-m");
209
+ const gradePageHeading = container.childNodes[0].childNodes[3];
210
+ expect(gradePageHeading.tagName).toEqual('H3');
211
+ expect(gradePageHeading.textContent).toEqual("What's your grade?");
212
+ expect(gradePageHeading.classList).toContain("govuk-heading-s");
213
+ });
214
+ it('Show answers from multiple address fields into in one DL', async () => {
215
+ const ADDRESS_DATA = _utils.default.Data.setupForm(_group.default.pages, _group.default.components, _groupData.default);
216
+ const GROUP_PAGES = _utils.default.FormPage.getAll(_group.default.pages, _group.default.components, {
217
+ ...ADDRESS_DATA
218
+ });
219
+ await (0, _testUtils.act)(async () => {
220
+ (0, _setupTests.renderDomWithValidation)(/*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
221
+ pages: GROUP_PAGES,
222
+ onRowAction: ON_ROW_ACTION,
223
+ onAction: ON_ACTION,
224
+ hide_title: true
225
+ }), container);
226
+ });
227
+ const cya = checkCYA(container);
228
+ const groupedComponent = cya.childNodes[10];
229
+ const keyGroup = groupedComponent.childNodes[0].childNodes[0].childNodes[0];
230
+ expect(keyGroup.tagName).toEqual('DT');
231
+ expect(keyGroup.textContent).toEqual('Address details');
232
+ const valueGroup = groupedComponent.childNodes[0].childNodes[0].childNodes[1];
233
+ expect(valueGroup.childNodes.length).toEqual(4);
234
+ expect(valueGroup.tagName).toEqual('DD');
235
+ expect(valueGroup.childNodes[0].textContent).toContain('10 Downing Street');
236
+ expect(valueGroup.childNodes[1].textContent).toContain('City of Westminster');
237
+ expect(valueGroup.childNodes[2].textContent).toContain('London');
238
+ expect(valueGroup.childNodes[3].textContent).toContain('SW1A 2AA');
239
+ const changeButtonDiv = groupedComponent.childNodes[0].childNodes[0].childNodes[2];
240
+ expect(changeButtonDiv.classList).toContain('govuk-summary-list__actions');
241
+ const changeButton = changeButtonDiv.childNodes[0];
242
+ expect(changeButton.tagName).toEqual('A');
243
+ expect(changeButton.textContent).toEqual('Change address details');
244
+ });
245
+ it('should render a group with one action button', async () => {
246
+ const GROUP_PAGES = _utils.default.FormPage.getAll(_groupOfRow.default.pages, _groupOfRow.default.components, {
247
+ ...DATA
248
+ });
249
+ await (0, _testUtils.act)(async () => {
250
+ (0, _setupTests.renderDomWithValidation)(/*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
251
+ pages: GROUP_PAGES,
252
+ onRowAction: ON_ROW_ACTION,
253
+ onAction: ON_ACTION,
254
+ groups: _groupOfRow.default.cya.groups
255
+ }), container);
256
+ });
257
+ const cya = checkCYA(container);
258
+ const namesGroup = cya.childNodes[2];
259
+ const firstNameRow = namesGroup.childNodes[0].childNodes[0];
260
+ expect(firstNameRow.childNodes.length).toEqual(2);
261
+ expect(firstNameRow.childNodes[0].textContent).toEqual('First name (optional)');
262
+ expect(firstNameRow.childNodes[0].tagName).toEqual('DT');
263
+ expect(firstNameRow.childNodes[1].textContent).toEqual('John');
264
+ expect(firstNameRow.childNodes[1].tagName).toEqual('DD');
265
+ const surname = namesGroup.childNodes[0].childNodes[1];
266
+ expect(surname.childNodes.length).toEqual(2);
267
+ expect(surname.childNodes[0].textContent).toEqual('Last name (optional)');
268
+ expect(surname.childNodes[0].tagName).toEqual('DT');
269
+ expect(surname.childNodes[1].textContent).toEqual('Smith');
270
+ expect(surname.childNodes[1].tagName).toEqual('DD');
271
+ const changeButtonDiv = namesGroup.childNodes[0].childNodes[2];
272
+ expect(changeButtonDiv.classList).toContain('change-group-button');
273
+ const changeButton = changeButtonDiv.childNodes[0];
274
+ expect(changeButton.tagName).toEqual('A');
275
+ expect(changeButton.textContent).toEqual('Change names');
276
+ });
277
+ it('should show page components corrently with interpolated title and cya_label, if label is missing', async () => {
278
+ const _PAGES = [].concat(_userProfile.default.pages);
279
+ // eslint-disable-next-line no-template-curly-in-string
280
+ _PAGES[0] = {
281
+ ..._PAGES[0],
282
+ title: 'Alpha ID: ${businessKey}'
283
+ };
284
+ const _COMPONENTS = [].concat(_userProfile.default.components);
285
+ _COMPONENTS[0] = {
286
+ ..._COMPONENTS[0],
287
+ label: undefined,
288
+ required: true,
289
+ // eslint-disable-next-line no-template-curly-in-string
290
+ cya_label: "Text ${currentUser.familyName}"
291
+ };
292
+ const T_PAGES = _utils.default.FormPage.getAll(_PAGES, _COMPONENTS, DATA);
293
+ await (0, _testUtils.act)(async () => {
294
+ (0, _setupTests.renderDomWithValidation)(/*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
295
+ pages: T_PAGES,
296
+ onRowAction: ON_ROW_ACTION,
297
+ onAction: ON_ACTION
298
+ }), container);
299
+ });
300
+ const cya = checkCYA(container);
301
+ const [, cyaTitle, cyaChildNode] = cya.childNodes;
302
+ expect(cyaTitle.textContent).toEqual('Alpha ID: 123456789');
303
+ const names = cyaChildNode.childNodes[0];
304
+ expect(names.tagName).toEqual('DL');
305
+ expect(names.classList).toContain(`govuk-!-margin-bottom-${_CheckYourAnswers.DEFAULT_MARGIN_BOTTOM}`);
306
+ const [firstName, surname] = names.childNodes;
307
+ const [label] = firstName.childNodes;
308
+ expect(label.textContent).toEqual('Text Smith');
309
+ checkRow(surname, 'Last name', 'Smith', false);
310
+ });
311
+ it('should show page components corrently with no label, if label and cya_label are missing', async () => {
312
+ const _PAGES = [].concat(_userProfile.default.pages);
313
+ const _COMPONENTS = [].concat(_userProfile.default.components);
314
+ _COMPONENTS[0] = {
315
+ ..._COMPONENTS[0],
316
+ label: undefined,
317
+ required: true,
318
+ cya_label: undefined
319
+ };
320
+ const T_PAGES = _utils.default.FormPage.getAll(_PAGES, _COMPONENTS, {
321
+ ...DATA
322
+ });
323
+ await (0, _testUtils.act)(async () => {
324
+ (0, _setupTests.renderDomWithValidation)(/*#__PURE__*/_react.default.createElement(_CheckYourAnswers.default, {
325
+ pages: T_PAGES,
326
+ onRowAction: ON_ROW_ACTION,
327
+ onAction: ON_ACTION
328
+ }), container);
329
+ });
330
+ const cya = checkCYA(container);
331
+ const [, cyaChildNode] = cya.childNodes;
332
+ const names = cyaChildNode.childNodes[0];
333
+ expect(names.tagName).toEqual('DL');
334
+ expect(names.classList).toContain(`govuk-!-margin-bottom-${_CheckYourAnswers.DEFAULT_MARGIN_BOTTOM}`);
335
+ const [firstName, surname] = names.childNodes;
336
+ const [label] = firstName.childNodes;
337
+ expect(label.textContent).toEqual("");
338
+ checkRow(surname, 'Last name', 'Smith', false);
339
+ });
550
340
  });
551
341
  });