@ukhomeoffice/cop-react-form-renderer 6.0.6-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.
Files changed (390) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +12 -12
  2. package/dist/components/CheckYourAnswers/Answer.test.js +92 -127
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +101 -131
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.scss +2 -2
  5. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +463 -769
  6. package/dist/components/CollectionPage/CollectionPage.js +75 -59
  7. package/dist/components/CollectionPage/CollectionPage.test.js +316 -366
  8. package/dist/components/CollectionSummary/BannerStrip.js +15 -14
  9. package/dist/components/CollectionSummary/BannerStrip.scss +2 -2
  10. package/dist/components/CollectionSummary/BannerStrip.test.js +98 -59
  11. package/dist/components/CollectionSummary/CollectionSummary.js +144 -135
  12. package/dist/components/CollectionSummary/CollectionSummary.scss +1 -1
  13. package/dist/components/CollectionSummary/CollectionSummary.test.js +167 -197
  14. package/dist/components/CollectionSummary/Confirmation.js +14 -12
  15. package/dist/components/CollectionSummary/Confirmation.scss +1 -1
  16. package/dist/components/CollectionSummary/Confirmation.test.js +68 -63
  17. package/dist/components/CollectionSummary/RenderListView.js +54 -56
  18. package/dist/components/CollectionSummary/RenderListView.scss +10 -1
  19. package/dist/components/CollectionSummary/RenderListView.test.js +89 -78
  20. package/dist/components/CollectionSummary/SummaryCard.js +135 -145
  21. package/dist/components/CollectionSummary/SummaryCard.scss +2 -1
  22. package/dist/components/CollectionSummary/SummaryCard.test.js +943 -932
  23. package/dist/components/CollectionSummary/SummaryCardDetails.js +120 -62
  24. package/dist/components/CollectionSummary/SummaryCardDetails.scss +43 -6
  25. package/dist/components/CollectionSummary/SummaryCardDetails.test.js +261 -120
  26. package/dist/components/CollectionSummary/SummaryCardValidationContext.js +38 -33
  27. package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +62 -73
  28. package/dist/components/FormComponent/Collection.js +81 -108
  29. package/dist/components/FormComponent/Collection.test.js +909 -943
  30. package/dist/components/FormComponent/Container.js +40 -38
  31. package/dist/components/FormComponent/Container.test.js +314 -345
  32. package/dist/components/FormComponent/FormComponent.js +80 -71
  33. package/dist/components/FormComponent/FormComponent.test.js +353 -414
  34. package/dist/components/FormComponent/helpers/addLabel.js +4 -7
  35. package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -1
  36. package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +7 -7
  37. package/dist/components/FormComponent/helpers/getComponentError.js +3 -5
  38. package/dist/components/FormComponent/helpers/getComponentError.test.js +14 -14
  39. package/dist/components/FormComponent/helpers/getComponentFieldSet.js +3 -4
  40. package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +6 -6
  41. package/dist/components/FormComponent/helpers/index.js +4 -4
  42. package/dist/components/FormPage/FormPage.js +65 -80
  43. package/dist/components/FormPage/FormPage.scss +1 -1
  44. package/dist/components/FormPage/FormPage.test.js +127 -163
  45. package/dist/components/FormRenderer/FormRenderer.js +150 -183
  46. package/dist/components/FormRenderer/FormRenderer.scss +1 -1
  47. package/dist/components/FormRenderer/FormRenderer.test.js +730 -1115
  48. package/dist/components/FormRenderer/handlers/cyaAction.js +2 -2
  49. package/dist/components/FormRenderer/handlers/getPageId.js +1 -3
  50. package/dist/components/FormRenderer/handlers/getPageId.test.js +14 -14
  51. package/dist/components/FormRenderer/handlers/handlers.test.js +32 -32
  52. package/dist/components/FormRenderer/handlers/index.js +1 -1
  53. package/dist/components/FormRenderer/handlers/navigate.js +3 -3
  54. package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
  55. package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
  56. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +15 -15
  57. package/dist/components/FormRenderer/helpers/canCYASubmit.js +1 -3
  58. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +16 -20
  59. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +17 -22
  60. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +16 -16
  61. package/dist/components/FormRenderer/helpers/getCYA.js +3 -5
  62. package/dist/components/FormRenderer/helpers/getCYA.test.js +11 -11
  63. package/dist/components/FormRenderer/helpers/getFormState.js +5 -7
  64. package/dist/components/FormRenderer/helpers/getFormState.test.js +10 -10
  65. package/dist/components/FormRenderer/helpers/getNextPageId.js +13 -24
  66. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +67 -67
  67. package/dist/components/FormRenderer/helpers/getPage.js +2 -4
  68. package/dist/components/FormRenderer/helpers/getPage.test.js +11 -11
  69. package/dist/components/FormRenderer/helpers/getRelevantPages.js +7 -9
  70. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +14 -14
  71. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +5 -5
  72. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +103 -97
  73. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +62 -60
  74. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +71 -78
  75. package/dist/components/FormRenderer/helpers/index.js +2 -4
  76. package/dist/components/FormRenderer/onCYAAction.js +59 -51
  77. package/dist/components/FormRenderer/onCYAAction.test.js +164 -152
  78. package/dist/components/FormRenderer/onPageAction.js +50 -48
  79. package/dist/components/FormRenderer/onPageAction.test.js +241 -217
  80. package/dist/components/FormRenderer/onTaskAction.js +9 -13
  81. package/dist/components/FormRenderer/onTaskAction.test.js +93 -88
  82. package/dist/components/PageActions/ActionButton.js +12 -15
  83. package/dist/components/PageActions/ActionButton.test.js +56 -78
  84. package/dist/components/PageActions/PageActions.js +10 -10
  85. package/dist/components/PageActions/PageActions.test.js +86 -115
  86. package/dist/components/SummaryList/GroupAction.js +9 -17
  87. package/dist/components/SummaryList/GroupAction.test.js +37 -33
  88. package/dist/components/SummaryList/RowAction.js +11 -16
  89. package/dist/components/SummaryList/RowAction.test.js +37 -33
  90. package/dist/components/SummaryList/SummaryList.js +21 -26
  91. package/dist/components/SummaryList/SummaryList.scss +2 -2
  92. package/dist/components/SummaryList/SummaryList.test.js +143 -166
  93. package/dist/components/SummaryList/SummaryListHeadingRow.js +6 -4
  94. package/dist/components/SummaryList/SummaryListRow.js +6 -4
  95. package/dist/components/SummaryList/SummaryListTitleRow.js +5 -3
  96. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +3 -5
  97. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +22 -22
  98. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +3 -5
  99. package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +22 -22
  100. package/dist/components/SummaryList/helpers/index.js +1 -1
  101. package/dist/components/TaskList/Task.js +19 -29
  102. package/dist/components/TaskList/Task.test.js +83 -76
  103. package/dist/components/TaskList/TaskList.js +45 -71
  104. package/dist/components/TaskList/TaskList.scss +1 -1
  105. package/dist/components/TaskList/TaskList.test.js +113 -111
  106. package/dist/components/TaskList/TaskState.js +7 -5
  107. package/dist/components/TaskList/TaskState.test.js +52 -45
  108. package/dist/components/index.js +7 -7
  109. package/dist/context/HooksContext/HooksContext.js +57 -80
  110. package/dist/context/HooksContext/HooksContext.test.js +26 -35
  111. package/dist/context/HooksContext/index.js +3 -4
  112. package/dist/context/ValidationContext/ValidationContext.js +65 -72
  113. package/dist/context/ValidationContext/ValidationContext.test.js +58 -61
  114. package/dist/context/ValidationContext/index.js +3 -4
  115. package/dist/context/index.js +2 -2
  116. package/dist/hooks/index.js +9 -10
  117. package/dist/hooks/useAxios.js +14 -40
  118. package/dist/hooks/useGetRequest.js +61 -97
  119. package/dist/hooks/useHooks.js +1 -3
  120. package/dist/hooks/useRefData.js +27 -40
  121. package/dist/hooks/useValidation.js +1 -3
  122. package/dist/index.js +13 -14
  123. package/dist/models/CollectionLabels.js +1 -1
  124. package/dist/models/ComponentTypes.js +25 -25
  125. package/dist/models/EventTypes.js +4 -4
  126. package/dist/models/FormPages.js +4 -4
  127. package/dist/models/FormTypes.js +8 -8
  128. package/dist/models/HubFormats.js +3 -3
  129. package/dist/models/PageAction.js +44 -38
  130. package/dist/models/TaskStates.js +29 -28
  131. package/dist/models/index.js +9 -9
  132. package/dist/setupTests.js +30 -31
  133. package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
  134. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +52 -54
  135. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +15 -25
  136. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +33 -35
  137. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +17 -31
  138. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +42 -44
  139. package/dist/utils/CheckYourAnswers/getCYARow.js +6 -6
  140. package/dist/utils/CheckYourAnswers/getCYARow.test.js +86 -86
  141. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +18 -24
  142. package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +15 -16
  143. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +33 -36
  144. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +58 -61
  145. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +83 -89
  146. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +164 -138
  147. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +25 -20
  148. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +103 -97
  149. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +13 -18
  150. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +70 -76
  151. package/dist/utils/CheckYourAnswers/getComponentRowForCYA.js +11 -11
  152. package/dist/utils/CheckYourAnswers/getComponentRowForCYA.test.js +7 -7
  153. package/dist/utils/CheckYourAnswers/index.js +1 -1
  154. package/dist/utils/CheckYourAnswers/showComponentCYA.js +4 -5
  155. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +29 -24
  156. package/dist/utils/CollectionPage/addCollectionPageEntry.js +3 -4
  157. package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +7 -27
  158. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +2 -2
  159. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +17 -18
  160. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +29 -19
  161. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +66 -22
  162. package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
  163. package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +10 -10
  164. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +7 -11
  165. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +22 -22
  166. package/dist/utils/CollectionPage/getCollectionPageData.js +8 -12
  167. package/dist/utils/CollectionPage/getCollectionPageData.test.js +19 -19
  168. package/dist/utils/CollectionPage/getErrorsForCollection.js +55 -0
  169. package/dist/utils/CollectionPage/getErrorsForCollection.test.js +153 -0
  170. package/dist/utils/CollectionPage/getQuickEditPage.js +37 -23
  171. package/dist/utils/CollectionPage/getQuickEditPage.test.js +26 -45
  172. package/dist/utils/CollectionPage/index.js +3 -1
  173. package/dist/utils/CollectionPage/mergeCollectionPages.js +31 -35
  174. package/dist/utils/CollectionPage/mergeCollectionPages.test.js +20 -20
  175. package/dist/utils/CollectionPage/removeCollectionPageEntry.js +4 -6
  176. package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +10 -10
  177. package/dist/utils/CollectionPage/setCollectionPageData.js +16 -17
  178. package/dist/utils/CollectionPage/setCollectionPageData.test.js +38 -20
  179. package/dist/utils/Component/addShowWhen.js +4 -8
  180. package/dist/utils/Component/addShowWhen.test.js +37 -37
  181. package/dist/utils/Component/applyToComponentTree.js +18 -18
  182. package/dist/utils/Component/applyToComponentTree.test.js +27 -32
  183. package/dist/utils/Component/cleanAttributes.js +10 -13
  184. package/dist/utils/Component/cleanAttributes.test.js +17 -18
  185. package/dist/utils/Component/elevateNestedComponents.js +5 -5
  186. package/dist/utils/Component/elevateNestedComponents.test.js +30 -30
  187. package/dist/utils/Component/getComponent.js +88 -94
  188. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +18 -17
  189. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +46 -59
  190. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +39 -48
  191. package/dist/utils/Component/getComponentTests/getComponent.date.test.js +23 -33
  192. package/dist/utils/Component/getComponentTests/getComponent.details.test.js +20 -18
  193. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +17 -22
  194. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +20 -25
  195. package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +10 -9
  196. package/dist/utils/Component/getComponentTests/getComponent.html.test.js +17 -15
  197. package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +9 -8
  198. package/dist/utils/Component/getComponentTests/getComponent.list.test.js +17 -15
  199. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +22 -26
  200. package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +155 -175
  201. package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +17 -15
  202. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +17 -22
  203. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +57 -72
  204. package/dist/utils/Component/getComponentTests/getComponent.select.test.js +17 -22
  205. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +17 -22
  206. package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +31 -38
  207. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +20 -29
  208. package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +2 -2
  209. package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +9 -8
  210. package/dist/utils/Component/getDefaultValue.js +6 -8
  211. package/dist/utils/Component/getDefaultValue.test.js +12 -12
  212. package/dist/utils/Component/getDefaultValueFromConfig.js +22 -21
  213. package/dist/utils/Component/getDefaultValueFromConfig.test.js +31 -31
  214. package/dist/utils/Component/index.js +1 -1
  215. package/dist/utils/Component/isEditable.js +2 -4
  216. package/dist/utils/Component/isEditable.test.js +14 -15
  217. package/dist/utils/Component/optionIsSelected.js +1 -1
  218. package/dist/utils/Component/optionIsSelected.test.js +9 -9
  219. package/dist/utils/Component/setupContainerComponentsPath.js +27 -29
  220. package/dist/utils/Component/setupContainerComponentsPath.test.js +11 -11
  221. package/dist/utils/Component/showComponent.js +1 -1
  222. package/dist/utils/Component/showComponent.test.js +28 -28
  223. package/dist/utils/Component/wrapInFormGroup.js +2 -2
  224. package/dist/utils/Condition/index.js +1 -1
  225. package/dist/utils/Condition/meetsAllConditions.js +8 -8
  226. package/dist/utils/Condition/meetsAllConditions.test.js +20 -20
  227. package/dist/utils/Condition/meetsCondition.js +28 -19
  228. package/dist/utils/Condition/meetsCondition.test.js +476 -376
  229. package/dist/utils/Condition/meetsOneCondition.js +5 -5
  230. package/dist/utils/Condition/meetsOneCondition.test.js +16 -16
  231. package/dist/utils/Condition/setupConditions.js +13 -18
  232. package/dist/utils/Condition/setupConditions.test.js +7 -7
  233. package/dist/utils/Container/getEditableComponents.js +3 -5
  234. package/dist/utils/Container/getEditableComponents.test.js +43 -45
  235. package/dist/utils/Container/index.js +1 -1
  236. package/dist/utils/Container/setupNesting.js +16 -20
  237. package/dist/utils/Container/setupNesting.test.js +27 -30
  238. package/dist/utils/Container/showContainer.js +3 -7
  239. package/dist/utils/Container/showContainer.test.js +30 -30
  240. package/dist/utils/Data/applyFormula.js +38 -48
  241. package/dist/utils/Data/applyFormula.test.js +20 -20
  242. package/dist/utils/Data/getAutocompleteSource.js +18 -26
  243. package/dist/utils/Data/getAutocompleteSource.test.js +80 -86
  244. package/dist/utils/Data/getDataPath.js +18 -28
  245. package/dist/utils/Data/getDataPath.test.js +12 -12
  246. package/dist/utils/Data/getOptions.js +29 -25
  247. package/dist/utils/Data/getOptions.test.js +93 -20
  248. package/dist/utils/Data/getSourceData.js +6 -19
  249. package/dist/utils/Data/getSourceData.test.js +84 -80
  250. package/dist/utils/Data/index.js +1 -1
  251. package/dist/utils/Data/nestInRefdataOptions.js +42 -0
  252. package/dist/utils/Data/nestInRefdataOptions.test.js +236 -0
  253. package/dist/utils/Data/refDataToOptions.js +10 -13
  254. package/dist/utils/Data/refDataToOptions.test.js +19 -19
  255. package/dist/utils/Data/setDataItem.js +7 -8
  256. package/dist/utils/Data/setDataItem.test.js +37 -37
  257. package/dist/utils/Data/setupFormData.js +13 -21
  258. package/dist/utils/Data/setupFormData.test.js +51 -50
  259. package/dist/utils/Data/setupRefDataUrlForComponent.js +20 -26
  260. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +24 -24
  261. package/dist/utils/FormPage/applyConditionalProperties.js +5 -9
  262. package/dist/utils/FormPage/applyConditionalProperties.test.js +15 -18
  263. package/dist/utils/FormPage/getConditionalText.js +3 -3
  264. package/dist/utils/FormPage/getConditionalText.test.js +29 -29
  265. package/dist/utils/FormPage/getFormPage.js +15 -16
  266. package/dist/utils/FormPage/getFormPage.test.js +47 -46
  267. package/dist/utils/FormPage/getFormPages.js +7 -12
  268. package/dist/utils/FormPage/getFormPages.test.js +20 -23
  269. package/dist/utils/FormPage/getPageActions.js +9 -15
  270. package/dist/utils/FormPage/getPageActions.test.js +32 -32
  271. package/dist/utils/FormPage/getParagraphFromText.js +5 -7
  272. package/dist/utils/FormPage/getParagraphFromText.test.js +6 -6
  273. package/dist/utils/FormPage/index.js +2 -4
  274. package/dist/utils/FormPage/showFormPage.js +3 -7
  275. package/dist/utils/FormPage/showFormPage.test.js +32 -32
  276. package/dist/utils/FormPage/showFormPageCYA.js +1 -1
  277. package/dist/utils/FormPage/showFormPageCYA.test.js +8 -8
  278. package/dist/utils/FormPage/useComponent.js +21 -28
  279. package/dist/utils/FormPage/useComponent.test.js +77 -79
  280. package/dist/utils/Format/formatData.js +1 -1
  281. package/dist/utils/Format/formatData.test.js +18 -18
  282. package/dist/utils/Format/formatDataForComponent.js +5 -6
  283. package/dist/utils/Format/formatDataForComponent.test.js +50 -78
  284. package/dist/utils/Format/formatDataForForm.js +6 -8
  285. package/dist/utils/Format/formatDataForForm.test.js +13 -16
  286. package/dist/utils/Format/formatDataForPage.js +4 -5
  287. package/dist/utils/Format/formatDataForPage.test.js +20 -25
  288. package/dist/utils/Format/index.js +1 -1
  289. package/dist/utils/Hub/getFormHub.js +1 -1
  290. package/dist/utils/Hub/getFormHub.test.js +28 -31
  291. package/dist/utils/Hub/index.js +1 -1
  292. package/dist/utils/Meta/constants.js +2 -2
  293. package/dist/utils/Meta/documents/getDocuments.js +1 -1
  294. package/dist/utils/Meta/documents/getDocuments.test.js +24 -16
  295. package/dist/utils/Meta/documents/index.js +1 -1
  296. package/dist/utils/Meta/documents/setDocumentsForField.js +14 -16
  297. package/dist/utils/Meta/documents/setDocumentsForField.test.js +68 -34
  298. package/dist/utils/Meta/index.js +1 -1
  299. package/dist/utils/Operate/checkValueIsTruthy.js +2 -2
  300. package/dist/utils/Operate/checkValueIsTruthy.test.js +16 -16
  301. package/dist/utils/Operate/getFirstOf.js +5 -5
  302. package/dist/utils/Operate/getFirstOf.test.js +31 -31
  303. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +10 -10
  304. package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +46 -52
  305. package/dist/utils/Operate/index.js +1 -1
  306. package/dist/utils/Operate/persistValueInFormData.js +3 -3
  307. package/dist/utils/Operate/persistValueInFormData.test.js +22 -20
  308. package/dist/utils/Operate/runPageOperations.js +7 -7
  309. package/dist/utils/Operate/runPageOperations.test.js +35 -36
  310. package/dist/utils/Operate/setValueInFormData.js +2 -2
  311. package/dist/utils/Operate/setValueInFormData.test.js +16 -16
  312. package/dist/utils/Operate/shouldRun.js +6 -6
  313. package/dist/utils/Operate/shouldRun.test.js +21 -27
  314. package/dist/utils/Validate/additional/conditionallyRequired.js +4 -4
  315. package/dist/utils/Validate/additional/conditionallyRequired.test.js +18 -18
  316. package/dist/utils/Validate/additional/index.js +6 -6
  317. package/dist/utils/Validate/additional/index.test.js +12 -12
  318. package/dist/utils/Validate/additional/mustBeAfter.js +2 -2
  319. package/dist/utils/Validate/additional/mustBeAfter.test.js +40 -40
  320. package/dist/utils/Validate/additional/mustBeBefore.js +2 -2
  321. package/dist/utils/Validate/additional/mustBeBefore.test.js +28 -28
  322. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +7 -11
  323. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +37 -41
  324. package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
  325. package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +18 -18
  326. package/dist/utils/Validate/additional/mustBeInTheFuture.js +2 -2
  327. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +12 -12
  328. package/dist/utils/Validate/additional/mustBeInThePast.js +3 -3
  329. package/dist/utils/Validate/additional/mustBeInThePast.test.js +12 -12
  330. package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
  331. package/dist/utils/Validate/additional/mustBeLessThan.test.js +17 -17
  332. package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
  333. package/dist/utils/Validate/additional/mustBeLongerThan.test.js +16 -16
  334. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
  335. package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +20 -20
  336. package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
  337. package/dist/utils/Validate/additional/mustBeShorterThan.test.js +16 -16
  338. package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +8 -4
  339. package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +64 -32
  340. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +2 -2
  341. package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +14 -16
  342. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
  343. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +12 -12
  344. package/dist/utils/Validate/additional/mustNotContainSql.js +3 -4
  345. package/dist/utils/Validate/additional/mustNotContainSql.test.js +14 -14
  346. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +2 -2
  347. package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +28 -26
  348. package/dist/utils/Validate/additional/utils.js +9 -22
  349. package/dist/utils/Validate/index.js +1 -1
  350. package/dist/utils/Validate/validateCollection.js +19 -25
  351. package/dist/utils/Validate/validateCollection.test.js +74 -66
  352. package/dist/utils/Validate/validateComponent.js +17 -15
  353. package/dist/utils/Validate/validateComponent.test.js +167 -146
  354. package/dist/utils/Validate/validateContainer.js +16 -19
  355. package/dist/utils/Validate/validateContainer.test.js +84 -45
  356. package/dist/utils/Validate/validateDate.js +15 -21
  357. package/dist/utils/Validate/validateDate.test.js +31 -32
  358. package/dist/utils/Validate/validateEmail.js +6 -8
  359. package/dist/utils/Validate/validateEmail.test.js +25 -25
  360. package/dist/utils/Validate/validateMultifile.js +5 -7
  361. package/dist/utils/Validate/validateMultifile.test.js +17 -18
  362. package/dist/utils/Validate/validatePage.js +24 -18
  363. package/dist/utils/Validate/validatePage.test.js +263 -182
  364. package/dist/utils/Validate/validateRegex.js +3 -5
  365. package/dist/utils/Validate/validateRegex.test.js +14 -14
  366. package/dist/utils/Validate/validateRequired.js +4 -6
  367. package/dist/utils/Validate/validateRequired.test.js +18 -18
  368. package/dist/utils/Validate/validateTextArea.js +4 -6
  369. package/dist/utils/Validate/validateTextArea.test.js +20 -20
  370. package/dist/utils/Validate/validateTime.js +11 -18
  371. package/dist/utils/Validate/validateTime.test.js +16 -16
  372. package/dist/utils/index.js +7 -9
  373. package/package.json +5 -5
  374. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-data.json +0 -4
  375. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/component-used-in-multiple-pages-form.json +0 -61
  376. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collection-data-removed.json +0 -4
  377. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-collections.json +0 -8
  378. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components-removed.json +0 -3
  379. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-components.json +0 -5
  380. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-entire-collection-removed.json +0 -3
  381. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-component-removed.json +0 -10
  382. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/data-with-nested-components.json +0 -11
  383. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-for-nested-components.json +0 -96
  384. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections-delete-entire.json +0 -47
  385. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-collections.json +0 -46
  386. package/dist/components/FormRenderer/clear-uncompleted-routes/test-data/form-with-components.json +0 -48
  387. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.js +0 -175
  388. package/dist/components/FormRenderer/helpers/clearOutUncompletedRoutes.test.js +0 -113
  389. package/dist/components/FormRenderer/helpers/deleteNodeByPath.js +0 -20
  390. package/dist/components/FormRenderer/helpers/deleteNodeByPath.test.js +0 -56
@@ -3,55 +3,49 @@
3
3
  var _models = require("../../models");
4
4
  var _validatePage = _interopRequireDefault(require("./validatePage"));
5
5
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
- function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
7
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9
- function _defineProperty(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; }
10
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
11
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } // Local imports
12
- describe('utils.Validate.Page', function () {
13
- var setup = function setup(id, type, label, required) {
14
- return {
15
- id: id,
16
- fieldId: id,
17
- type: type,
18
- label: label,
19
- required: required
20
- };
21
- };
22
- describe('with FormPage', function () {
23
- it('should return no error when the components array is null', function () {
24
- var PAGE = {
6
+ // Local imports
7
+
8
+ describe('utils.Validate.Page', () => {
9
+ const setup = (id, type, label, required) => ({
10
+ id,
11
+ fieldId: id,
12
+ type,
13
+ label,
14
+ required
15
+ });
16
+ describe('with FormPage', () => {
17
+ it('should return no error when the components array is null', () => {
18
+ const PAGE = {
25
19
  components: null,
26
20
  formData: null
27
21
  };
28
22
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
29
23
  });
30
- it('should return no error when the components array is empty', function () {
31
- var PAGE = {
24
+ it('should return no error when the components array is empty', () => {
25
+ const PAGE = {
32
26
  components: [],
33
27
  formData: null
34
28
  };
35
29
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
36
30
  });
37
- describe('when there is no form data', function () {
38
- it('should return no errors when no components are required', function () {
39
- var COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', false), setup('b', _models.ComponentTypes.TEXT, 'Bravo', false)];
40
- var PAGE = {
31
+ describe('when there is no form data', () => {
32
+ it('should return no errors when no components are required', () => {
33
+ const COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', false), setup('b', _models.ComponentTypes.TEXT, 'Bravo', false)];
34
+ const PAGE = {
41
35
  components: COMPONENTS,
42
36
  formData: null
43
37
  };
44
38
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
45
39
  });
46
- it('should return an error for each required component', function () {
47
- var COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
40
+ it('should return an error for each required component', () => {
41
+ const COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
48
42
  // The only unrequired one
49
43
  setup('d', _models.ComponentTypes.TEXT, 'Delta', true), setup('e', _models.ComponentTypes.TEXT, 'Echo', true)];
50
- var PAGE = {
44
+ const PAGE = {
51
45
  components: COMPONENTS,
52
46
  formData: null
53
47
  };
54
- var RESULT = (0, _validatePage.default)(PAGE);
48
+ const RESULT = (0, _validatePage.default)(PAGE);
55
49
  expect(RESULT.length).toEqual(4);
56
50
  expect(RESULT[0]).toEqual({
57
51
  id: 'a',
@@ -70,18 +64,18 @@ describe('utils.Validate.Page', function () {
70
64
  error: 'Echo is required'
71
65
  });
72
66
  });
73
- it('should return an error for each required component on a collection page', function () {
74
- var COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
67
+ it('should return an error for each required component on a collection page', () => {
68
+ const COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
75
69
  // The only unrequired one
76
70
  setup('d', _models.ComponentTypes.TEXT, 'Delta', true), setup('e', _models.ComponentTypes.TEXT, 'Echo', true)];
77
- var PAGE = {
71
+ const PAGE = {
78
72
  components: COMPONENTS,
79
73
  collection: {
80
74
  name: 'testCollection'
81
75
  },
82
76
  formData: null
83
77
  };
84
- var RESULT = (0, _validatePage.default)(PAGE);
78
+ const RESULT = (0, _validatePage.default)(PAGE);
85
79
  expect(RESULT.length).toEqual(4);
86
80
  expect(RESULT[0]).toEqual({
87
81
  id: 'a',
@@ -100,18 +94,18 @@ describe('utils.Validate.Page', function () {
100
94
  error: 'Echo is required'
101
95
  });
102
96
  });
103
- it('should return an error for each required component on a nested collection page', function () {
104
- var COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
97
+ it('should return an error for each required component on a nested collection page', () => {
98
+ const COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
105
99
  // The only unrequired one
106
100
  setup('d', _models.ComponentTypes.TEXT, 'Delta', true), setup('e', _models.ComponentTypes.TEXT, 'Echo', true)];
107
- var PAGE = {
101
+ const PAGE = {
108
102
  components: COMPONENTS,
109
103
  collection: {
110
104
  name: 'parent.child'
111
105
  },
112
106
  formData: null
113
107
  };
114
- var RESULT = (0, _validatePage.default)(PAGE);
108
+ const RESULT = (0, _validatePage.default)(PAGE);
115
109
  expect(RESULT.length).toEqual(4);
116
110
  expect(RESULT).toEqual([{
117
111
  id: 'a',
@@ -127,8 +121,8 @@ describe('utils.Validate.Page', function () {
127
121
  error: 'Echo is required'
128
122
  }]);
129
123
  });
130
- it('should return an error for each required component with interpolated label', function () {
131
- var COMPONENTS = [
124
+ it('should return an error for each required component with interpolated label', () => {
125
+ const COMPONENTS = [
132
126
  // eslint-disable-next-line no-template-curly-in-string
133
127
  setup('a', _models.ComponentTypes.TEXT, 'Alpha ${tiger}', true),
134
128
  // eslint-disable-next-line no-template-curly-in-string
@@ -139,7 +133,7 @@ describe('utils.Validate.Page', function () {
139
133
  setup('d', _models.ComponentTypes.CHECKBOXES, 'Delta ${lion}', true),
140
134
  // eslint-disable-next-line no-template-curly-in-string
141
135
  setup('e', _models.ComponentTypes.FILE, 'Echo ${zoo}', true)];
142
- var PAGE = {
136
+ const PAGE = {
143
137
  components: COMPONENTS,
144
138
  formData: {
145
139
  tiger: 'Tiger',
@@ -149,7 +143,7 @@ describe('utils.Validate.Page', function () {
149
143
  zoo: 'Zoo'
150
144
  }
151
145
  };
152
- var RESULT = (0, _validatePage.default)(PAGE);
146
+ const RESULT = (0, _validatePage.default)(PAGE);
153
147
  expect(RESULT.length).toEqual(5);
154
148
  expect(RESULT).toEqual([{
155
149
  id: 'a',
@@ -169,90 +163,90 @@ describe('utils.Validate.Page', function () {
169
163
  }]);
170
164
  });
171
165
  });
172
- describe('when the form data is fully valid', function () {
173
- var DATA = {
166
+ describe('when the form data is fully valid', () => {
167
+ const DATA = {
174
168
  alpha: 'alpha.smith@digital.homeoffice.gov.uk',
175
169
  bravo: 'bravo.jones@digital.homeoffice.gov.uk'
176
170
  };
177
- it('should return no errors when none of the components are required or email types', function () {
178
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', false), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', false)];
179
- var PAGE = {
171
+ it('should return no errors when none of the components are required or email types', () => {
172
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', false), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', false)];
173
+ const PAGE = {
180
174
  components: COMPONENTS,
181
175
  formData: DATA
182
176
  };
183
177
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
184
178
  });
185
- it('should return no errors when all of the components are required but not email types', function () {
186
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', true), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', true)];
187
- var PAGE = {
179
+ it('should return no errors when all of the components are required but not email types', () => {
180
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', true), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', true)];
181
+ const PAGE = {
188
182
  components: COMPONENTS,
189
183
  formData: DATA
190
184
  };
191
185
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
192
186
  });
193
- it('should return no errors when none of the components are required but are all email types', function () {
194
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', false), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', false)];
195
- var PAGE = {
187
+ it('should return no errors when none of the components are required but are all email types', () => {
188
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', false), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', false)];
189
+ const PAGE = {
196
190
  components: COMPONENTS,
197
191
  formData: DATA
198
192
  };
199
193
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
200
194
  });
201
- it('should return no errors when all of the components are required and email types', function () {
202
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', true)];
203
- var PAGE = {
195
+ it('should return no errors when all of the components are required and email types', () => {
196
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', true)];
197
+ const PAGE = {
204
198
  components: COMPONENTS,
205
199
  formData: DATA
206
200
  };
207
201
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
208
202
  });
209
203
  });
210
- describe('when the form data has one field missing and includes an invalid email', function () {
211
- var DATA = {
204
+ describe('when the form data has one field missing and includes an invalid email', () => {
205
+ const DATA = {
212
206
  alpha: 'alpha.smith@digital.homeoffice.gov.uk',
213
207
  bravo: 'bravo.jones@hotmail.com'
214
208
  };
215
- it('should return no errors when none of the components are required or email types', function () {
216
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', false), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', false), setup('charlie', _models.ComponentTypes.TEXT, 'Charlie', false)];
217
- var PAGE = {
209
+ it('should return no errors when none of the components are required or email types', () => {
210
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', false), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', false), setup('charlie', _models.ComponentTypes.TEXT, 'Charlie', false)];
211
+ const PAGE = {
218
212
  components: COMPONENTS,
219
213
  formData: null
220
214
  };
221
215
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
222
216
  });
223
- it('should return an error for the missing field when all are required but not email types', function () {
224
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', true), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', true), setup('charlie', _models.ComponentTypes.TEXT, 'Charlie', true)];
225
- var PAGE = {
217
+ it('should return an error for the missing field when all are required but not email types', () => {
218
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', true), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', true), setup('charlie', _models.ComponentTypes.TEXT, 'Charlie', true)];
219
+ const PAGE = {
226
220
  components: COMPONENTS,
227
221
  formData: DATA
228
222
  };
229
- var RESULT = (0, _validatePage.default)(PAGE);
223
+ const RESULT = (0, _validatePage.default)(PAGE);
230
224
  expect(RESULT.length).toEqual(1);
231
225
  expect(RESULT[0]).toEqual({
232
226
  id: 'charlie',
233
227
  error: 'Charlie is required'
234
228
  });
235
229
  });
236
- it('should return an error for the invalid email field when none are required but all email types', function () {
237
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', false), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', false), setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie', false)];
238
- var PAGE = {
230
+ it('should return an error for the invalid email field when none are required but all email types', () => {
231
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', false), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', false), setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie', false)];
232
+ const PAGE = {
239
233
  components: COMPONENTS,
240
234
  formData: DATA
241
235
  };
242
- var RESULT = (0, _validatePage.default)(PAGE);
236
+ const RESULT = (0, _validatePage.default)(PAGE);
243
237
  expect(RESULT.length).toEqual(1);
244
238
  expect(RESULT[0]).toEqual({
245
239
  id: 'bravo',
246
240
  error: 'Enter bravo in the correct format, like jane.doe@homeoffice.gov.uk'
247
241
  });
248
242
  });
249
- it('should return an error for both invalid fields when all are required and email types', function () {
250
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', true), setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie', true)];
251
- var PAGE = {
243
+ it('should return an error for both invalid fields when all are required and email types', () => {
244
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', true), setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie', true)];
245
+ const PAGE = {
252
246
  components: COMPONENTS,
253
247
  formData: DATA
254
248
  };
255
- var RESULT = (0, _validatePage.default)(PAGE);
249
+ const RESULT = (0, _validatePage.default)(PAGE);
256
250
  expect(RESULT.length).toEqual(2);
257
251
  expect(RESULT[0]).toEqual({
258
252
  id: 'bravo',
@@ -263,20 +257,21 @@ describe('utils.Validate.Page', function () {
263
257
  error: 'Charlie is required'
264
258
  });
265
259
  });
266
- it('should return an interpolated error for both invalid fields when all are required and email types', function () {
267
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true),
260
+ it('should return an interpolated error for both invalid fields when all are required and email types', () => {
261
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true),
268
262
  // eslint-disable-next-line no-template-curly-in-string
269
263
  setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo ${lion}', true),
270
264
  // eslint-disable-next-line no-template-curly-in-string
271
265
  setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie ${panther}', true)];
272
- var PAGE = {
266
+ const PAGE = {
273
267
  components: COMPONENTS,
274
- formData: _objectSpread(_objectSpread({}, DATA), {}, {
268
+ formData: {
269
+ ...DATA,
275
270
  lion: 'Lion',
276
271
  panther: 'Panther'
277
- })
272
+ }
278
273
  };
279
- var RESULT = (0, _validatePage.default)(PAGE);
274
+ const RESULT = (0, _validatePage.default)(PAGE);
280
275
  expect(RESULT.length).toEqual(2);
281
276
  expect(RESULT[0]).toEqual({
282
277
  id: 'bravo',
@@ -289,58 +284,60 @@ describe('utils.Validate.Page', function () {
289
284
  });
290
285
  });
291
286
  });
292
- describe('with CollectionPage', function () {
293
- var COLLECTION = {
287
+ describe('with CollectionPage', () => {
288
+ const COLLECTION = {
294
289
  name: 'pageCollection'
295
290
  };
296
- describe('when the form data is fully valid', function () {
297
- var _DATA;
298
- var DATA = (_DATA = {}, _defineProperty(_DATA, "".concat(COLLECTION.name, "ActiveId"), '01'), _defineProperty(_DATA, COLLECTION.name, [{
299
- id: '01',
300
- alpha: 'alpha.smith@digital.homeoffice.gov.uk',
301
- bravo: 'bravo.jones@digital.homeoffice.gov.uk'
302
- }]), _DATA);
303
- it('should return no errors when none of the components are required or email types', function () {
304
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', false), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', false)];
305
- var PAGE = {
291
+ describe('when the form data is fully valid', () => {
292
+ const DATA = {
293
+ ["".concat(COLLECTION.name, "ActiveId")]: '01',
294
+ [COLLECTION.name]: [{
295
+ id: '01',
296
+ alpha: 'alpha.smith@digital.homeoffice.gov.uk',
297
+ bravo: 'bravo.jones@digital.homeoffice.gov.uk'
298
+ }]
299
+ };
300
+ it('should return no errors when none of the components are required or email types', () => {
301
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', false), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', false)];
302
+ const PAGE = {
306
303
  collection: COLLECTION,
307
304
  components: COMPONENTS,
308
305
  formData: DATA
309
306
  };
310
307
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
311
308
  });
312
- it('should return no errors when all of the components are required but not email types', function () {
313
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', true), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', true)];
314
- var PAGE = {
309
+ it('should return no errors when all of the components are required but not email types', () => {
310
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', true), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', true)];
311
+ const PAGE = {
315
312
  collection: COLLECTION,
316
313
  components: COMPONENTS,
317
314
  formData: DATA
318
315
  };
319
316
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
320
317
  });
321
- it('should return no errors when none of the components are required but are all email types', function () {
322
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', false), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', false)];
323
- var PAGE = {
318
+ it('should return no errors when none of the components are required but are all email types', () => {
319
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', false), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', false)];
320
+ const PAGE = {
324
321
  collection: COLLECTION,
325
322
  components: COMPONENTS,
326
323
  formData: DATA
327
324
  };
328
325
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
329
326
  });
330
- it('should return no errors when all of the components are required and email types', function () {
331
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', true)];
332
- var PAGE = {
327
+ it('should return no errors when all of the components are required and email types', () => {
328
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', true)];
329
+ const PAGE = {
333
330
  collection: COLLECTION,
334
331
  components: COMPONENTS,
335
332
  formData: DATA
336
333
  };
337
334
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
338
335
  });
339
- it('should return an error for each required component on a collection page with a show_when that is true', function () {
340
- var COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
336
+ it('should return an error for each required component on a collection page with a show_when that is true', () => {
337
+ const COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
341
338
  // The only unrequired one
342
339
  setup('d', _models.ComponentTypes.TEXT, 'Delta', true), setup('e', _models.ComponentTypes.TEXT, 'Echo', true)];
343
- var PAGE = {
340
+ const PAGE = {
344
341
  components: COMPONENTS,
345
342
  collection: {
346
343
  name: 'testCollection'
@@ -358,7 +355,7 @@ describe('utils.Validate.Page', function () {
358
355
  }]
359
356
  }
360
357
  };
361
- var RESULT = (0, _validatePage.default)(PAGE);
358
+ const RESULT = (0, _validatePage.default)(PAGE);
362
359
  expect(RESULT.length).toEqual(4);
363
360
  expect(RESULT).toEqual([{
364
361
  id: 'a',
@@ -374,11 +371,11 @@ describe('utils.Validate.Page', function () {
374
371
  error: 'Echo is required'
375
372
  }]);
376
373
  });
377
- it('should return no errors on a collection page with a show_when that is false', function () {
378
- var COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
374
+ it('should return no errors on a collection page with a show_when that is false', () => {
375
+ const COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
379
376
  // The only unrequired one
380
377
  setup('d', _models.ComponentTypes.TEXT, 'Delta', true), setup('e', _models.ComponentTypes.TEXT, 'Echo', true)];
381
- var PAGE = {
378
+ const PAGE = {
382
379
  components: COMPONENTS,
383
380
  collection: {
384
381
  name: 'testCollection'
@@ -396,62 +393,64 @@ describe('utils.Validate.Page', function () {
396
393
  }]
397
394
  }
398
395
  };
399
- var RESULT = (0, _validatePage.default)(PAGE);
396
+ const RESULT = (0, _validatePage.default)(PAGE);
400
397
  expect(RESULT.length).toEqual(0);
401
398
  });
402
399
  });
403
- describe('when the form data has one field missing and includes an invalid email', function () {
404
- var _DATA2;
405
- var DATA = (_DATA2 = {}, _defineProperty(_DATA2, "".concat(COLLECTION.name, "ActiveId"), '01'), _defineProperty(_DATA2, COLLECTION.name, [{
406
- id: '01',
407
- alpha: 'alpha.smith@digital.homeoffice.gov.uk',
408
- bravo: 'bravo.jones@hotmail.com'
409
- }]), _DATA2);
410
- it('should return no errors when none of the components are required or email types', function () {
411
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', false), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', false), setup('charlie', _models.ComponentTypes.TEXT, 'Charlie', false)];
412
- var PAGE = {
400
+ describe('when the form data has one field missing and includes an invalid email', () => {
401
+ const DATA = {
402
+ ["".concat(COLLECTION.name, "ActiveId")]: '01',
403
+ [COLLECTION.name]: [{
404
+ id: '01',
405
+ alpha: 'alpha.smith@digital.homeoffice.gov.uk',
406
+ bravo: 'bravo.jones@hotmail.com'
407
+ }]
408
+ };
409
+ it('should return no errors when none of the components are required or email types', () => {
410
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', false), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', false), setup('charlie', _models.ComponentTypes.TEXT, 'Charlie', false)];
411
+ const PAGE = {
413
412
  collection: COLLECTION,
414
413
  components: COMPONENTS,
415
414
  formData: null
416
415
  };
417
416
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
418
417
  });
419
- it('should return an error for the missing field when all are required but not email types', function () {
420
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', true), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', true), setup('charlie', _models.ComponentTypes.TEXT, 'Charlie', true)];
421
- var PAGE = {
418
+ it('should return an error for the missing field when all are required but not email types', () => {
419
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', true), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', true), setup('charlie', _models.ComponentTypes.TEXT, 'Charlie', true)];
420
+ const PAGE = {
422
421
  collection: COLLECTION,
423
422
  components: COMPONENTS,
424
423
  formData: DATA
425
424
  };
426
- var RESULT = (0, _validatePage.default)(PAGE);
425
+ const RESULT = (0, _validatePage.default)(PAGE);
427
426
  expect(RESULT.length).toEqual(1);
428
427
  expect(RESULT[0]).toEqual({
429
428
  id: 'charlie',
430
429
  error: 'Charlie is required'
431
430
  });
432
431
  });
433
- it('should return an error for the invalid email field when none are required but all email types', function () {
434
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', false), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', false), setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie', false)];
435
- var PAGE = {
432
+ it('should return an error for the invalid email field when none are required but all email types', () => {
433
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', false), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', false), setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie', false)];
434
+ const PAGE = {
436
435
  collection: COLLECTION,
437
436
  components: COMPONENTS,
438
437
  formData: DATA
439
438
  };
440
- var RESULT = (0, _validatePage.default)(PAGE);
439
+ const RESULT = (0, _validatePage.default)(PAGE);
441
440
  expect(RESULT.length).toEqual(1);
442
441
  expect(RESULT[0]).toEqual({
443
442
  id: 'bravo',
444
443
  error: 'Enter bravo in the correct format, like jane.doe@homeoffice.gov.uk'
445
444
  });
446
445
  });
447
- it('should return an error for both invalid fields when all are required and email types', function () {
448
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', true), setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie', true)];
449
- var PAGE = {
446
+ it('should return an error for both invalid fields when all are required and email types', () => {
447
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', true), setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie', true)];
448
+ const PAGE = {
450
449
  collection: COLLECTION,
451
450
  components: COMPONENTS,
452
451
  formData: DATA
453
452
  };
454
- var RESULT = (0, _validatePage.default)(PAGE);
453
+ const RESULT = (0, _validatePage.default)(PAGE);
455
454
  expect(RESULT.length).toEqual(2);
456
455
  expect(RESULT[0]).toEqual({
457
456
  id: 'bravo',
@@ -462,21 +461,25 @@ describe('utils.Validate.Page', function () {
462
461
  error: 'Charlie is required'
463
462
  });
464
463
  });
465
- it('should return an interpolated error for both invalid fields when all are required and email types', function () {
466
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true),
464
+ it('should return an interpolated error for both invalid fields when all are required and email types', () => {
465
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true),
467
466
  // eslint-disable-next-line no-template-curly-in-string
468
467
  setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo ${lion}', true),
469
468
  // eslint-disable-next-line no-template-curly-in-string
470
469
  setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie ${panther}', true)];
471
- var PAGE = {
470
+ const PAGE = {
472
471
  collection: COLLECTION,
473
472
  components: COMPONENTS,
474
- formData: _objectSpread(_objectSpread({}, DATA), {}, _defineProperty({}, COLLECTION.name, [_objectSpread(_objectSpread({}, DATA[COLLECTION.name][0]), {}, {
475
- lion: 'Lion',
476
- panther: 'Panther'
477
- })]))
473
+ formData: {
474
+ ...DATA,
475
+ [COLLECTION.name]: [{
476
+ ...DATA[COLLECTION.name][0],
477
+ lion: 'Lion',
478
+ panther: 'Panther'
479
+ }]
480
+ }
478
481
  };
479
- var RESULT = (0, _validatePage.default)(PAGE);
482
+ const RESULT = (0, _validatePage.default)(PAGE);
480
483
  expect(RESULT.length).toEqual(2);
481
484
  expect(RESULT[0]).toEqual({
482
485
  id: 'bravo',
@@ -489,12 +492,12 @@ describe('utils.Validate.Page', function () {
489
492
  });
490
493
  });
491
494
  });
492
- describe('with a nested CollectionPage', function () {
493
- var COLLECTION = {
495
+ describe('with a nested CollectionPage', () => {
496
+ const COLLECTION = {
494
497
  name: 'parent.child'
495
498
  };
496
- describe('when the form data is fully valid', function () {
497
- var DATA = {
499
+ describe('when the form data is fully valid', () => {
500
+ const DATA = {
498
501
  parentActiveId: '01',
499
502
  childActiveId: '01',
500
503
  parent: [{
@@ -506,47 +509,47 @@ describe('utils.Validate.Page', function () {
506
509
  }]
507
510
  }]
508
511
  };
509
- it('should return no errors when none of the components are required or email types', function () {
510
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', false), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', false)];
511
- var PAGE = {
512
+ it('should return no errors when none of the components are required or email types', () => {
513
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', false), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', false)];
514
+ const PAGE = {
512
515
  collection: COLLECTION,
513
516
  components: COMPONENTS,
514
517
  formData: DATA
515
518
  };
516
519
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
517
520
  });
518
- it('should return no errors when all of the components are required but not email types', function () {
519
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', true), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', true)];
520
- var PAGE = {
521
+ it('should return no errors when all of the components are required but not email types', () => {
522
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', true), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', true)];
523
+ const PAGE = {
521
524
  collection: COLLECTION,
522
525
  components: COMPONENTS,
523
526
  formData: DATA
524
527
  };
525
528
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
526
529
  });
527
- it('should return no errors when none of the components are required but are all email types', function () {
528
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', false), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', false)];
529
- var PAGE = {
530
+ it('should return no errors when none of the components are required but are all email types', () => {
531
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', false), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', false)];
532
+ const PAGE = {
530
533
  collection: COLLECTION,
531
534
  components: COMPONENTS,
532
535
  formData: DATA
533
536
  };
534
537
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
535
538
  });
536
- it('should return no errors when all of the components are required and email types', function () {
537
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', true)];
538
- var PAGE = {
539
+ it('should return no errors when all of the components are required and email types', () => {
540
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', true)];
541
+ const PAGE = {
539
542
  collection: COLLECTION,
540
543
  components: COMPONENTS,
541
544
  formData: DATA
542
545
  };
543
546
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
544
547
  });
545
- it('should return an error for each required component on a collection page with a show_when that is true', function () {
546
- var COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
548
+ it('should return an error for each required component on a collection page with a show_when that is true', () => {
549
+ const COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
547
550
  // The only unrequired one
548
551
  setup('d', _models.ComponentTypes.TEXT, 'Delta', true), setup('e', _models.ComponentTypes.TEXT, 'Echo', true)];
549
- var PAGE = {
552
+ const PAGE = {
550
553
  components: COMPONENTS,
551
554
  collection: {
552
555
  name: 'parent.child'
@@ -568,7 +571,7 @@ describe('utils.Validate.Page', function () {
568
571
  }]
569
572
  }
570
573
  };
571
- var RESULT = (0, _validatePage.default)(PAGE);
574
+ const RESULT = (0, _validatePage.default)(PAGE);
572
575
  expect(RESULT.length).toEqual(4);
573
576
  expect(RESULT).toEqual([{
574
577
  id: 'a',
@@ -584,11 +587,11 @@ describe('utils.Validate.Page', function () {
584
587
  error: 'Echo is required'
585
588
  }]);
586
589
  });
587
- it('should return no errors on a collection page with a show_when that is false', function () {
588
- var COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
590
+ it('should return no errors on a collection page with a show_when that is false', () => {
591
+ const COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true), setup('b', _models.ComponentTypes.TEXT, 'Bravo', true), setup('c', _models.ComponentTypes.TEXT, 'Charlie', false),
589
592
  // The only unrequired one
590
593
  setup('d', _models.ComponentTypes.TEXT, 'Delta', true), setup('e', _models.ComponentTypes.TEXT, 'Echo', true)];
591
- var PAGE = {
594
+ const PAGE = {
592
595
  components: COMPONENTS,
593
596
  collection: {
594
597
  name: 'parent.child'
@@ -610,12 +613,12 @@ describe('utils.Validate.Page', function () {
610
613
  }]
611
614
  }
612
615
  };
613
- var RESULT = (0, _validatePage.default)(PAGE);
616
+ const RESULT = (0, _validatePage.default)(PAGE);
614
617
  expect(RESULT.length).toEqual(0);
615
618
  });
616
619
  });
617
- describe('when the form data has one field missing and includes an invalid email', function () {
618
- var DATA = {
620
+ describe('when the form data has one field missing and includes an invalid email', () => {
621
+ const DATA = {
619
622
  parentActiveId: '01',
620
623
  childActiveId: '01',
621
624
  parent: [{
@@ -627,51 +630,51 @@ describe('utils.Validate.Page', function () {
627
630
  }]
628
631
  }]
629
632
  };
630
- it('should return no errors when none of the components are required or email types', function () {
631
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', false), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', false), setup('charlie', _models.ComponentTypes.TEXT, 'Charlie', false)];
632
- var PAGE = {
633
+ it('should return no errors when none of the components are required or email types', () => {
634
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', false), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', false), setup('charlie', _models.ComponentTypes.TEXT, 'Charlie', false)];
635
+ const PAGE = {
633
636
  collection: COLLECTION,
634
637
  components: COMPONENTS,
635
638
  formData: null
636
639
  };
637
640
  expect((0, _validatePage.default)(PAGE).length).toEqual(0);
638
641
  });
639
- it('should return an error for the missing field when all are required but not email types', function () {
640
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', true), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', true), setup('charlie', _models.ComponentTypes.TEXT, 'Charlie', true)];
641
- var PAGE = {
642
+ it('should return an error for the missing field when all are required but not email types', () => {
643
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.TEXT, 'Alpha', true), setup('bravo', _models.ComponentTypes.TEXT, 'Bravo', true), setup('charlie', _models.ComponentTypes.TEXT, 'Charlie', true)];
644
+ const PAGE = {
642
645
  collection: COLLECTION,
643
646
  components: COMPONENTS,
644
647
  formData: DATA
645
648
  };
646
- var RESULT = (0, _validatePage.default)(PAGE);
649
+ const RESULT = (0, _validatePage.default)(PAGE);
647
650
  expect(RESULT.length).toEqual(1);
648
651
  expect(RESULT[0]).toEqual({
649
652
  id: 'charlie',
650
653
  error: 'Charlie is required'
651
654
  });
652
655
  });
653
- it('should return an error for the invalid email field when none are required but all email types', function () {
654
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', false), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', false), setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie', false)];
655
- var PAGE = {
656
+ it('should return an error for the invalid email field when none are required but all email types', () => {
657
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', false), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', false), setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie', false)];
658
+ const PAGE = {
656
659
  collection: COLLECTION,
657
660
  components: COMPONENTS,
658
661
  formData: DATA
659
662
  };
660
- var RESULT = (0, _validatePage.default)(PAGE);
663
+ const RESULT = (0, _validatePage.default)(PAGE);
661
664
  expect(RESULT.length).toEqual(1);
662
665
  expect(RESULT[0]).toEqual({
663
666
  id: 'bravo',
664
667
  error: 'Enter bravo in the correct format, like jane.doe@homeoffice.gov.uk'
665
668
  });
666
669
  });
667
- it('should return an error for both invalid fields when all are required and email types', function () {
668
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', true), setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie', true)];
669
- var PAGE = {
670
+ it('should return an error for both invalid fields when all are required and email types', () => {
671
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true), setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo', true), setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie', true)];
672
+ const PAGE = {
670
673
  collection: COLLECTION,
671
674
  components: COMPONENTS,
672
675
  formData: DATA
673
676
  };
674
- var RESULT = (0, _validatePage.default)(PAGE);
677
+ const RESULT = (0, _validatePage.default)(PAGE);
675
678
  expect(RESULT.length).toEqual(2);
676
679
  expect(RESULT[0]).toEqual({
677
680
  id: 'bravo',
@@ -682,13 +685,13 @@ describe('utils.Validate.Page', function () {
682
685
  error: 'Charlie is required'
683
686
  });
684
687
  });
685
- it('should return an interpolated error for both invalid fields when all are required and email types', function () {
686
- var COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true),
688
+ it('should return an interpolated error for both invalid fields when all are required and email types', () => {
689
+ const COMPONENTS = [setup('alpha', _models.ComponentTypes.EMAIL, 'Alpha', true),
687
690
  // eslint-disable-next-line no-template-curly-in-string
688
691
  setup('bravo', _models.ComponentTypes.EMAIL, 'Bravo ${lion}', true),
689
692
  // eslint-disable-next-line no-template-curly-in-string
690
693
  setup('charlie', _models.ComponentTypes.EMAIL, 'Charlie ${panther}', true)];
691
- var PAGE = {
694
+ const PAGE = {
692
695
  collection: COLLECTION,
693
696
  components: COMPONENTS,
694
697
  formData: {
@@ -706,7 +709,7 @@ describe('utils.Validate.Page', function () {
706
709
  }]
707
710
  }
708
711
  };
709
- var RESULT = (0, _validatePage.default)(PAGE);
712
+ const RESULT = (0, _validatePage.default)(PAGE);
710
713
  expect(RESULT.length).toEqual(2);
711
714
  expect(RESULT[0]).toEqual({
712
715
  id: 'bravo',
@@ -719,4 +722,82 @@ describe('utils.Validate.Page', function () {
719
722
  });
720
723
  });
721
724
  });
725
+ describe('when there are queued errors', () => {
726
+ it('should return any errors queued for a component as well as errors found during validation', () => {
727
+ const COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true)];
728
+ const PAGE = {
729
+ components: COMPONENTS,
730
+ formData: null
731
+ };
732
+ const QUEUED_ERRORS = [{
733
+ id: 'a',
734
+ error: 'Error queued for Alpha 1'
735
+ }, {
736
+ id: 'a',
737
+ error: 'Error queued for Alpha 2'
738
+ }];
739
+ const RESULT = (0, _validatePage.default)(PAGE, QUEUED_ERRORS);
740
+ expect(RESULT.length).toEqual(3);
741
+ expect(RESULT[0]).toEqual({
742
+ ...QUEUED_ERRORS[0]
743
+ });
744
+ expect(RESULT[1]).toEqual({
745
+ ...QUEUED_ERRORS[1]
746
+ });
747
+ expect(RESULT[2]).toEqual({
748
+ id: 'a',
749
+ error: 'Alpha is required'
750
+ });
751
+ });
752
+ it('should return any errors queued for a component even if no errors are found during validation', () => {
753
+ const COMPONENTS = [setup('a', _models.ComponentTypes.TEXT, 'Alpha', true)];
754
+ const PAGE = {
755
+ components: COMPONENTS,
756
+ formData: {
757
+ a: 'Value'
758
+ }
759
+ };
760
+ const QUEUED_ERRORS = [{
761
+ id: 'a',
762
+ error: 'Error queued for Alpha 1'
763
+ }, {
764
+ id: 'a',
765
+ error: 'Error queued for Alpha 2'
766
+ }];
767
+ const RESULT = (0, _validatePage.default)(PAGE, QUEUED_ERRORS);
768
+ expect(RESULT.length).toEqual(2);
769
+ expect(RESULT[0]).toEqual({
770
+ ...QUEUED_ERRORS[0]
771
+ });
772
+ expect(RESULT[1]).toEqual({
773
+ ...QUEUED_ERRORS[1]
774
+ });
775
+ });
776
+ it('should return any queued errors if the component is not shown', () => {
777
+ const COMPONENTS = [{
778
+ ...setup('a', _models.ComponentTypes.TEXT, 'Alpha', true),
779
+ show_when: [{
780
+ field: 'b',
781
+ op: '=',
782
+ value: 'yes'
783
+ }]
784
+ }];
785
+ const PAGE = {
786
+ components: COMPONENTS,
787
+ formData: {
788
+ a: 'Value',
789
+ b: 'no'
790
+ }
791
+ };
792
+ const QUEUED_ERRORS = [{
793
+ id: 'a',
794
+ error: 'Error queued for Alpha 1'
795
+ }, {
796
+ id: 'a',
797
+ error: 'Error queued for Alpha 2'
798
+ }];
799
+ const RESULT = (0, _validatePage.default)(PAGE, QUEUED_ERRORS);
800
+ expect(RESULT.length).toEqual(0);
801
+ });
802
+ });
722
803
  });