@ukhomeoffice/cop-react-form-renderer 5.45.2-alpha → 5.48.1-bravo

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