@ukhomeoffice/cop-react-form-renderer 5.14.0 → 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 +65 -106
  102. package/dist/hooks/useHooks.js +2 -5
  103. package/dist/hooks/useRefData.js +30 -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
@@ -2,117 +2,119 @@
2
2
 
3
3
  var _models = require("../../models");
4
4
  var _validateComponent = _interopRequireDefault(require("./validateComponent"));
5
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
- 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); }
7
- 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; }
8
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
9
- 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); }
10
- describe('utils.Validate.Component', function () {
11
- var setup = function setup(id, type, label, required, additionalValidation) {
12
- return {
13
- id: id,
14
- fieldId: id,
15
- type: type,
16
- label: label,
17
- required: required,
18
- additionalValidation: additionalValidation
19
- };
20
- };
21
- it('should return no error when the component is null', function () {
5
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
6
+ // Local imports
7
+
8
+ describe('utils.Validate.Component', () => {
9
+ const setup = (id, type, label, required, additionalValidation) => ({
10
+ id,
11
+ fieldId: id,
12
+ type,
13
+ label,
14
+ required,
15
+ additionalValidation
16
+ });
17
+ it('should return no error when the component is null', () => {
22
18
  expect((0, _validateComponent.default)(null, {})).toBeUndefined();
23
19
  });
24
- describe('when there is no form data', function () {
25
- it('should return no error when the component is not required and not an email type', function () {
26
- var ID = 'field';
27
- var LABEL = 'Field';
28
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
20
+ describe('when there is no form data', () => {
21
+ it('should return no error when the component is not required and not an email type', () => {
22
+ const ID = 'field';
23
+ const LABEL = 'Field';
24
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
29
25
  expect((0, _validateComponent.default)(COMPONENT, null)).toBeUndefined();
30
26
  });
31
- it('should return a required error when the component is required and not an email type', function () {
32
- var ID = 'field';
33
- var LABEL = 'Field';
34
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
27
+ it('should return a required error when the component is required and not an email type', () => {
28
+ const ID = 'field';
29
+ const LABEL = 'Field';
30
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
35
31
  expect((0, _validateComponent.default)(COMPONENT, null)).toEqual({
36
32
  id: ID,
37
- error: "".concat(LABEL, " is required")
33
+ error: `${LABEL} is required`
38
34
  });
39
35
  });
40
- it('should return a required error when the component is required and of type email', function () {
41
- var ID = 'field';
42
- var LABEL = 'Field';
43
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
36
+ it('should return a required error when the component is required and of type email', () => {
37
+ const ID = 'field';
38
+ const LABEL = 'Field';
39
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
44
40
  expect((0, _validateComponent.default)(COMPONENT, null)).toEqual({
45
41
  id: ID,
46
- error: "".concat(LABEL, " is required")
42
+ error: `${LABEL} is required`
47
43
  });
48
44
  });
49
- it('should return no error when the component is of type email but not required', function () {
50
- var ID = 'field';
51
- var LABEL = 'Field';
52
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
45
+ it('should return no error when the component is of type email but not required', () => {
46
+ const ID = 'field';
47
+ const LABEL = 'Field';
48
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
53
49
  expect((0, _validateComponent.default)(COMPONENT, null)).toBeUndefined();
54
50
  });
55
51
  });
56
- describe('when the value is fully valid', function () {
57
- var ID = 'field';
58
- var DATA = _defineProperty({}, ID, 'alpha.bravo@digital.homeoffice.gov.uk');
59
- it('should return no error when the component is not required and not an email type', function () {
60
- var LABEL = 'Field';
61
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
52
+ describe('when the value is fully valid', () => {
53
+ const ID = 'field';
54
+ const DATA = {
55
+ [ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
56
+ };
57
+ it('should return no error when the component is not required and not an email type', () => {
58
+ const LABEL = 'Field';
59
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
62
60
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
63
61
  });
64
- it('should return no error when the component is required and not an email type', function () {
65
- var LABEL = 'Field';
66
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
62
+ it('should return no error when the component is required and not an email type', () => {
63
+ const LABEL = 'Field';
64
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
67
65
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
68
66
  });
69
- it('should return no error when the component is required and of type email', function () {
70
- var LABEL = 'Field';
71
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
67
+ it('should return no error when the component is required and of type email', () => {
68
+ const LABEL = 'Field';
69
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
72
70
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
73
71
  });
74
- it('should return no error when the component is of type email but not required', function () {
75
- var LABEL = 'Field';
76
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
72
+ it('should return no error when the component is of type email but not required', () => {
73
+ const LABEL = 'Field';
74
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
77
75
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
78
76
  });
79
77
  });
80
- describe('when the value is an invalid email', function () {
81
- var ID = 'field';
82
- var DATA = _defineProperty({}, ID, 'alpha.bravo@hotmail.com');
83
- it('should return no error when the component is not required and not an email type', function () {
84
- var LABEL = 'Field';
85
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
78
+ describe('when the value is an invalid email', () => {
79
+ const ID = 'field';
80
+ const DATA = {
81
+ [ID]: 'alpha.bravo@hotmail.com'
82
+ };
83
+ it('should return no error when the component is not required and not an email type', () => {
84
+ const LABEL = 'Field';
85
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
86
86
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
87
87
  });
88
- it('should return no error when the component is required and not an email type', function () {
89
- var LABEL = 'Field';
90
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
88
+ it('should return no error when the component is required and not an email type', () => {
89
+ const LABEL = 'Field';
90
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
91
91
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
92
92
  });
93
- it('should return no error when the component is required and of type email', function () {
94
- var LABEL = 'Field';
95
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
93
+ it('should return no error when the component is required and of type email', () => {
94
+ const LABEL = 'Field';
95
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
96
96
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
97
97
  id: ID,
98
- error: "Enter ".concat(LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
98
+ error: `Enter ${LABEL.toLowerCase()} in the correct format, like jane.doe@homeoffice.gov.uk`
99
99
  });
100
100
  });
101
- it('should return no error when the component is of type email but not required', function () {
102
- var LABEL = 'Field';
103
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
101
+ it('should return no error when the component is of type email but not required', () => {
102
+ const LABEL = 'Field';
103
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
104
104
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
105
105
  id: ID,
106
- error: "Enter ".concat(LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
106
+ error: `Enter ${LABEL.toLowerCase()} in the correct format, like jane.doe@homeoffice.gov.uk`
107
107
  });
108
108
  });
109
109
  });
110
- describe('when the component is a Date Input', function () {
111
- var ID = 'field';
112
- it('should always reject invalid dates', function () {
113
- var LABEL = 'Field';
114
- var COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false);
115
- var DATA = _defineProperty({}, ID, '25-45-2033');
110
+ describe('when the component is a Date Input', () => {
111
+ const ID = 'field';
112
+ it('should always reject invalid dates', () => {
113
+ const LABEL = 'Field';
114
+ const COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false);
115
+ const DATA = {
116
+ [ID]: '25-45-2033'
117
+ };
116
118
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
117
119
  error: 'Month must be between 1 and 12',
118
120
  id: ID,
@@ -121,16 +123,18 @@ describe('utils.Validate.Component', function () {
121
123
  }
122
124
  });
123
125
  });
124
- it('should apply optional validators when specified', function () {
125
- var LABEL = 'Field';
126
- var DATA = _defineProperty({}, ID, '25-3-3033');
127
- var ADDITIONAL_VALIDATION = [{
126
+ it('should apply optional validators when specified', () => {
127
+ const LABEL = 'Field';
128
+ const DATA = {
129
+ [ID]: '25-3-3033'
130
+ };
131
+ const ADDITIONAL_VALIDATION = [{
128
132
  function: 'mustBeBefore',
129
133
  value: 3,
130
134
  unit: 'day',
131
135
  message: 'Date must be less than 3 days in the future'
132
136
  }];
133
- var COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false, ADDITIONAL_VALIDATION);
137
+ const COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false, ADDITIONAL_VALIDATION);
134
138
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
135
139
  error: 'Date must be less than 3 days in the future',
136
140
  id: ID,
@@ -142,12 +146,14 @@ describe('utils.Validate.Component', function () {
142
146
  });
143
147
  });
144
148
  });
145
- describe('when the component is a Time Input', function () {
146
- var ID = 'field';
147
- it('should always reject invalid time', function () {
148
- var LABEL = 'Field';
149
- var COMPONENT = setup(ID, _models.ComponentTypes.TIME, LABEL, false);
150
- var DATA = _defineProperty({}, ID, '25:45');
149
+ describe('when the component is a Time Input', () => {
150
+ const ID = 'field';
151
+ it('should always reject invalid time', () => {
152
+ const LABEL = 'Field';
153
+ const COMPONENT = setup(ID, _models.ComponentTypes.TIME, LABEL, false);
154
+ const DATA = {
155
+ [ID]: '25:45'
156
+ };
151
157
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
152
158
  error: 'Hour must be between 0 and 23',
153
159
  id: ID,
@@ -157,38 +163,50 @@ describe('utils.Validate.Component', function () {
157
163
  });
158
164
  });
159
165
  });
160
- describe('when the component is a container', function () {
161
- it('should return an empty array when the container has only valid components', function () {
162
- var EMAIL_ID = 'email';
163
- var EMAIL_LABEL = 'Email';
164
- var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
165
- var ID = 'container';
166
- var LABEL = 'field';
167
- var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
166
+ describe('when the component is a container', () => {
167
+ it('should return an empty array when the container has only valid components', () => {
168
+ const EMAIL_ID = 'email';
169
+ const EMAIL_LABEL = 'Email';
170
+ const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
171
+ const ID = 'container';
172
+ const LABEL = 'field';
173
+ const CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
168
174
  CONTAINER.components = [EMAIL];
169
- var DATA = _defineProperty({}, ID, _defineProperty({}, EMAIL_ID, 'alpha.bravo@digital.homeoffice.gov.uk'));
175
+ const DATA = {
176
+ [ID]: {
177
+ [EMAIL_ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
178
+ }
179
+ };
170
180
  expect((0, _validateComponent.default)(CONTAINER, DATA)).toEqual([]);
171
181
  });
172
182
  });
173
- describe('when the component is a collection', function () {
174
- it('should return an empty array when the collection has only valid items', function () {
175
- var EMAIL_ID = 'email';
176
- var EMAIL_LABEL = 'Email';
177
- var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
178
- var ID = 'collection';
179
- var LABEL = 'field';
180
- var COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false);
183
+ describe('when the component is a collection', () => {
184
+ it('should return an empty array when the collection has only valid items', () => {
185
+ const EMAIL_ID = 'email';
186
+ const EMAIL_LABEL = 'Email';
187
+ const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
188
+ const ID = 'collection';
189
+ const LABEL = 'field';
190
+ const COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false);
181
191
  COLLECTION.item = [EMAIL];
182
- var DATA = _defineProperty({}, ID, [_defineProperty({}, EMAIL_ID, 'alpha.bravo@homeoffice.gov.uk'), _defineProperty({}, EMAIL_ID, 'charlie.delta@homeoffice.gov.uk')]);
192
+ const DATA = {
193
+ [ID]: [{
194
+ [EMAIL_ID]: 'alpha.bravo@homeoffice.gov.uk'
195
+ }, {
196
+ [EMAIL_ID]: 'charlie.delta@homeoffice.gov.uk'
197
+ }]
198
+ };
183
199
  expect((0, _validateComponent.default)(COLLECTION, DATA)).toEqual([]);
184
200
  });
185
201
  });
186
- describe('when the component has a nested component', function () {
187
- it('should return no error when the radio component contains nested components without errors', function () {
188
- var NESTED_ID = 'nestedId';
189
- var NESTED_VALUE = 'nestedValue';
190
- var FORMDATA = _defineProperty({}, NESTED_ID, NESTED_VALUE);
191
- var COMPONENT = {
202
+ describe('when the component has a nested component', () => {
203
+ it('should return no error when the radio component contains nested components without errors', () => {
204
+ const NESTED_ID = 'nestedId';
205
+ const NESTED_VALUE = 'nestedValue';
206
+ const FORMDATA = {
207
+ [NESTED_ID]: NESTED_VALUE
208
+ };
209
+ const COMPONENT = {
192
210
  type: 'radios',
193
211
  id: 'a',
194
212
  data: {
@@ -204,10 +222,10 @@ describe('utils.Validate.Component', function () {
204
222
  };
205
223
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
206
224
  });
207
- it('should return an error when the radio component contains nested components with errors', function () {
208
- var NESTED_ID = 'nestedId';
209
- var FORMDATA = {};
210
- var COMPONENT = {
225
+ it('should return an error when the radio component contains nested components with errors', () => {
226
+ const NESTED_ID = 'nestedId';
227
+ const FORMDATA = {};
228
+ const COMPONENT = {
211
229
  type: 'radios',
212
230
  id: 'a',
213
231
  data: {
@@ -222,13 +240,13 @@ describe('utils.Validate.Component', function () {
222
240
  }
223
241
  };
224
242
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toEqual([{
225
- id: "nestedId",
226
- error: "Field is required"
243
+ id: `nestedId`,
244
+ error: `Field is required`
227
245
  }]);
228
246
  });
229
- it('should return no error when a non selected radio component contains nested components with errors', function () {
230
- var NESTED_ID = 'nestedId';
231
- var COMPONENT = {
247
+ it('should return no error when a non selected radio component contains nested components with errors', () => {
248
+ const NESTED_ID = 'nestedId';
249
+ const COMPONENT = {
232
250
  type: 'radios',
233
251
  id: 'a',
234
252
  data: {
@@ -245,11 +263,13 @@ describe('utils.Validate.Component', function () {
245
263
  };
246
264
  expect((0, _validateComponent.default)(COMPONENT, undefined, {})).toBeUndefined();
247
265
  });
248
- it('should return no error when the checkbox component contains nested components without errors', function () {
249
- var NESTED_ID = 'nestedId';
250
- var NESTED_VALUE = 'nestedValue';
251
- var FORMDATA = _defineProperty({}, NESTED_ID, NESTED_VALUE);
252
- var COMPONENT = {
266
+ it('should return no error when the checkbox component contains nested components without errors', () => {
267
+ const NESTED_ID = 'nestedId';
268
+ const NESTED_VALUE = 'nestedValue';
269
+ const FORMDATA = {
270
+ [NESTED_ID]: NESTED_VALUE
271
+ };
272
+ const COMPONENT = {
253
273
  type: 'checkboxes',
254
274
  id: 'a',
255
275
  data: {
@@ -265,13 +285,13 @@ describe('utils.Validate.Component', function () {
265
285
  };
266
286
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
267
287
  });
268
- it('should return an error when the checkbox component contains nested components with errors', function () {
269
- var NESTED_ID = 'nestedId';
270
- var OPTION_VALUE = 'optionValue';
271
- var FORMDATA = {
288
+ it('should return an error when the checkbox component contains nested components with errors', () => {
289
+ const NESTED_ID = 'nestedId';
290
+ const OPTION_VALUE = 'optionValue';
291
+ const FORMDATA = {
272
292
  'a': [OPTION_VALUE]
273
293
  };
274
- var COMPONENT = {
294
+ const COMPONENT = {
275
295
  type: 'checkboxes',
276
296
  id: 'a',
277
297
  data: {
@@ -288,17 +308,18 @@ describe('utils.Validate.Component', function () {
288
308
  };
289
309
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toEqual([{
290
310
  id: NESTED_ID,
291
- error: "Field is required"
311
+ error: `Field is required`
292
312
  }]);
293
313
  });
294
- it('should return no error when a non selected checkbox component contains nested components with errors', function () {
295
- var NESTED_ID_NOT_SELECTED = 'nestedIdNotSelected';
296
- var NESTED_ID_SELECTED = 'nestedIdSelected';
297
- var NESTED_VALUE_SELECTED = 'nestedValueSelected';
298
- var FORMDATA = _defineProperty({
299
- 'a': ['optionValueSelected']
300
- }, NESTED_ID_SELECTED, NESTED_VALUE_SELECTED);
301
- var COMPONENT = {
314
+ it('should return no error when a non selected checkbox component contains nested components with errors', () => {
315
+ const NESTED_ID_NOT_SELECTED = 'nestedIdNotSelected';
316
+ const NESTED_ID_SELECTED = 'nestedIdSelected';
317
+ const NESTED_VALUE_SELECTED = 'nestedValueSelected';
318
+ const FORMDATA = {
319
+ 'a': ['optionValueSelected'],
320
+ [NESTED_ID_SELECTED]: NESTED_VALUE_SELECTED
321
+ };
322
+ const COMPONENT = {
302
323
  type: 'checkboxes',
303
324
  id: 'a',
304
325
  data: {
@@ -325,16 +346,17 @@ describe('utils.Validate.Component', function () {
325
346
  };
326
347
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
327
348
  });
328
- it('should return no error when all selected checkbox components contains nested components without errors', function () {
329
- var _FORMDATA4;
330
- var NESTED_ID_SELECTED_1 = 'nestedIdSelected1';
331
- var NESTED_ID_SELECTED_2 = 'nestedIdSelected2';
332
- var NESTED_VALUE_SELECTED_1 = 'nestedValueSelected1';
333
- var NESTED_VALUE_SELECTED_2 = 'nestedValueSelected2';
334
- var FORMDATA = (_FORMDATA4 = {
335
- 'a': ['optionValueSelected1', 'optionValueSelected2']
336
- }, _defineProperty(_FORMDATA4, NESTED_ID_SELECTED_1, NESTED_VALUE_SELECTED_1), _defineProperty(_FORMDATA4, NESTED_ID_SELECTED_2, NESTED_VALUE_SELECTED_2), _FORMDATA4);
337
- var COMPONENT = {
349
+ it('should return no error when all selected checkbox components contains nested components without errors', () => {
350
+ const NESTED_ID_SELECTED_1 = 'nestedIdSelected1';
351
+ const NESTED_ID_SELECTED_2 = 'nestedIdSelected2';
352
+ const NESTED_VALUE_SELECTED_1 = 'nestedValueSelected1';
353
+ const NESTED_VALUE_SELECTED_2 = 'nestedValueSelected2';
354
+ const FORMDATA = {
355
+ 'a': ['optionValueSelected1', 'optionValueSelected2'],
356
+ [NESTED_ID_SELECTED_1]: NESTED_VALUE_SELECTED_1,
357
+ [NESTED_ID_SELECTED_2]: NESTED_VALUE_SELECTED_2
358
+ };
359
+ const COMPONENT = {
338
360
  type: 'checkboxes',
339
361
  id: 'a',
340
362
  data: {
@@ -6,13 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  var _validateComponent = _interopRequireDefault(require("./validateComponent"));
8
8
  var _additional = _interopRequireDefault(require("./additional"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- 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); }
11
- 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; }
12
- 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; }
13
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
14
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
- function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ // Local imports
11
+
16
12
  /**
17
13
  * Validates all components within a container.
18
14
  * @param {object} container The container to validate.
@@ -20,34 +16,32 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
20
16
  * @param {object} formData The data at the top level of the form.
21
17
  * @returns Errors for all components within the container.
22
18
  */
23
- var validateContainer = function validateContainer(container, outerData, formData) {
19
+ const validateContainer = (container, outerData, formData) => {
24
20
  if (!container) {
25
21
  return [];
26
22
  }
27
- var fd = formData || outerData;
28
- var error = (0, _additional.default)(container, fd);
23
+ const fd = formData || outerData;
24
+ const error = (0, _additional.default)(container, fd);
29
25
  if (error) {
30
26
  return {
31
27
  id: container.id,
32
- error: error
28
+ error
33
29
  };
34
30
  }
35
- var errors = [];
31
+ const errors = [];
36
32
  if (Array.isArray(container.components)) {
37
- var containerData = outerData && container.fieldId ? outerData[container.fieldId] : outerData;
38
- container.components.forEach(function (component) {
33
+ const containerData = outerData && container.fieldId ? outerData[container.fieldId] : outerData;
34
+ container.components.forEach(component => {
39
35
  // It is possible that the container being passed in is a
40
36
  // dummy container just for validation. In that scenario we want
41
37
  // to ignore the full_path and just use the component's fieldId.
42
- var fullPath = container.full_path || container.fieldId ? "".concat(container.full_path || container.fieldId, ".").concat(component.fieldId) : component.fieldId;
43
- errors.push((0, _validateComponent.default)(_objectSpread(_objectSpread({}, component), {}, {
38
+ const fullPath = container.full_path || container.fieldId ? `${container.full_path || container.fieldId}.${component.fieldId}` : component.fieldId;
39
+ errors.push((0, _validateComponent.default)({
40
+ ...component,
44
41
  full_path: fullPath
45
- }), containerData, fd));
42
+ }, containerData, fd));
46
43
  });
47
44
  }
48
- return errors.flat(1).filter(function (e) {
49
- return !!e;
50
- });
45
+ return errors.flat(1).filter(e => !!e);
51
46
  };
52
- var _default = validateContainer;
53
- exports.default = _default;
47
+ var _default = exports.default = validateContainer;
@@ -2,71 +2,75 @@
2
2
 
3
3
  var _models = require("../../models");
4
4
  var _validateContainer = _interopRequireDefault(require("./validateContainer"));
5
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
- 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); }
7
- 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; }
8
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
9
- 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); }
10
- describe('utils.Validate.Container', function () {
11
- var setup = function setup(id, type, label, required, additionalValidation) {
12
- return {
13
- id: id,
14
- fieldId: id,
15
- type: type,
16
- label: label,
17
- required: required,
18
- additionalValidation: additionalValidation
19
- };
20
- };
21
- it('should return an empty array when the component is null', function () {
5
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
6
+ // Local imports
7
+
8
+ describe('utils.Validate.Container', () => {
9
+ const setup = (id, type, label, required, additionalValidation) => ({
10
+ id,
11
+ fieldId: id,
12
+ type,
13
+ label,
14
+ required,
15
+ additionalValidation
16
+ });
17
+ it('should return an empty array when the component is null', () => {
22
18
  expect((0, _validateContainer.default)(null, {})).toEqual([]);
23
19
  });
24
- it('should return an empty array when the container has an undefined components array', function () {
25
- var ID = 'container';
26
- var LABEL = 'field';
27
- var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
20
+ it('should return an empty array when the container has an undefined components array', () => {
21
+ const ID = 'container';
22
+ const LABEL = 'field';
23
+ const CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
28
24
  expect((0, _validateContainer.default)(CONTAINER, null)).toEqual([]);
29
25
  });
30
- it('should return an empty array when the container has no components', function () {
31
- var ID = 'container';
32
- var LABEL = 'field';
33
- var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
26
+ it('should return an empty array when the container has no components', () => {
27
+ const ID = 'container';
28
+ const LABEL = 'field';
29
+ const CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
34
30
  CONTAINER.components = [];
35
31
  expect((0, _validateContainer.default)(CONTAINER, null)).toEqual([]);
36
32
  });
37
- it('should return an empty array when the container has only valid components', function () {
38
- var EMAIL_ID = 'email';
39
- var EMAIL_LABEL = 'Email';
40
- var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
41
- var ID = 'container';
42
- var LABEL = 'field';
43
- var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
33
+ it('should return an empty array when the container has only valid components', () => {
34
+ const EMAIL_ID = 'email';
35
+ const EMAIL_LABEL = 'Email';
36
+ const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
37
+ const ID = 'container';
38
+ const LABEL = 'field';
39
+ const CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
44
40
  CONTAINER.components = [EMAIL];
45
- var DATA = _defineProperty({}, ID, _defineProperty({}, EMAIL_ID, 'alpha.bravo@digital.homeoffice.gov.uk'));
41
+ const DATA = {
42
+ [ID]: {
43
+ [EMAIL_ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
44
+ }
45
+ };
46
46
  expect((0, _validateContainer.default)(CONTAINER, DATA)).toEqual([]);
47
47
  });
48
- it('should return an array containing an error when the container has an invalid component', function () {
49
- var EMAIL_ID = 'email';
50
- var EMAIL_LABEL = 'Email';
51
- var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
52
- var ID = 'container';
53
- var LABEL = 'field';
54
- var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
48
+ it('should return an array containing an error when the container has an invalid component', () => {
49
+ const EMAIL_ID = 'email';
50
+ const EMAIL_LABEL = 'Email';
51
+ const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
52
+ const ID = 'container';
53
+ const LABEL = 'field';
54
+ const CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
55
55
  CONTAINER.components = [EMAIL];
56
- var DATA = _defineProperty({}, ID, _defineProperty({}, EMAIL_ID, 'alpha.bravo@digital.homeoffice.com'));
56
+ const DATA = {
57
+ [ID]: {
58
+ [EMAIL_ID]: 'alpha.bravo@digital.homeoffice.com'
59
+ }
60
+ };
57
61
  expect((0, _validateContainer.default)(CONTAINER, DATA)).toEqual([{
58
- id: "".concat(ID, ".").concat(EMAIL_ID),
59
- error: "Enter ".concat(EMAIL_LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
62
+ id: `${ID}.${EMAIL_ID}`,
63
+ error: `Enter ${EMAIL_LABEL.toLowerCase()} in the correct format, like jane.doe@homeoffice.gov.uk`
60
64
  }]);
61
65
  });
62
- it('should apply optional validators when specified', function () {
63
- var ID = 'container';
64
- var DATA = {};
65
- var ADDITIONAL_VALIDATION = [{
66
+ it('should apply optional validators when specified', () => {
67
+ const ID = 'container';
68
+ const DATA = {};
69
+ const ADDITIONAL_VALIDATION = [{
66
70
  function: 'mustEnterAtLeastOne',
67
71
  message: 'Must enter at least one'
68
72
  }];
69
- var COMPONENT = setup(ID, _models.ComponentTypes.DATE, null, false, ADDITIONAL_VALIDATION);
73
+ const COMPONENT = setup(ID, _models.ComponentTypes.DATE, null, false, ADDITIONAL_VALIDATION);
70
74
  expect((0, _validateContainer.default)(COMPONENT, DATA)).toEqual({
71
75
  error: 'Must enter at least one',
72
76
  id: ID