@ukhomeoffice/cop-react-form-renderer 6.14.0 → 6.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/README.md +5 -0
  2. package/dist/components/CheckYourAnswers/Answer.js +12 -11
  3. package/dist/components/CheckYourAnswers/Answer.test.js +132 -181
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +98 -133
  5. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +544 -939
  6. package/dist/components/CheckYourAnswers/index.js +1 -1
  7. package/dist/components/CollectionPage/CollectionPage.js +62 -60
  8. package/dist/components/CollectionPage/CollectionPage.test.js +315 -365
  9. package/dist/components/CollectionPage/index.js +1 -1
  10. package/dist/components/CollectionSummary/BannerStrip.js +14 -14
  11. package/dist/components/CollectionSummary/BannerStrip.test.js +79 -74
  12. package/dist/components/CollectionSummary/CollectionSummary.js +75 -97
  13. package/dist/components/CollectionSummary/CollectionSummary.test.js +182 -166
  14. package/dist/components/CollectionSummary/Confirmation.js +15 -13
  15. package/dist/components/CollectionSummary/Confirmation.test.js +68 -63
  16. package/dist/components/CollectionSummary/RenderListView.js +34 -47
  17. package/dist/components/CollectionSummary/RenderListView.test.js +113 -111
  18. package/dist/components/CollectionSummary/SummaryCard.js +101 -133
  19. package/dist/components/CollectionSummary/SummaryCard.test.js +961 -993
  20. package/dist/components/CollectionSummary/SummaryCardButtons.js +25 -30
  21. package/dist/components/CollectionSummary/SummaryCardButtons.test.js +30 -28
  22. package/dist/components/CollectionSummary/SummaryCardDetails.js +59 -76
  23. package/dist/components/CollectionSummary/SummaryCardDetails.test.js +170 -180
  24. package/dist/components/CollectionSummary/SummaryCardValidationContext.js +31 -36
  25. package/dist/components/CollectionSummary/SummaryCardValidationContext.test.js +63 -75
  26. package/dist/components/CollectionSummary/index.js +1 -1
  27. package/dist/components/FormComponent/Collection.js +63 -100
  28. package/dist/components/FormComponent/Collection.test.js +907 -1080
  29. package/dist/components/FormComponent/Container.js +35 -29
  30. package/dist/components/FormComponent/Container.test.js +378 -409
  31. package/dist/components/FormComponent/FormComponent.js +59 -63
  32. package/dist/components/FormComponent/FormComponent.test.js +354 -415
  33. package/dist/components/FormComponent/helpers/addLabel.js +4 -7
  34. package/dist/components/FormComponent/helpers/getComponentDisabled.js +1 -1
  35. package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +8 -8
  36. package/dist/components/FormComponent/helpers/getComponentError.js +3 -5
  37. package/dist/components/FormComponent/helpers/getComponentError.test.js +15 -15
  38. package/dist/components/FormComponent/helpers/getComponentFieldSet.js +3 -4
  39. package/dist/components/FormComponent/helpers/getComponentFieldSet.test.js +7 -7
  40. package/dist/components/FormComponent/helpers/index.js +5 -5
  41. package/dist/components/FormComponent/index.js +1 -1
  42. package/dist/components/FormPage/FormPage.js +70 -93
  43. package/dist/components/FormPage/FormPage.test.js +150 -202
  44. package/dist/components/FormPage/index.js +1 -1
  45. package/dist/components/FormRenderer/FormRenderer.js +131 -173
  46. package/dist/components/FormRenderer/FormRenderer.test.js +732 -1114
  47. package/dist/components/FormRenderer/handlers/cyaAction.js +3 -3
  48. package/dist/components/FormRenderer/handlers/getPageId.js +1 -3
  49. package/dist/components/FormRenderer/handlers/getPageId.test.js +15 -15
  50. package/dist/components/FormRenderer/handlers/handlers.test.js +33 -33
  51. package/dist/components/FormRenderer/handlers/index.js +2 -2
  52. package/dist/components/FormRenderer/handlers/navigate.js +4 -4
  53. package/dist/components/FormRenderer/handlers/submissionError.js +1 -1
  54. package/dist/components/FormRenderer/helpers/canActionProceed.js +1 -1
  55. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +16 -16
  56. package/dist/components/FormRenderer/helpers/canCYASubmit.js +1 -3
  57. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +17 -21
  58. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +22 -25
  59. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +21 -21
  60. package/dist/components/FormRenderer/helpers/getCYA.js +4 -6
  61. package/dist/components/FormRenderer/helpers/getCYA.test.js +12 -12
  62. package/dist/components/FormRenderer/helpers/getFormState.js +6 -8
  63. package/dist/components/FormRenderer/helpers/getFormState.test.js +11 -11
  64. package/dist/components/FormRenderer/helpers/getNextPageId.js +14 -25
  65. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +68 -68
  66. package/dist/components/FormRenderer/helpers/getPage.js +2 -4
  67. package/dist/components/FormRenderer/helpers/getPage.test.js +12 -12
  68. package/dist/components/FormRenderer/helpers/getRelevantPages.js +7 -9
  69. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +15 -15
  70. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +6 -6
  71. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +104 -98
  72. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +44 -51
  73. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +68 -74
  74. package/dist/components/FormRenderer/helpers/index.js +2 -2
  75. package/dist/components/FormRenderer/index.js +1 -1
  76. package/dist/components/FormRenderer/onCYAAction.js +43 -44
  77. package/dist/components/FormRenderer/onCYAAction.test.js +126 -133
  78. package/dist/components/FormRenderer/onPageAction.js +26 -35
  79. package/dist/components/FormRenderer/onPageAction.test.js +177 -186
  80. package/dist/components/FormRenderer/onTaskAction.js +11 -12
  81. package/dist/components/FormRenderer/onTaskAction.test.js +63 -68
  82. package/dist/components/PageActions/ActionButton.js +14 -14
  83. package/dist/components/PageActions/ActionButton.test.js +57 -79
  84. package/dist/components/PageActions/PageActions.js +11 -11
  85. package/dist/components/PageActions/PageActions.test.js +87 -116
  86. package/dist/components/PageActions/index.js +1 -1
  87. package/dist/components/SummaryList/GroupAction.js +10 -18
  88. package/dist/components/SummaryList/GroupAction.test.js +38 -34
  89. package/dist/components/SummaryList/RowAction.js +12 -17
  90. package/dist/components/SummaryList/RowAction.test.js +38 -34
  91. package/dist/components/SummaryList/SummaryList.js +23 -25
  92. package/dist/components/SummaryList/SummaryList.test.js +162 -189
  93. package/dist/components/SummaryList/SummaryListHeadingRow.js +7 -5
  94. package/dist/components/SummaryList/SummaryListHeadingRowWithAction.js +7 -5
  95. package/dist/components/SummaryList/SummaryListRow.js +7 -5
  96. package/dist/components/SummaryList/SummaryListTitleRow.js +6 -4
  97. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +3 -5
  98. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +23 -23
  99. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +3 -5
  100. package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +23 -23
  101. package/dist/components/SummaryList/helpers/index.js +2 -2
  102. package/dist/components/SummaryList/index.js +1 -1
  103. package/dist/components/TaskList/Task.js +20 -30
  104. package/dist/components/TaskList/Task.test.js +84 -77
  105. package/dist/components/TaskList/TaskList.js +56 -79
  106. package/dist/components/TaskList/TaskList.test.js +149 -149
  107. package/dist/components/TaskList/TaskState.js +8 -6
  108. package/dist/components/TaskList/TaskState.test.js +53 -46
  109. package/dist/components/TaskList/index.js +1 -1
  110. package/dist/components/index.js +8 -8
  111. package/dist/context/HooksContext/HooksContext.js +56 -79
  112. package/dist/context/HooksContext/HooksContext.test.js +27 -36
  113. package/dist/context/HooksContext/index.js +3 -4
  114. package/dist/context/ValidationContext/ValidationContext.js +44 -95
  115. package/dist/context/ValidationContext/ValidationContext.test.js +57 -69
  116. package/dist/context/ValidationContext/index.js +3 -4
  117. package/dist/context/index.js +3 -3
  118. package/dist/hooks/index.js +10 -11
  119. package/dist/hooks/useAxios.js +15 -41
  120. package/dist/hooks/useGetRequest.js +62 -98
  121. package/dist/hooks/useHooks.js +1 -3
  122. package/dist/hooks/useRefData.js +25 -37
  123. package/dist/hooks/useValidation.js +1 -3
  124. package/dist/index.js +14 -15
  125. package/dist/models/CollectionLabels.js +1 -1
  126. package/dist/models/ComponentTypes.js +25 -25
  127. package/dist/models/EventTypes.js +4 -4
  128. package/dist/models/FormPages.js +4 -4
  129. package/dist/models/FormTypes.js +8 -8
  130. package/dist/models/HubFormats.js +3 -3
  131. package/dist/models/PageAction.js +44 -38
  132. package/dist/models/TaskStates.js +29 -28
  133. package/dist/models/index.js +10 -10
  134. package/dist/setupTests.js +30 -31
  135. package/dist/utils/CheckYourAnswers/getCYAAction.js +5 -5
  136. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +53 -55
  137. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +12 -21
  138. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +32 -33
  139. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +15 -28
  140. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +41 -42
  141. package/dist/utils/CheckYourAnswers/getCYARow.js +7 -7
  142. package/dist/utils/CheckYourAnswers/getCYARow.test.js +87 -87
  143. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +19 -21
  144. package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +16 -17
  145. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +27 -34
  146. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +48 -52
  147. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +76 -93
  148. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +110 -115
  149. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +11 -16
  150. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +112 -106
  151. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +14 -19
  152. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +69 -73
  153. package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.js +7 -8
  154. package/dist/utils/CheckYourAnswers/getSummaryListRowForDetails.test.js +15 -16
  155. package/dist/utils/CheckYourAnswers/index.js +2 -2
  156. package/dist/utils/CheckYourAnswers/showComponentCYA.js +5 -5
  157. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +26 -26
  158. package/dist/utils/CollectionPage/addCollectionPageEntry.js +2 -2
  159. package/dist/utils/CollectionPage/addCollectionPageEntry.test.js +6 -6
  160. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +3 -3
  161. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +18 -19
  162. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.js +13 -20
  163. package/dist/utils/CollectionPage/duplicateCollectionPageEntry.test.js +48 -39
  164. package/dist/utils/CollectionPage/getCollectionPageActiveId.js +2 -2
  165. package/dist/utils/CollectionPage/getCollectionPageActiveId.test.js +11 -11
  166. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +7 -11
  167. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +23 -23
  168. package/dist/utils/CollectionPage/getCollectionPageData.js +8 -12
  169. package/dist/utils/CollectionPage/getCollectionPageData.test.js +20 -20
  170. package/dist/utils/CollectionPage/getErrorsForCollection.js +20 -21
  171. package/dist/utils/CollectionPage/getErrorsForCollection.test.js +21 -23
  172. package/dist/utils/CollectionPage/getQuickEditPage.js +22 -23
  173. package/dist/utils/CollectionPage/getQuickEditPage.test.js +17 -18
  174. package/dist/utils/CollectionPage/index.js +2 -2
  175. package/dist/utils/CollectionPage/mergeCollectionPages.js +26 -35
  176. package/dist/utils/CollectionPage/mergeCollectionPages.test.js +18 -18
  177. package/dist/utils/CollectionPage/removeCollectionPageEntry.js +5 -7
  178. package/dist/utils/CollectionPage/removeCollectionPageEntry.test.js +11 -11
  179. package/dist/utils/CollectionPage/setCollectionPageData.js +10 -16
  180. package/dist/utils/CollectionPage/setCollectionPageData.test.js +25 -25
  181. package/dist/utils/Component/addShowWhen.js +5 -6
  182. package/dist/utils/Component/addShowWhen.test.js +38 -38
  183. package/dist/utils/Component/applyToComponentTree.js +12 -15
  184. package/dist/utils/Component/applyToComponentTree.test.js +28 -31
  185. package/dist/utils/Component/cleanAttributes.js +12 -11
  186. package/dist/utils/Component/cleanAttributes.test.js +17 -18
  187. package/dist/utils/Component/elevateNestedComponents.js +6 -6
  188. package/dist/utils/Component/elevateNestedComponents.test.js +34 -34
  189. package/dist/utils/Component/getComponent.js +79 -85
  190. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +19 -18
  191. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +41 -58
  192. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +40 -49
  193. package/dist/utils/Component/getComponentTests/getComponent.date.test.js +24 -34
  194. package/dist/utils/Component/getComponentTests/getComponent.details.test.js +21 -19
  195. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +18 -23
  196. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +21 -26
  197. package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +11 -10
  198. package/dist/utils/Component/getComponentTests/getComponent.html.test.js +18 -16
  199. package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +10 -9
  200. package/dist/utils/Component/getComponentTests/getComponent.list.test.js +18 -16
  201. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +23 -27
  202. package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +201 -226
  203. package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +18 -16
  204. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +18 -23
  205. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +58 -73
  206. package/dist/utils/Component/getComponentTests/getComponent.select.test.js +18 -23
  207. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +18 -23
  208. package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +32 -39
  209. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +21 -30
  210. package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +3 -3
  211. package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +10 -9
  212. package/dist/utils/Component/getDefaultValue.js +7 -9
  213. package/dist/utils/Component/getDefaultValue.test.js +13 -13
  214. package/dist/utils/Component/getDefaultValueFromConfig.js +16 -20
  215. package/dist/utils/Component/getDefaultValueFromConfig.test.js +32 -32
  216. package/dist/utils/Component/index.js +2 -2
  217. package/dist/utils/Component/isEditable.js +2 -4
  218. package/dist/utils/Component/isEditable.test.js +14 -15
  219. package/dist/utils/Component/optionIsSelected.js +2 -4
  220. package/dist/utils/Component/optionIsSelected.test.js +12 -12
  221. package/dist/utils/Component/setupContainerComponentsPath.js +23 -28
  222. package/dist/utils/Component/setupContainerComponentsPath.test.js +12 -12
  223. package/dist/utils/Component/showComponent.js +2 -2
  224. package/dist/utils/Component/showComponent.test.js +29 -29
  225. package/dist/utils/Component/wrapInFormGroup.js +4 -4
  226. package/dist/utils/Condition/index.js +2 -2
  227. package/dist/utils/Condition/meetsAllConditions.js +9 -9
  228. package/dist/utils/Condition/meetsAllConditions.test.js +21 -21
  229. package/dist/utils/Condition/meetsCondition.js +17 -26
  230. package/dist/utils/Condition/meetsCondition.test.js +403 -403
  231. package/dist/utils/Condition/meetsOneCondition.js +6 -6
  232. package/dist/utils/Condition/meetsOneCondition.test.js +17 -17
  233. package/dist/utils/Condition/setupConditions.js +12 -15
  234. package/dist/utils/Condition/setupConditions.test.js +8 -8
  235. package/dist/utils/Container/getEditableComponents.js +4 -6
  236. package/dist/utils/Container/getEditableComponents.test.js +44 -46
  237. package/dist/utils/Container/index.js +2 -2
  238. package/dist/utils/Container/setupNesting.js +14 -15
  239. package/dist/utils/Container/setupNesting.test.js +20 -23
  240. package/dist/utils/Container/showContainer.js +4 -8
  241. package/dist/utils/Container/showContainer.test.js +31 -31
  242. package/dist/utils/Data/applyFormula.js +30 -44
  243. package/dist/utils/Data/applyFormula.test.js +21 -21
  244. package/dist/utils/Data/deleteValues.js +4 -8
  245. package/dist/utils/Data/deleteValues.test.js +11 -11
  246. package/dist/utils/Data/getAutocompleteSource.js +19 -27
  247. package/dist/utils/Data/getAutocompleteSource.test.js +76 -81
  248. package/dist/utils/Data/getDataPath.js +18 -28
  249. package/dist/utils/Data/getDataPath.test.js +13 -13
  250. package/dist/utils/Data/getOptions.js +35 -42
  251. package/dist/utils/Data/getOptions.test.js +37 -38
  252. package/dist/utils/Data/getSourceData.js +6 -19
  253. package/dist/utils/Data/getSourceData.test.js +85 -81
  254. package/dist/utils/Data/index.js +2 -2
  255. package/dist/utils/Data/nestInRefdataOptions.js +9 -12
  256. package/dist/utils/Data/nestInRefdataOptions.test.js +17 -17
  257. package/dist/utils/Data/refDataToOptions.js +9 -10
  258. package/dist/utils/Data/refDataToOptions.test.js +20 -20
  259. package/dist/utils/Data/setDataItem.js +7 -8
  260. package/dist/utils/Data/setDataItem.test.js +38 -38
  261. package/dist/utils/Data/setupFormData.js +13 -20
  262. package/dist/utils/Data/setupFormData.test.js +48 -47
  263. package/dist/utils/Data/setupRefDataUrlForComponent.js +11 -20
  264. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +25 -25
  265. package/dist/utils/FormPage/applyConditionalProperties.js +7 -8
  266. package/dist/utils/FormPage/applyConditionalProperties.test.js +14 -15
  267. package/dist/utils/FormPage/getConditionalText.js +4 -4
  268. package/dist/utils/FormPage/getConditionalText.test.js +30 -30
  269. package/dist/utils/FormPage/getFormPage.js +12 -15
  270. package/dist/utils/FormPage/getFormPage.test.js +23 -24
  271. package/dist/utils/FormPage/getFormPages.js +8 -11
  272. package/dist/utils/FormPage/getFormPages.test.js +15 -16
  273. package/dist/utils/FormPage/getPageActions.js +10 -13
  274. package/dist/utils/FormPage/getPageActions.test.js +33 -33
  275. package/dist/utils/FormPage/getParagraphFromText.js +5 -7
  276. package/dist/utils/FormPage/getParagraphFromText.test.js +7 -7
  277. package/dist/utils/FormPage/index.js +3 -5
  278. package/dist/utils/FormPage/showFormPage.js +4 -8
  279. package/dist/utils/FormPage/showFormPage.test.js +33 -33
  280. package/dist/utils/FormPage/showFormPageCYA.js +2 -2
  281. package/dist/utils/FormPage/showFormPageCYA.test.js +9 -9
  282. package/dist/utils/FormPage/useComponent.js +15 -23
  283. package/dist/utils/FormPage/useComponent.test.js +49 -50
  284. package/dist/utils/Format/formatData.js +1 -1
  285. package/dist/utils/Format/formatData.test.js +19 -19
  286. package/dist/utils/Format/formatDataForComponent.js +6 -7
  287. package/dist/utils/Format/formatDataForComponent.test.js +50 -78
  288. package/dist/utils/Format/formatDataForForm.js +5 -6
  289. package/dist/utils/Format/formatDataForForm.test.js +14 -17
  290. package/dist/utils/Format/formatDataForPage.js +4 -5
  291. package/dist/utils/Format/formatDataForPage.test.js +20 -25
  292. package/dist/utils/Format/index.js +2 -2
  293. package/dist/utils/Hub/getFormHub.js +2 -2
  294. package/dist/utils/Hub/getFormHub.test.js +23 -24
  295. package/dist/utils/Hub/index.js +2 -2
  296. package/dist/utils/Meta/constants.js +2 -2
  297. package/dist/utils/Meta/documents/getDocuments.js +1 -1
  298. package/dist/utils/Meta/documents/getDocuments.test.js +25 -17
  299. package/dist/utils/Meta/documents/index.js +2 -2
  300. package/dist/utils/Meta/documents/setDocumentsForField.js +12 -13
  301. package/dist/utils/Meta/documents/setDocumentsForField.test.js +70 -33
  302. package/dist/utils/Meta/index.js +2 -2
  303. package/dist/utils/Operate/checkValueIsTruthy.js +3 -3
  304. package/dist/utils/Operate/checkValueIsTruthy.test.js +17 -17
  305. package/dist/utils/Operate/deleteValueInFormData.js +2 -2
  306. package/dist/utils/Operate/deleteValueInFormData.test.js +15 -15
  307. package/dist/utils/Operate/getFirstOf.js +6 -6
  308. package/dist/utils/Operate/getFirstOf.test.js +32 -32
  309. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +11 -11
  310. package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +47 -53
  311. package/dist/utils/Operate/getLength.js +9 -9
  312. package/dist/utils/Operate/getLength.test.js +19 -19
  313. package/dist/utils/Operate/index.js +2 -2
  314. package/dist/utils/Operate/persistValueInFormData.js +4 -4
  315. package/dist/utils/Operate/persistValueInFormData.test.js +23 -21
  316. package/dist/utils/Operate/runPageOperations.js +8 -8
  317. package/dist/utils/Operate/runPageOperations.test.js +24 -25
  318. package/dist/utils/Operate/setValueInFormData.js +3 -3
  319. package/dist/utils/Operate/setValueInFormData.test.js +17 -17
  320. package/dist/utils/Operate/shouldRun.js +7 -7
  321. package/dist/utils/Operate/shouldRun.test.js +22 -24
  322. package/dist/utils/Validate/additional/conditionallyPermittedChange.js +1 -1
  323. package/dist/utils/Validate/additional/conditionallyPermittedChange.test.js +15 -15
  324. package/dist/utils/Validate/additional/conditionallyRequired.js +4 -4
  325. package/dist/utils/Validate/additional/conditionallyRequired.test.js +19 -19
  326. package/dist/utils/Validate/additional/index.js +8 -8
  327. package/dist/utils/Validate/additional/index.test.js +22 -22
  328. package/dist/utils/Validate/additional/mustBeAfter.js +3 -3
  329. package/dist/utils/Validate/additional/mustBeAfter.test.js +41 -41
  330. package/dist/utils/Validate/additional/mustBeBefore.js +3 -3
  331. package/dist/utils/Validate/additional/mustBeBefore.test.js +29 -29
  332. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +8 -12
  333. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +37 -38
  334. package/dist/utils/Validate/additional/mustBeGreaterThan.js +2 -2
  335. package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +19 -19
  336. package/dist/utils/Validate/additional/mustBeInTheFuture.js +3 -3
  337. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +13 -13
  338. package/dist/utils/Validate/additional/mustBeInThePast.js +4 -4
  339. package/dist/utils/Validate/additional/mustBeInThePast.test.js +13 -13
  340. package/dist/utils/Validate/additional/mustBeLessThan.js +2 -2
  341. package/dist/utils/Validate/additional/mustBeLessThan.test.js +18 -18
  342. package/dist/utils/Validate/additional/mustBeLongerThan.js +1 -1
  343. package/dist/utils/Validate/additional/mustBeLongerThan.test.js +17 -17
  344. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +2 -2
  345. package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +21 -21
  346. package/dist/utils/Validate/additional/mustBeOneOf.js +1 -1
  347. package/dist/utils/Validate/additional/mustBeOneOf.test.js +13 -13
  348. package/dist/utils/Validate/additional/mustBeShorterThan.js +1 -1
  349. package/dist/utils/Validate/additional/mustBeShorterThan.test.js +17 -17
  350. package/dist/utils/Validate/additional/mustBeUniqueInCollection.js +5 -5
  351. package/dist/utils/Validate/additional/mustBeUniqueInCollection.test.js +35 -36
  352. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +2 -2
  353. package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +15 -17
  354. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +1 -1
  355. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +13 -13
  356. package/dist/utils/Validate/additional/mustNotContainSql.js +3 -4
  357. package/dist/utils/Validate/additional/mustNotContainSql.test.js +15 -15
  358. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +2 -2
  359. package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +29 -27
  360. package/dist/utils/Validate/additional/utils.js +9 -22
  361. package/dist/utils/Validate/index.js +2 -2
  362. package/dist/utils/Validate/validateCollection.js +18 -23
  363. package/dist/utils/Validate/validateCollection.test.js +75 -67
  364. package/dist/utils/Validate/validateComponent.js +19 -19
  365. package/dist/utils/Validate/validateComponent.test.js +179 -154
  366. package/dist/utils/Validate/validateContainer.js +14 -17
  367. package/dist/utils/Validate/validateContainer.test.js +59 -53
  368. package/dist/utils/Validate/validateDate.js +16 -22
  369. package/dist/utils/Validate/validateDate.test.js +31 -32
  370. package/dist/utils/Validate/validateEmail.js +7 -9
  371. package/dist/utils/Validate/validateEmail.test.js +27 -27
  372. package/dist/utils/Validate/validateMultifile.js +5 -7
  373. package/dist/utils/Validate/validateMultifile.test.js +17 -18
  374. package/dist/utils/Validate/validatePage.js +13 -18
  375. package/dist/utils/Validate/validatePage.test.js +198 -195
  376. package/dist/utils/Validate/validateRegex.js +3 -5
  377. package/dist/utils/Validate/validateRegex.test.js +15 -15
  378. package/dist/utils/Validate/validateRequired.js +4 -6
  379. package/dist/utils/Validate/validateRequired.test.js +19 -19
  380. package/dist/utils/Validate/validateTextArea.js +4 -6
  381. package/dist/utils/Validate/validateTextArea.test.js +21 -21
  382. package/dist/utils/Validate/validateTime.js +12 -19
  383. package/dist/utils/Validate/validateTime.test.js +27 -27
  384. package/dist/utils/index.js +5 -6
  385. package/package.json +2 -4
@@ -2,56 +2,53 @@
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(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); }
5
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
7
6
  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
7
  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.Component', function () {
13
- var setup = function setup(id, type, label, required, additionalValidation) {
14
- return {
15
- id: id,
16
- fieldId: id,
17
- type: type,
18
- label: label,
19
- required: required,
20
- additionalValidation: additionalValidation
21
- };
22
- };
23
- it('should return no error when the component is null', function () {
8
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
9
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
10
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // Local imports
11
+ describe('utils.Validate.Component', () => {
12
+ const setup = (id, type, label, required, additionalValidation) => ({
13
+ id,
14
+ fieldId: id,
15
+ type,
16
+ label,
17
+ required,
18
+ additionalValidation
19
+ });
20
+ it('should return no error when the component is null', () => {
24
21
  expect((0, _validateComponent.default)(null, {})).toBeUndefined();
25
22
  });
26
- describe('when there is no form data', function () {
27
- it('should return no error when the component is not required and not an email type', function () {
28
- var ID = 'field';
29
- var LABEL = 'Field';
30
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
23
+ describe('when there is no form data', () => {
24
+ it('should return no error when the component is not required and not an email type', () => {
25
+ const ID = 'field';
26
+ const LABEL = 'Field';
27
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
31
28
  expect((0, _validateComponent.default)(COMPONENT, null)).toBeUndefined();
32
29
  });
33
- it('should return a required error when the component is required and not an email type', function () {
34
- var ID = 'field';
35
- var LABEL = 'Field';
36
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
30
+ it('should return a required error when the component is required and not an email type', () => {
31
+ const ID = 'field';
32
+ const LABEL = 'Field';
33
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
37
34
  expect((0, _validateComponent.default)(COMPONENT, null)).toEqual({
38
35
  id: ID,
39
36
  error: "".concat(LABEL, " is required")
40
37
  });
41
38
  });
42
- it('should return a required error when the component is required and of type email', function () {
43
- var ID = 'field';
44
- var LABEL = 'Field';
45
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
39
+ it('should return a required error when the component is required and of type email', () => {
40
+ const ID = 'field';
41
+ const LABEL = 'Field';
42
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
46
43
  expect((0, _validateComponent.default)(COMPONENT, null)).toEqual({
47
44
  id: ID,
48
45
  error: "".concat(LABEL, " is required")
49
46
  });
50
47
  });
51
- it('should return a required error when the component is required and of type collection summary', function () {
52
- var ID = 'field';
53
- var LABEL = 'Field';
54
- var COMPONENT = _objectSpread(_objectSpread({}, setup(ID, _models.ComponentTypes.COLLECTION_SUMMARY, LABEL, true)), {}, {
48
+ it('should return a required error when the component is required and of type collection summary', () => {
49
+ const ID = 'field';
50
+ const LABEL = 'Field';
51
+ const COMPONENT = _objectSpread(_objectSpread({}, setup(ID, _models.ComponentTypes.COLLECTION_SUMMARY, LABEL, true)), {}, {
55
52
  collectionName: 'testCollection'
56
53
  });
57
54
  expect((0, _validateComponent.default)(COMPONENT, {})).toEqual({
@@ -59,73 +56,79 @@ describe('utils.Validate.Component', function () {
59
56
  error: "".concat(LABEL, " is required")
60
57
  });
61
58
  });
62
- it('should return no error when the component is of type email but not required', function () {
63
- var ID = 'field';
64
- var LABEL = 'Field';
65
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
59
+ it('should return no error when the component is of type email but not required', () => {
60
+ const ID = 'field';
61
+ const LABEL = 'Field';
62
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
66
63
  expect((0, _validateComponent.default)(COMPONENT, null)).toBeUndefined();
67
64
  });
68
65
  });
69
- describe('when the value is fully valid', function () {
70
- var ID = 'field';
71
- var DATA = _defineProperty({}, ID, 'alpha.bravo@digital.homeoffice.gov.uk');
72
- it('should return no error when the component is not required and not an email type', function () {
73
- var LABEL = 'Field';
74
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
66
+ describe('when the value is fully valid', () => {
67
+ const ID = 'field';
68
+ const DATA = {
69
+ [ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
70
+ };
71
+ it('should return no error when the component is not required and not an email type', () => {
72
+ const LABEL = 'Field';
73
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
75
74
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
76
75
  });
77
- it('should return no error when the component is required and not an email type', function () {
78
- var LABEL = 'Field';
79
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
76
+ it('should return no error when the component is required and not an email type', () => {
77
+ const LABEL = 'Field';
78
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
80
79
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
81
80
  });
82
- it('should return no error when the component is required and of type email', function () {
83
- var LABEL = 'Field';
84
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
81
+ it('should return no error when the component is required and of type email', () => {
82
+ const LABEL = 'Field';
83
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
85
84
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
86
85
  });
87
- it('should return no error when the component is of type email but not required', function () {
88
- var LABEL = 'Field';
89
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
86
+ it('should return no error when the component is of type email but not required', () => {
87
+ const LABEL = 'Field';
88
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
90
89
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
91
90
  });
92
91
  });
93
- describe('when the value is an invalid email', function () {
94
- var ID = 'field';
95
- var DATA = _defineProperty({}, ID, 'alpha.bravo@hotmail.com');
96
- it('should return no error when the component is not required and not an email type', function () {
97
- var LABEL = 'Field';
98
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
92
+ describe('when the value is an invalid email', () => {
93
+ const ID = 'field';
94
+ const DATA = {
95
+ [ID]: 'alpha.bravo@hotmail.com'
96
+ };
97
+ it('should return no error when the component is not required and not an email type', () => {
98
+ const LABEL = 'Field';
99
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, false);
99
100
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
100
101
  });
101
- it('should return no error when the component is required and not an email type', function () {
102
- var LABEL = 'Field';
103
- var COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
102
+ it('should return no error when the component is required and not an email type', () => {
103
+ const LABEL = 'Field';
104
+ const COMPONENT = setup(ID, _models.ComponentTypes.TEXT, LABEL, true);
104
105
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toBeUndefined();
105
106
  });
106
- it('should return no error when the component is required and of type email', function () {
107
- var LABEL = 'Field';
108
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
107
+ it('should return no error when the component is required and of type email', () => {
108
+ const LABEL = 'Field';
109
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, true);
109
110
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
110
111
  id: ID,
111
112
  error: "Enter ".concat(LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
112
113
  });
113
114
  });
114
- it('should return no error when the component is of type email but not required', function () {
115
- var LABEL = 'Field';
116
- var COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
115
+ it('should return no error when the component is of type email but not required', () => {
116
+ const LABEL = 'Field';
117
+ const COMPONENT = setup(ID, _models.ComponentTypes.EMAIL, LABEL, false);
117
118
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
118
119
  id: ID,
119
120
  error: "Enter ".concat(LABEL.toLowerCase(), " in the correct format, like jane.doe@homeoffice.gov.uk")
120
121
  });
121
122
  });
122
123
  });
123
- describe('when the component is a Date Input', function () {
124
- var ID = 'field';
125
- it('should always reject invalid dates', function () {
126
- var LABEL = 'Field';
127
- var COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false);
128
- var DATA = _defineProperty({}, ID, '25-45-2033');
124
+ describe('when the component is a Date Input', () => {
125
+ const ID = 'field';
126
+ it('should always reject invalid dates', () => {
127
+ const LABEL = 'Field';
128
+ const COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false);
129
+ const DATA = {
130
+ [ID]: '25-45-2033'
131
+ };
129
132
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
130
133
  error: 'Month must be between 1 and 12',
131
134
  id: ID,
@@ -134,16 +137,18 @@ describe('utils.Validate.Component', function () {
134
137
  }
135
138
  });
136
139
  });
137
- it('should apply optional validators when specified', function () {
138
- var LABEL = 'Field';
139
- var DATA = _defineProperty({}, ID, '25-3-3033');
140
- var ADDITIONAL_VALIDATION = [{
140
+ it('should apply optional validators when specified', () => {
141
+ const LABEL = 'Field';
142
+ const DATA = {
143
+ [ID]: '25-3-3033'
144
+ };
145
+ const ADDITIONAL_VALIDATION = [{
141
146
  function: 'mustBeBefore',
142
147
  value: 3,
143
148
  unit: 'day',
144
149
  message: 'Date must be less than 3 days in the future'
145
150
  }];
146
- var COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false, ADDITIONAL_VALIDATION);
151
+ const COMPONENT = setup(ID, _models.ComponentTypes.DATE, LABEL, false, ADDITIONAL_VALIDATION);
147
152
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
148
153
  error: 'Date must be less than 3 days in the future',
149
154
  id: ID,
@@ -155,12 +160,14 @@ describe('utils.Validate.Component', function () {
155
160
  });
156
161
  });
157
162
  });
158
- describe('when the component is a Time Input', function () {
159
- var ID = 'field';
160
- it('should always reject invalid time', function () {
161
- var LABEL = 'Field';
162
- var COMPONENT = setup(ID, _models.ComponentTypes.TIME, LABEL, false);
163
- var DATA = _defineProperty({}, ID, '25:45');
163
+ describe('when the component is a Time Input', () => {
164
+ const ID = 'field';
165
+ it('should always reject invalid time', () => {
166
+ const LABEL = 'Field';
167
+ const COMPONENT = setup(ID, _models.ComponentTypes.TIME, LABEL, false);
168
+ const DATA = {
169
+ [ID]: '25:45'
170
+ };
164
171
  expect((0, _validateComponent.default)(COMPONENT, DATA)).toEqual({
165
172
  error: 'Hour must be between 0 and 23',
166
173
  id: ID,
@@ -170,26 +177,30 @@ describe('utils.Validate.Component', function () {
170
177
  });
171
178
  });
172
179
  });
173
- describe('when the component is a container', function () {
174
- it('should return an empty array when the container has only valid components', 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 = 'container';
179
- var LABEL = 'field';
180
- var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
180
+ describe('when the component is a container', () => {
181
+ it('should return an empty array when the container has only valid components', () => {
182
+ const EMAIL_ID = 'email';
183
+ const EMAIL_LABEL = 'Email';
184
+ const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
185
+ const ID = 'container';
186
+ const LABEL = 'field';
187
+ const CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
181
188
  CONTAINER.components = [EMAIL];
182
- var DATA = _defineProperty({}, ID, _defineProperty({}, EMAIL_ID, 'alpha.bravo@digital.homeoffice.gov.uk'));
189
+ const DATA = {
190
+ [ID]: {
191
+ [EMAIL_ID]: 'alpha.bravo@digital.homeoffice.gov.uk'
192
+ }
193
+ };
183
194
  expect((0, _validateComponent.default)(CONTAINER, DATA)).toEqual([]);
184
195
  });
185
- it('should return an empty array when the container has only valid components', function () {
186
- var TEXT_COMPONENT = {
196
+ it('should return an empty array when the container has only valid components', () => {
197
+ const TEXT_COMPONENT = {
187
198
  id: 'one',
188
199
  fieldId: 'one',
189
200
  type: _models.ComponentTypes.TEXT,
190
201
  label: 'Text component one'
191
202
  };
192
- var TEXT_COMPONENT_TWO = {
203
+ const TEXT_COMPONENT_TWO = {
193
204
  id: 'two',
194
205
  fieldId: 'two',
195
206
  type: _models.ComponentTypes.TEXT,
@@ -201,38 +212,48 @@ describe('utils.Validate.Component', function () {
201
212
  value: 'other'
202
213
  }
203
214
  };
204
- var ID = 'container';
205
- var LABEL = 'field';
206
- var CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
215
+ const ID = 'container';
216
+ const LABEL = 'field';
217
+ const CONTAINER = setup(ID, _models.ComponentTypes.CONTAINER, LABEL, false);
207
218
  CONTAINER.components = [TEXT_COMPONENT, TEXT_COMPONENT_TWO];
208
- var DATA = _defineProperty({}, ID, {
209
- one: 'other'
210
- });
211
- var errors = (0, _validateComponent.default)(CONTAINER, DATA, {
219
+ const DATA = {
220
+ [ID]: {
221
+ one: 'other'
222
+ }
223
+ };
224
+ const errors = (0, _validateComponent.default)(CONTAINER, DATA, {
212
225
  colour: 'blue'
213
226
  });
214
227
  expect(errors.length).toEqual(1);
215
228
  });
216
229
  });
217
- describe('when the component is a collection', function () {
218
- it('should return an empty array when the collection has only valid items', function () {
219
- var EMAIL_ID = 'email';
220
- var EMAIL_LABEL = 'Email';
221
- var EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
222
- var ID = 'collection';
223
- var LABEL = 'field';
224
- var COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false);
230
+ describe('when the component is a collection', () => {
231
+ it('should return an empty array when the collection has only valid items', () => {
232
+ const EMAIL_ID = 'email';
233
+ const EMAIL_LABEL = 'Email';
234
+ const EMAIL = setup(EMAIL_ID, _models.ComponentTypes.EMAIL, EMAIL_LABEL, false);
235
+ const ID = 'collection';
236
+ const LABEL = 'field';
237
+ const COLLECTION = setup(ID, _models.ComponentTypes.COLLECTION, LABEL, false);
225
238
  COLLECTION.item = [EMAIL];
226
- var DATA = _defineProperty({}, ID, [_defineProperty({}, EMAIL_ID, 'alpha.bravo@homeoffice.gov.uk'), _defineProperty({}, EMAIL_ID, 'charlie.delta@homeoffice.gov.uk')]);
239
+ const DATA = {
240
+ [ID]: [{
241
+ [EMAIL_ID]: 'alpha.bravo@homeoffice.gov.uk'
242
+ }, {
243
+ [EMAIL_ID]: 'charlie.delta@homeoffice.gov.uk'
244
+ }]
245
+ };
227
246
  expect((0, _validateComponent.default)(COLLECTION, DATA)).toEqual([]);
228
247
  });
229
248
  });
230
- describe('when the component has a nested component', function () {
231
- it('should return no error when the radio component contains nested components without errors', function () {
232
- var NESTED_ID = 'nestedId';
233
- var NESTED_VALUE = 'nestedValue';
234
- var FORMDATA = _defineProperty({}, NESTED_ID, NESTED_VALUE);
235
- var COMPONENT = {
249
+ describe('when the component has a nested component', () => {
250
+ it('should return no error when the radio component contains nested components without errors', () => {
251
+ const NESTED_ID = 'nestedId';
252
+ const NESTED_VALUE = 'nestedValue';
253
+ const FORMDATA = {
254
+ [NESTED_ID]: NESTED_VALUE
255
+ };
256
+ const COMPONENT = {
236
257
  type: 'radios',
237
258
  id: 'a',
238
259
  data: {
@@ -248,10 +269,10 @@ describe('utils.Validate.Component', function () {
248
269
  };
249
270
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
250
271
  });
251
- it('should return an error when the radio component contains nested components with errors', function () {
252
- var NESTED_ID = 'nestedId';
253
- var FORMDATA = {};
254
- var COMPONENT = {
272
+ it('should return an error when the radio component contains nested components with errors', () => {
273
+ const NESTED_ID = 'nestedId';
274
+ const FORMDATA = {};
275
+ const COMPONENT = {
255
276
  type: 'radios',
256
277
  id: 'a',
257
278
  data: {
@@ -270,9 +291,9 @@ describe('utils.Validate.Component', function () {
270
291
  error: "Field is required"
271
292
  }]);
272
293
  });
273
- it('should return no error when a non selected radio component contains nested components with errors', function () {
274
- var NESTED_ID = 'nestedId';
275
- var COMPONENT = {
294
+ it('should return no error when a non selected radio component contains nested components with errors', () => {
295
+ const NESTED_ID = 'nestedId';
296
+ const COMPONENT = {
276
297
  type: 'radios',
277
298
  id: 'a',
278
299
  data: {
@@ -289,11 +310,13 @@ describe('utils.Validate.Component', function () {
289
310
  };
290
311
  expect((0, _validateComponent.default)(COMPONENT, undefined, {})).toBeUndefined();
291
312
  });
292
- it('should return no error when the checkbox component contains nested components without errors', function () {
293
- var NESTED_ID = 'nestedId';
294
- var NESTED_VALUE = 'nestedValue';
295
- var FORMDATA = _defineProperty({}, NESTED_ID, NESTED_VALUE);
296
- var COMPONENT = {
313
+ it('should return no error when the checkbox component contains nested components without errors', () => {
314
+ const NESTED_ID = 'nestedId';
315
+ const NESTED_VALUE = 'nestedValue';
316
+ const FORMDATA = {
317
+ [NESTED_ID]: NESTED_VALUE
318
+ };
319
+ const COMPONENT = {
297
320
  type: 'checkboxes',
298
321
  id: 'a',
299
322
  data: {
@@ -309,13 +332,13 @@ describe('utils.Validate.Component', function () {
309
332
  };
310
333
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
311
334
  });
312
- it('should return an error when the checkbox component contains nested components with errors', function () {
313
- var NESTED_ID = 'nestedId';
314
- var OPTION_VALUE = 'optionValue';
315
- var FORMDATA = {
335
+ it('should return an error when the checkbox component contains nested components with errors', () => {
336
+ const NESTED_ID = 'nestedId';
337
+ const OPTION_VALUE = 'optionValue';
338
+ const FORMDATA = {
316
339
  'a': [OPTION_VALUE]
317
340
  };
318
- var COMPONENT = {
341
+ const COMPONENT = {
319
342
  type: 'checkboxes',
320
343
  id: 'a',
321
344
  data: {
@@ -335,14 +358,15 @@ describe('utils.Validate.Component', function () {
335
358
  error: "Field is required"
336
359
  }]);
337
360
  });
338
- it('should return no error when a non selected checkbox component contains nested components with errors', function () {
339
- var NESTED_ID_NOT_SELECTED = 'nestedIdNotSelected';
340
- var NESTED_ID_SELECTED = 'nestedIdSelected';
341
- var NESTED_VALUE_SELECTED = 'nestedValueSelected';
342
- var FORMDATA = _defineProperty({
343
- 'a': ['optionValueSelected']
344
- }, NESTED_ID_SELECTED, NESTED_VALUE_SELECTED);
345
- var COMPONENT = {
361
+ it('should return no error when a non selected checkbox component contains nested components with errors', () => {
362
+ const NESTED_ID_NOT_SELECTED = 'nestedIdNotSelected';
363
+ const NESTED_ID_SELECTED = 'nestedIdSelected';
364
+ const NESTED_VALUE_SELECTED = 'nestedValueSelected';
365
+ const FORMDATA = {
366
+ 'a': ['optionValueSelected'],
367
+ [NESTED_ID_SELECTED]: NESTED_VALUE_SELECTED
368
+ };
369
+ const COMPONENT = {
346
370
  type: 'checkboxes',
347
371
  id: 'a',
348
372
  data: {
@@ -369,16 +393,17 @@ describe('utils.Validate.Component', function () {
369
393
  };
370
394
  expect((0, _validateComponent.default)(COMPONENT, undefined, FORMDATA)).toBeUndefined();
371
395
  });
372
- it('should return no error when all selected checkbox components contains nested components without errors', function () {
373
- var _FORMDATA4;
374
- var NESTED_ID_SELECTED_1 = 'nestedIdSelected1';
375
- var NESTED_ID_SELECTED_2 = 'nestedIdSelected2';
376
- var NESTED_VALUE_SELECTED_1 = 'nestedValueSelected1';
377
- var NESTED_VALUE_SELECTED_2 = 'nestedValueSelected2';
378
- var FORMDATA = (_FORMDATA4 = {
379
- 'a': ['optionValueSelected1', 'optionValueSelected2']
380
- }, _defineProperty(_FORMDATA4, NESTED_ID_SELECTED_1, NESTED_VALUE_SELECTED_1), _defineProperty(_FORMDATA4, NESTED_ID_SELECTED_2, NESTED_VALUE_SELECTED_2), _FORMDATA4);
381
- var COMPONENT = {
396
+ it('should return no error when all selected checkbox components contains nested components without errors', () => {
397
+ const NESTED_ID_SELECTED_1 = 'nestedIdSelected1';
398
+ const NESTED_ID_SELECTED_2 = 'nestedIdSelected2';
399
+ const NESTED_VALUE_SELECTED_1 = 'nestedValueSelected1';
400
+ const NESTED_VALUE_SELECTED_2 = 'nestedValueSelected2';
401
+ const FORMDATA = {
402
+ 'a': ['optionValueSelected1', 'optionValueSelected2'],
403
+ [NESTED_ID_SELECTED_1]: NESTED_VALUE_SELECTED_1,
404
+ [NESTED_ID_SELECTED_2]: NESTED_VALUE_SELECTED_2
405
+ };
406
+ const COMPONENT = {
382
407
  type: 'checkboxes',
383
408
  id: 'a',
384
409
  data: {
@@ -7,13 +7,12 @@ exports.default = void 0;
7
7
  var _elevateNestedComponents = _interopRequireDefault(require("../Component/elevateNestedComponents"));
8
8
  var _validateComponent = _interopRequireDefault(require("./validateComponent"));
9
9
  var _additional = _interopRequireDefault(require("./additional"));
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
- 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); }
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
11
  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; }
13
12
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14
- 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; }
15
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
16
- 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
13
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
14
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
15
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } // Local imports
17
16
  /**
18
17
  * Validates all components within a container.
19
18
  * @param {object} container The container to validate.
@@ -21,34 +20,32 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
21
20
  * @param {object} formData The data at the top level of the form.
22
21
  * @returns Errors for all components within the container.
23
22
  */
24
- var validateContainer = function validateContainer(container, outerData, formData) {
23
+ const validateContainer = (container, outerData, formData) => {
25
24
  if (!container) {
26
25
  return [];
27
26
  }
28
- var fd = formData || outerData;
29
- var error = (0, _additional.default)(container, fd);
27
+ const fd = formData || outerData;
28
+ const error = (0, _additional.default)(container, fd);
30
29
  if (error) {
31
30
  return {
32
31
  id: container.id,
33
- error: error
32
+ error
34
33
  };
35
34
  }
36
- var errors = [];
35
+ const errors = [];
37
36
  if (Array.isArray(container.components)) {
38
- var containerData = outerData && container.fieldId ? outerData[container.fieldId] : outerData;
39
- var fullContainerComponents = (0, _elevateNestedComponents.default)(container.components, containerData);
40
- fullContainerComponents.forEach(function (component) {
37
+ const containerData = outerData && container.fieldId ? outerData[container.fieldId] : outerData;
38
+ const fullContainerComponents = (0, _elevateNestedComponents.default)(container.components, containerData);
39
+ fullContainerComponents.forEach(component => {
41
40
  // It is possible that the container being passed in is a
42
41
  // dummy container just for validation. In that scenario we want
43
42
  // to ignore the full_path and just use the component's fieldId.
44
- var fullPath = container.full_path || container.fieldId ? "".concat(container.full_path || container.fieldId, ".").concat(component.fieldId) : component.fieldId;
43
+ const fullPath = container.full_path || container.fieldId ? "".concat(container.full_path || container.fieldId, ".").concat(component.fieldId) : component.fieldId;
45
44
  errors.push((0, _validateComponent.default)(_objectSpread(_objectSpread({}, component), {}, {
46
45
  full_path: fullPath
47
46
  }), containerData, fd));
48
47
  });
49
48
  }
50
- return errors.flat(1).filter(function (e) {
51
- return !!e;
52
- });
49
+ return errors.flat(1).filter(e => !!e);
53
50
  };
54
51
  var _default = exports.default = validateContainer;