@ukhomeoffice/cop-react-form-renderer 4.67.0 → 4.69.0

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 (317) hide show
  1. package/dist/components/CheckYourAnswers/Answer.js +6 -16
  2. package/dist/components/CheckYourAnswers/Answer.test.js +104 -129
  3. package/dist/components/CheckYourAnswers/CheckYourAnswers.js +26 -64
  4. package/dist/components/CheckYourAnswers/CheckYourAnswers.test.js +428 -555
  5. package/dist/components/CheckYourAnswers/index.js +0 -3
  6. package/dist/components/CollectionPage/CollectionPage.js +13 -42
  7. package/dist/components/CollectionPage/CollectionPage.test.js +160 -206
  8. package/dist/components/CollectionPage/index.js +0 -3
  9. package/dist/components/FormComponent/Collection.js +35 -79
  10. package/dist/components/FormComponent/Collection.test.js +340 -391
  11. package/dist/components/FormComponent/Container.js +10 -31
  12. package/dist/components/FormComponent/Container.test.js +304 -357
  13. package/dist/components/FormComponent/FormComponent.js +17 -60
  14. package/dist/components/FormComponent/FormComponent.test.js +190 -228
  15. package/dist/components/FormComponent/helpers/addLabel.js +4 -7
  16. package/dist/components/FormComponent/helpers/getComponentDisabled.js +0 -4
  17. package/dist/components/FormComponent/helpers/getComponentDisabled.test.js +0 -2
  18. package/dist/components/FormComponent/helpers/getComponentError.js +0 -6
  19. package/dist/components/FormComponent/helpers/getComponentError.test.js +0 -2
  20. package/dist/components/FormComponent/helpers/index.js +0 -4
  21. package/dist/components/FormComponent/index.js +0 -3
  22. package/dist/components/FormPage/FormPage.js +21 -53
  23. package/dist/components/FormPage/FormPage.test.js +122 -160
  24. package/dist/components/FormPage/index.js +0 -3
  25. package/dist/components/FormRenderer/FormRenderer.js +106 -296
  26. package/dist/components/FormRenderer/FormRenderer.test.js +820 -1058
  27. package/dist/components/FormRenderer/handlers/cyaAction.js +0 -5
  28. package/dist/components/FormRenderer/handlers/getPageId.js +0 -2
  29. package/dist/components/FormRenderer/handlers/getPageId.test.js +1 -2
  30. package/dist/components/FormRenderer/handlers/handlers.test.js +1 -18
  31. package/dist/components/FormRenderer/handlers/index.js +0 -5
  32. package/dist/components/FormRenderer/handlers/navigate.js +0 -5
  33. package/dist/components/FormRenderer/handlers/submissionError.js +0 -2
  34. package/dist/components/FormRenderer/helpers/canActionProceed.js +0 -3
  35. package/dist/components/FormRenderer/helpers/canActionProceed.test.js +1 -3
  36. package/dist/components/FormRenderer/helpers/canCYASubmit.js +0 -2
  37. package/dist/components/FormRenderer/helpers/canCYASubmit.test.js +1 -5
  38. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.js +12 -16
  39. package/dist/components/FormRenderer/helpers/cleanHiddenNestedData.test.js +48 -11
  40. package/dist/components/FormRenderer/helpers/getCYA.js +0 -9
  41. package/dist/components/FormRenderer/helpers/getCYA.test.js +1 -3
  42. package/dist/components/FormRenderer/helpers/getFormState.js +0 -5
  43. package/dist/components/FormRenderer/helpers/getFormState.test.js +1 -3
  44. package/dist/components/FormRenderer/helpers/getNextPageId.js +0 -25
  45. package/dist/components/FormRenderer/helpers/getNextPageId.test.js +1 -4
  46. package/dist/components/FormRenderer/helpers/getPage.js +0 -5
  47. package/dist/components/FormRenderer/helpers/getPage.test.js +1 -3
  48. package/dist/components/FormRenderer/helpers/getRelevantPages.js +0 -6
  49. package/dist/components/FormRenderer/helpers/getRelevantPages.test.js +1 -3
  50. package/dist/components/FormRenderer/helpers/getSubmissionStatus.js +0 -10
  51. package/dist/components/FormRenderer/helpers/getSubmissionStatus.test.js +4 -7
  52. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.js +32 -41
  53. package/dist/components/FormRenderer/helpers/getUpdatedSectionStates.test.js +122 -8
  54. package/dist/components/FormRenderer/helpers/index.js +1 -11
  55. package/dist/components/FormRenderer/index.js +0 -3
  56. package/dist/components/FormRenderer/onCYAAction.js +8 -30
  57. package/dist/components/FormRenderer/onCYAAction.test.js +54 -79
  58. package/dist/components/FormRenderer/onPageAction.js +123 -0
  59. package/dist/components/FormRenderer/onPageAction.test.js +632 -0
  60. package/dist/components/PageActions/ActionButton.js +2 -17
  61. package/dist/components/PageActions/ActionButton.test.js +58 -81
  62. package/dist/components/PageActions/PageActions.js +3 -10
  63. package/dist/components/PageActions/PageActions.test.js +95 -120
  64. package/dist/components/PageActions/index.js +0 -3
  65. package/dist/components/SummaryList/GroupAction.js +5 -26
  66. package/dist/components/SummaryList/GroupAction.test.js +14 -28
  67. package/dist/components/SummaryList/RowAction.js +5 -25
  68. package/dist/components/SummaryList/RowAction.test.js +14 -28
  69. package/dist/components/SummaryList/SummaryList.js +7 -31
  70. package/dist/components/SummaryList/SummaryList.test.js +69 -126
  71. package/dist/components/SummaryList/SummaryListHeadingRow.js +3 -8
  72. package/dist/components/SummaryList/SummaryListRow.js +4 -8
  73. package/dist/components/SummaryList/SummaryListTitleRow.js +2 -7
  74. package/dist/components/SummaryList/helpers/getGroupActionAttributes.js +0 -3
  75. package/dist/components/SummaryList/helpers/getGroupActionAttributes.test.js +0 -6
  76. package/dist/components/SummaryList/helpers/getRowActionAttributes.js +0 -3
  77. package/dist/components/SummaryList/helpers/getRowActionAttributes.test.js +0 -6
  78. package/dist/components/SummaryList/helpers/index.js +0 -2
  79. package/dist/components/SummaryList/index.js +0 -3
  80. package/dist/components/TaskList/Task.js +9 -31
  81. package/dist/components/TaskList/Task.test.js +32 -59
  82. package/dist/components/TaskList/TaskList.js +32 -59
  83. package/dist/components/TaskList/TaskList.test.js +52 -90
  84. package/dist/components/TaskList/TaskState.js +2 -10
  85. package/dist/components/TaskList/TaskState.test.js +23 -41
  86. package/dist/components/TaskList/index.js +0 -3
  87. package/dist/components/index.js +0 -7
  88. package/dist/context/HooksContext/HooksContext.js +21 -39
  89. package/dist/context/HooksContext/HooksContext.test.js +18 -34
  90. package/dist/context/HooksContext/index.js +0 -5
  91. package/dist/context/ValidationContext/ValidationContext.js +26 -56
  92. package/dist/context/ValidationContext/ValidationContext.test.js +43 -64
  93. package/dist/context/ValidationContext/index.js +0 -5
  94. package/dist/context/index.js +0 -3
  95. package/dist/hooks/index.js +0 -9
  96. package/dist/hooks/useAxios.js +17 -36
  97. package/dist/hooks/useGetRequest.js +57 -93
  98. package/dist/hooks/useHooks.js +2 -4
  99. package/dist/hooks/useRefData.js +14 -41
  100. package/dist/hooks/useValidation.js +2 -4
  101. package/dist/index.js +0 -9
  102. package/dist/models/PageAction.js +4 -4
  103. package/dist/models/TaskStates.js +4 -4
  104. package/dist/models/index.js +1 -10
  105. package/dist/setupTests.js +0 -13
  106. package/dist/utils/CheckYourAnswers/getCYAAction.js +1 -9
  107. package/dist/utils/CheckYourAnswers/getCYAAction.test.js +1 -19
  108. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.js +4 -11
  109. package/dist/utils/CheckYourAnswers/getCYACollectionChangeAction.test.js +4 -9
  110. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.js +4 -9
  111. package/dist/utils/CheckYourAnswers/getCYACollectionDeleteAction.test.js +4 -8
  112. package/dist/utils/CheckYourAnswers/getCYARow.js +3 -11
  113. package/dist/utils/CheckYourAnswers/getCYARow.test.js +60 -25
  114. package/dist/utils/CheckYourAnswers/getCYARowForGroup.js +6 -21
  115. package/dist/utils/CheckYourAnswers/getCYARowForGroup.test.js +2 -9
  116. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.js +4 -20
  117. package/dist/utils/CheckYourAnswers/getCYARowsForCollection.test.js +7 -22
  118. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.js +4 -32
  119. package/dist/utils/CheckYourAnswers/getCYARowsForCollectionPage.test.js +4 -34
  120. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.js +4 -15
  121. package/dist/utils/CheckYourAnswers/getCYARowsForContainer.test.js +4 -22
  122. package/dist/utils/CheckYourAnswers/getCYARowsForPage.js +2 -22
  123. package/dist/utils/CheckYourAnswers/getCYARowsForPage.test.js +7 -25
  124. package/dist/utils/CheckYourAnswers/index.js +1 -3
  125. package/dist/utils/CheckYourAnswers/showComponentCYA.js +2 -15
  126. package/dist/utils/CheckYourAnswers/showComponentCYA.test.js +1 -3
  127. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.js +4 -12
  128. package/dist/utils/CollectionPage/duplicateCollectionPageActiveEntry.test.js +5 -6
  129. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.js +0 -6
  130. package/dist/utils/CollectionPage/getCollectionPageActiveIndex.test.js +1 -2
  131. package/dist/utils/CollectionPage/index.js +1 -5
  132. package/dist/utils/CollectionPage/mergeCollectionPages.js +5 -11
  133. package/dist/utils/CollectionPage/mergeCollectionPages.test.js +1 -2
  134. package/dist/utils/Component/addShowWhen.js +4 -10
  135. package/dist/utils/Component/addShowWhen.test.js +1 -2
  136. package/dist/utils/Component/applyToComponentTree.js +4 -18
  137. package/dist/utils/Component/applyToComponentTree.test.js +4 -8
  138. package/dist/utils/Component/cleanAttributes.js +1 -8
  139. package/dist/utils/Component/cleanAttributes.test.js +15 -16
  140. package/dist/utils/Component/elevateNestedComponents.js +0 -6
  141. package/dist/utils/Component/elevateNestedComponents.test.js +0 -2
  142. package/dist/utils/Component/getComponent.js +13 -86
  143. package/dist/utils/Component/getComponentTests/getComponent.autocomplete.test.js +6 -10
  144. package/dist/utils/Component/getComponentTests/getComponent.calculation.test.js +33 -51
  145. package/dist/utils/Component/getComponentTests/getComponent.checkboxes.test.js +8 -35
  146. package/dist/utils/Component/getComponentTests/getComponent.date.test.js +12 -29
  147. package/dist/utils/Component/getComponentTests/getComponent.details.test.js +4 -10
  148. package/dist/utils/Component/getComponentTests/getComponent.email.test.js +6 -23
  149. package/dist/utils/Component/getComponentTests/getComponent.file.test.js +6 -24
  150. package/dist/utils/Component/getComponentTests/getComponent.heading.test.js +3 -7
  151. package/dist/utils/Component/getComponentTests/getComponent.html.test.js +4 -10
  152. package/dist/utils/Component/getComponentTests/getComponent.insetText.test.js +3 -7
  153. package/dist/utils/Component/getComponentTests/getComponent.list.test.js +4 -10
  154. package/dist/utils/Component/getComponentTests/getComponent.multifile.test.js +5 -22
  155. package/dist/utils/Component/getComponentTests/getComponent.nested.test.js +156 -175
  156. package/dist/utils/Component/getComponentTests/getComponent.paragraph.test.js +4 -10
  157. package/dist/utils/Component/getComponentTests/getComponent.phoneNumber.test.js +6 -23
  158. package/dist/utils/Component/getComponentTests/getComponent.radios.test.js +8 -35
  159. package/dist/utils/Component/getComponentTests/getComponent.select.test.js +6 -23
  160. package/dist/utils/Component/getComponentTests/getComponent.text.test.js +6 -23
  161. package/dist/utils/Component/getComponentTests/getComponent.textArea.test.js +10 -34
  162. package/dist/utils/Component/getComponentTests/getComponent.time.test.js +12 -31
  163. package/dist/utils/Component/getComponentTests/getComponent.unknown.test.js +1 -2
  164. package/dist/utils/Component/getComponentTests/getComponent.warningText.test.js +3 -7
  165. package/dist/utils/Component/getDefaultValue.js +4 -8
  166. package/dist/utils/Component/getDefaultValue.test.js +0 -3
  167. package/dist/utils/Component/index.js +0 -10
  168. package/dist/utils/Component/isEditable.js +1 -4
  169. package/dist/utils/Component/isEditable.test.js +1 -5
  170. package/dist/utils/Component/optionIsSelected.js +22 -0
  171. package/dist/utils/Component/optionIsSelected.test.js +42 -0
  172. package/dist/utils/Component/setupContainerComponentsPath.js +4 -9
  173. package/dist/utils/Component/setupContainerComponentsPath.test.js +0 -3
  174. package/dist/utils/Component/showComponent.js +1 -8
  175. package/dist/utils/Component/showComponent.test.js +1 -2
  176. package/dist/utils/Component/wrapInFormGroup.js +0 -7
  177. package/dist/utils/Condition/index.js +0 -5
  178. package/dist/utils/Condition/meetsAllConditions.js +0 -9
  179. package/dist/utils/Condition/meetsAllConditions.test.js +1 -2
  180. package/dist/utils/Condition/meetsCondition.js +9 -34
  181. package/dist/utils/Condition/meetsCondition.test.js +21 -14
  182. package/dist/utils/Condition/meetsOneCondition.js +1 -9
  183. package/dist/utils/Condition/meetsOneCondition.test.js +1 -2
  184. package/dist/utils/Condition/setupConditions.js +4 -13
  185. package/dist/utils/Condition/setupConditions.test.js +0 -2
  186. package/dist/utils/Container/getEditableComponents.js +0 -7
  187. package/dist/utils/Container/getEditableComponents.test.js +1 -12
  188. package/dist/utils/Container/index.js +0 -5
  189. package/dist/utils/Container/setupNesting.js +4 -12
  190. package/dist/utils/Container/setupNesting.test.js +4 -10
  191. package/dist/utils/Container/showContainer.js +9 -18
  192. package/dist/utils/Container/showContainer.test.js +1 -2
  193. package/dist/utils/Data/applyFormula.js +6 -29
  194. package/dist/utils/Data/applyFormula.test.js +1 -2
  195. package/dist/utils/Data/getAutocompleteSource.js +1 -5
  196. package/dist/utils/Data/getAutocompleteSource.test.js +1 -2
  197. package/dist/utils/Data/getDataPath.js +3 -17
  198. package/dist/utils/Data/getDataPath.test.js +0 -4
  199. package/dist/utils/Data/getOptions.js +4 -14
  200. package/dist/utils/Data/getOptions.test.js +1 -2
  201. package/dist/utils/Data/getSourceData.js +6 -21
  202. package/dist/utils/Data/getSourceData.test.js +4 -6
  203. package/dist/utils/Data/index.js +1 -11
  204. package/dist/utils/Data/refDataToOptions.js +5 -13
  205. package/dist/utils/Data/refDataToOptions.test.js +1 -2
  206. package/dist/utils/Data/setDataItem.js +0 -5
  207. package/dist/utils/Data/setDataItem.test.js +0 -2
  208. package/dist/utils/Data/setupFormData.js +6 -25
  209. package/dist/utils/Data/setupFormData.test.js +8 -11
  210. package/dist/utils/Data/setupRefDataUrlForComponent.js +4 -15
  211. package/dist/utils/Data/setupRefDataUrlForComponent.test.js +1 -3
  212. package/dist/utils/FormPage/applyConditionalProperties.js +4 -11
  213. package/dist/utils/FormPage/applyConditionalProperties.test.js +4 -6
  214. package/dist/utils/FormPage/getFormPage.js +4 -16
  215. package/dist/utils/FormPage/getFormPage.test.js +10 -9
  216. package/dist/utils/FormPage/getFormPages.js +4 -9
  217. package/dist/utils/FormPage/getFormPages.test.js +6 -7
  218. package/dist/utils/FormPage/getPageActions.js +6 -19
  219. package/dist/utils/FormPage/getPageActions.test.js +1 -3
  220. package/dist/utils/FormPage/getParagraphFromText.js +0 -3
  221. package/dist/utils/FormPage/getParagraphFromText.test.js +1 -3
  222. package/dist/utils/FormPage/index.js +0 -7
  223. package/dist/utils/FormPage/showFormPage.js +9 -18
  224. package/dist/utils/FormPage/showFormPage.test.js +0 -2
  225. package/dist/utils/FormPage/showFormPageCYA.js +0 -5
  226. package/dist/utils/FormPage/showFormPageCYA.test.js +0 -2
  227. package/dist/utils/FormPage/useComponent.js +7 -19
  228. package/dist/utils/FormPage/useComponent.test.js +4 -7
  229. package/dist/utils/Format/formatData.js +0 -5
  230. package/dist/utils/Format/formatData.test.js +1 -2
  231. package/dist/utils/Format/formatDataForComponent.js +1 -6
  232. package/dist/utils/Format/formatDataForComponent.test.js +28 -47
  233. package/dist/utils/Format/formatDataForForm.js +4 -9
  234. package/dist/utils/Format/formatDataForForm.test.js +14 -11
  235. package/dist/utils/Format/formatDataForPage.js +1 -5
  236. package/dist/utils/Format/formatDataForPage.test.js +15 -12
  237. package/dist/utils/Format/index.js +1 -6
  238. package/dist/utils/Hub/getFormHub.js +0 -8
  239. package/dist/utils/Hub/getFormHub.test.js +6 -8
  240. package/dist/utils/Hub/index.js +1 -3
  241. package/dist/utils/Meta/documents/getDocuments.js +1 -4
  242. package/dist/utils/Meta/documents/getDocuments.test.js +4 -10
  243. package/dist/utils/Meta/documents/index.js +1 -5
  244. package/dist/utils/Meta/documents/setDocumentsForField.js +4 -11
  245. package/dist/utils/Meta/documents/setDocumentsForField.test.js +4 -16
  246. package/dist/utils/Meta/index.js +1 -4
  247. package/dist/utils/Operate/checkValueIsTruthy.js +1 -7
  248. package/dist/utils/Operate/checkValueIsTruthy.test.js +0 -2
  249. package/dist/utils/Operate/getFirstOf.js +2 -9
  250. package/dist/utils/Operate/getFirstOf.test.js +0 -2
  251. package/dist/utils/Operate/getIndexOfMatchingValueIn.js +7 -21
  252. package/dist/utils/Operate/getIndexOfMatchingValueIn.test.js +6 -2
  253. package/dist/utils/Operate/index.js +0 -3
  254. package/dist/utils/Operate/persistValueInFormData.js +1 -8
  255. package/dist/utils/Operate/persistValueInFormData.test.js +0 -4
  256. package/dist/utils/Operate/runPageOperations.js +3 -19
  257. package/dist/utils/Operate/runPageOperations.test.js +4 -6
  258. package/dist/utils/Operate/setValueInFormData.js +2 -7
  259. package/dist/utils/Operate/setValueInFormData.test.js +0 -2
  260. package/dist/utils/Operate/shouldRun.js +1 -14
  261. package/dist/utils/Operate/shouldRun.test.js +5 -8
  262. package/dist/utils/Validate/additional/conditionallyRequired.js +0 -3
  263. package/dist/utils/Validate/additional/conditionallyRequired.test.js +0 -2
  264. package/dist/utils/Validate/additional/index.js +1 -22
  265. package/dist/utils/Validate/additional/index.test.js +0 -6
  266. package/dist/utils/Validate/additional/mustBeAfter.js +3 -8
  267. package/dist/utils/Validate/additional/mustBeAfter.test.js +0 -4
  268. package/dist/utils/Validate/additional/mustBeBefore.js +3 -8
  269. package/dist/utils/Validate/additional/mustBeBefore.test.js +0 -4
  270. package/dist/utils/Validate/additional/mustBeEarlierDateTime.js +5 -16
  271. package/dist/utils/Validate/additional/mustBeEarlierDateTime.test.js +4 -8
  272. package/dist/utils/Validate/additional/mustBeGreaterThan.js +0 -3
  273. package/dist/utils/Validate/additional/mustBeGreaterThan.test.js +0 -2
  274. package/dist/utils/Validate/additional/mustBeInTheFuture.js +3 -12
  275. package/dist/utils/Validate/additional/mustBeInTheFuture.test.js +0 -3
  276. package/dist/utils/Validate/additional/mustBeInThePast.js +5 -13
  277. package/dist/utils/Validate/additional/mustBeInThePast.test.js +0 -3
  278. package/dist/utils/Validate/additional/mustBeLessThan.js +0 -3
  279. package/dist/utils/Validate/additional/mustBeLessThan.test.js +0 -2
  280. package/dist/utils/Validate/additional/mustBeLongerThan.js +0 -3
  281. package/dist/utils/Validate/additional/mustBeLongerThan.test.js +0 -2
  282. package/dist/utils/Validate/additional/mustBeNumbersOnly.js +0 -3
  283. package/dist/utils/Validate/additional/mustBeNumbersOnly.test.js +0 -2
  284. package/dist/utils/Validate/additional/mustBeShorterThan.js +0 -3
  285. package/dist/utils/Validate/additional/mustBeShorterThan.test.js +0 -2
  286. package/dist/utils/Validate/additional/mustEnterAtLeastOne.js +0 -5
  287. package/dist/utils/Validate/additional/mustEnterAtLeastOne.test.js +4 -5
  288. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.js +0 -3
  289. package/dist/utils/Validate/additional/mustHaveLessThanDecimalPlaces.test.js +0 -2
  290. package/dist/utils/Validate/additional/mustSelectOnlyOne.js +0 -6
  291. package/dist/utils/Validate/additional/mustSelectOnlyOne.test.js +4 -7
  292. package/dist/utils/Validate/additional/utils.js +10 -26
  293. package/dist/utils/Validate/index.js +1 -11
  294. package/dist/utils/Validate/validateCollection.js +4 -10
  295. package/dist/utils/Validate/validateCollection.test.js +4 -6
  296. package/dist/utils/Validate/validateComponent.js +5 -40
  297. package/dist/utils/Validate/validateComponent.test.js +120 -22
  298. package/dist/utils/Validate/validateContainer.js +4 -14
  299. package/dist/utils/Validate/validateContainer.test.js +4 -10
  300. package/dist/utils/Validate/validateDate.js +6 -38
  301. package/dist/utils/Validate/validateDate.test.js +0 -4
  302. package/dist/utils/Validate/validateEmail.js +1 -8
  303. package/dist/utils/Validate/validateEmail.test.js +5 -4
  304. package/dist/utils/Validate/validateMultifile.js +0 -7
  305. package/dist/utils/Validate/validateMultifile.test.js +5 -6
  306. package/dist/utils/Validate/validatePage.js +4 -16
  307. package/dist/utils/Validate/validatePage.test.js +30 -25
  308. package/dist/utils/Validate/validateRegex.js +0 -10
  309. package/dist/utils/Validate/validateRegex.test.js +5 -4
  310. package/dist/utils/Validate/validateRequired.js +0 -8
  311. package/dist/utils/Validate/validateRequired.test.js +5 -4
  312. package/dist/utils/Validate/validateTextArea.js +0 -8
  313. package/dist/utils/Validate/validateTextArea.test.js +0 -2
  314. package/dist/utils/Validate/validateTime.js +5 -22
  315. package/dist/utils/Validate/validateTime.test.js +0 -2
  316. package/dist/utils/index.js +4 -20
  317. package/package.json +2 -2
@@ -0,0 +1,632 @@
1
+ "use strict";
2
+
3
+ var _models = require("../../models");
4
+ var _utils = _interopRequireDefault(require("../../utils"));
5
+ var _handlers = _interopRequireDefault(require("./handlers"));
6
+ var _helpers = _interopRequireDefault(require("./helpers"));
7
+ var _onPageAction = _interopRequireDefault(require("./onPageAction"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
10
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
12
+ 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; }
13
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
14
+ 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); }
15
+ jest.mock('./handlers', function () {
16
+ return {
17
+ navigateCalls: 0,
18
+ navigate: function navigate() {
19
+ this.navigateCalls++;
20
+ },
21
+ submissionErrorCalls: 0,
22
+ submissionErrorArgs: [],
23
+ submissionError: function submissionError(errors, addErrors) {
24
+ this.submissionErrorCalls++;
25
+ this.submissionErrorArgs.push(errors);
26
+ if (typeof addErrors === 'function') {
27
+ addErrors(errors);
28
+ }
29
+ },
30
+ reset: function reset() {
31
+ this.navigateCalls = 0;
32
+ this.submissionErrorCalls = 0;
33
+ this.submissionErrorArgs = [];
34
+ }
35
+ };
36
+ });
37
+ jest.mock('./helpers', function () {
38
+ return {
39
+ canActionProceedCalls: 0,
40
+ canActionProceedResult: true,
41
+ canActionProceed: function canActionProceed(action, page, validator) {
42
+ this.canActionProceedCalls++;
43
+ if (typeof validator === 'function') {
44
+ validator();
45
+ }
46
+ return this.canActionProceedResult;
47
+ },
48
+ cleanHiddenNestedDataCalls: 0,
49
+ cleanHiddenNestedData: function cleanHiddenNestedData(patch) {
50
+ this.cleanHiddenNestedDataCalls++;
51
+ return patch;
52
+ },
53
+ getNextPageIdCalls: 0,
54
+ getNextPageId: function getNextPageId() {
55
+ this.getNextPageIdCalls++;
56
+ return 'page2';
57
+ },
58
+ getSubmissionStatusCalls: 0,
59
+ getSubmissionStatus: function getSubmissionStatus() {
60
+ this.getSubmissionStatusCalls++;
61
+ return 'Good to go!';
62
+ },
63
+ reset: function reset() {
64
+ this.canActionProceedCalls = 0;
65
+ this.canActionProceedResult = true;
66
+ this.canCYASubmitResult = true;
67
+ this.cleanHiddenNestedDataCalls = 0;
68
+ this.getFormStateCalls = 0;
69
+ this.getSubmissionStatusCalls = 0;
70
+ }
71
+ };
72
+ });
73
+ jest.mock('../../utils', function () {
74
+ return {
75
+ Format: {
76
+ formCalls: 0,
77
+ form: function form(_form, data, eventType) {
78
+ this.formCalls++;
79
+ return data;
80
+ }
81
+ },
82
+ CollectionPage: {
83
+ duplicateActiveEntryCalls: 0,
84
+ duplicateActiveEntryResult: true,
85
+ duplicateActiveEntry: function duplicateActiveEntry() {
86
+ this.duplicateActiveEntryCalls++;
87
+ return this.duplicateActiveEntryResult;
88
+ }
89
+ },
90
+ reset: function reset() {
91
+ this.Format.formCalls = 0;
92
+ this.CollectionPage.duplicateActiveEntryCalls = 0;
93
+ this.duplicateActiveEntryResult = true;
94
+ }
95
+ };
96
+ });
97
+ describe('components.FormRenderer.onPageAction', function () {
98
+ var MOCK_HOOKS = {
99
+ onSubmitCalls: 0,
100
+ onSubmitArgs: [],
101
+ onSubmit: function onSubmit(type, payload, onSuccess, onError, changedFieldName, changedFieldValue) {
102
+ this.onSubmitCalls++;
103
+ this.onSubmitArgs.push({
104
+ type: type,
105
+ payload: payload,
106
+ changedFieldName: changedFieldName,
107
+ changedFieldValue: changedFieldValue
108
+ });
109
+ if (typeof onSuccess === 'function') {
110
+ onSuccess();
111
+ }
112
+ // onError would not normally be called alongside
113
+ // onSuccess, we're just doing it here to make sure
114
+ // the expected function chain is called.
115
+ if (typeof onError === 'function') {
116
+ onError(['an example error']);
117
+ }
118
+ },
119
+ onFormCompleteCalls: 0,
120
+ onFormComplete: function onFormComplete() {
121
+ this.onFormCompleteCalls++;
122
+ },
123
+ onCancelCalls: 0,
124
+ onCancel: function onCancel() {
125
+ this.onCancelCalls++;
126
+ },
127
+ reset: function reset() {
128
+ this.onSubmitCalls = 0;
129
+ this.onSubmitArgs = [];
130
+ this.onFormCompleteCalls = 0;
131
+ this.onCancelCalls = 0;
132
+ }
133
+ };
134
+ var MOCK_VALIDATE = {
135
+ pageCalls: 0,
136
+ page: function page() {
137
+ MOCK_VALIDATE.pageCalls++;
138
+ },
139
+ reset: function reset() {
140
+ this.pageCalls = 0;
141
+ }
142
+ };
143
+ var setPagePointCalls = 0;
144
+ var setPagePointArgs = [];
145
+ var mockSetPagePoint = function mockSetPagePoint(point) {
146
+ setPagePointCalls++;
147
+ setPagePointArgs.push(point);
148
+ };
149
+ var setDataCalls = 0;
150
+ var setDataArgs = [];
151
+ var mockSetData = function mockSetData(data) {
152
+ setDataCalls++;
153
+ setDataArgs.push(data);
154
+ };
155
+ var onPageChangeCalls = 0;
156
+ var onPageChangeArgs = [];
157
+ var mockOnPageChange = function mockOnPageChange(pageId) {
158
+ onPageChangeCalls++;
159
+ onPageChangeArgs.push(pageId);
160
+ };
161
+ var addErrorsArgs = [];
162
+ var mockAddErrors = function mockAddErrors(errors) {
163
+ addErrorsArgs.push(errors);
164
+ };
165
+ var setSubmittedArgs = [];
166
+ var mockSetSubmitted = function mockSetSubmitted(newSubmitted) {
167
+ setSubmittedArgs.push(newSubmitted);
168
+ };
169
+ var COMPONENTS = [{
170
+ id: 'alpha',
171
+ fieldId: 'alpha'
172
+ }, {
173
+ id: 'bravo',
174
+ fieldId: 'bravo'
175
+ }, {
176
+ id: 'charlie',
177
+ fieldId: 'charlie'
178
+ }, {
179
+ id: 'delta',
180
+ fieldId: 'delta'
181
+ }];
182
+ var PAGES = [{
183
+ id: 'page1',
184
+ components: [_objectSpread({}, COMPONENTS[0]), _objectSpread({}, COMPONENTS[1])]
185
+ }, {
186
+ id: 'page2',
187
+ components: [_objectSpread({}, COMPONENTS[2]), _objectSpread({}, COMPONENTS[3])]
188
+ }];
189
+ var CURRENT_TASK = {
190
+ name: 'testTask',
191
+ fullPages: PAGES
192
+ };
193
+ var ARGS = {
194
+ action: {
195
+ type: _models.PageAction.TYPES.NAVIGATE
196
+ },
197
+ patch: null,
198
+ patchLabel: {},
199
+ hooks: MOCK_HOOKS,
200
+ data: {},
201
+ formState: {
202
+ page: {
203
+ formData: {}
204
+ }
205
+ },
206
+ validate: MOCK_VALIDATE,
207
+ onPageChange: mockOnPageChange,
208
+ type: _models.FormTypes.FORM_WITH_TASK,
209
+ pages: PAGES,
210
+ components: COMPONENTS,
211
+ pageId: 'alpha',
212
+ setPagePoint: mockSetPagePoint,
213
+ currentTask: CURRENT_TASK,
214
+ setData: mockSetData,
215
+ hubDetails: {},
216
+ setSubmitted: mockSetSubmitted,
217
+ addErrors: mockAddErrors
218
+ };
219
+ beforeEach(function () {
220
+ _handlers.default.reset();
221
+ _helpers.default.reset();
222
+ _utils.default.reset();
223
+ MOCK_HOOKS.reset();
224
+ MOCK_VALIDATE.reset();
225
+ setPagePointCalls = 0;
226
+ setPagePointArgs = [];
227
+ setDataCalls = 0;
228
+ setDataArgs = [];
229
+ onPageChangeCalls = 0;
230
+ onPageChangeArgs = [];
231
+ addErrorsArgs = [];
232
+ setSubmittedArgs = [];
233
+ });
234
+ var preActionChecks = function preActionChecks() {
235
+ expect(_helpers.default.canActionProceedCalls).toEqual(1);
236
+ expect(MOCK_VALIDATE.pageCalls).toEqual(1);
237
+ expect(_helpers.default.cleanHiddenNestedDataCalls).toEqual(1);
238
+ };
239
+ var postActionChecks = function postActionChecks(argsUsed) {
240
+ expect(_utils.default.Format.formCalls).toEqual(1);
241
+ expect(_helpers.default.getSubmissionStatusCalls).toEqual(1);
242
+ // setData is always called once in the error callback
243
+ // for the onSubmit hook. It's called an extra time prior
244
+ // to this if patch is valid.
245
+ if (argsUsed.patch) {
246
+ expect(setDataCalls).toEqual(2);
247
+ var dataUsed = _objectSpread(_objectSpread(_objectSpread({}, argsUsed.data), argsUsed.patch), argsUsed.formState.page.formData);
248
+ var submissionData = _utils.default.Format.form(null, dataUsed, null);
249
+ submissionData.formStatus = _helpers.default.getSubmissionStatus();
250
+ expect(setDataArgs[0]).toEqual(submissionData);
251
+ } else {
252
+ expect(setDataCalls).toEqual(1);
253
+ }
254
+ expect(MOCK_HOOKS.onSubmitCalls).toEqual(1);
255
+ if (argsUsed.type === _models.FormTypes.HUB && Object.keys(argsUsed.patchLabel).length > 0) {
256
+ var firstKey = Object.keys(argsUsed.patchLabel)[0];
257
+ expect(MOCK_HOOKS.onSubmitArgs[0]).toMatchObject({
258
+ changedFieldName: firstKey,
259
+ changedFieldValue: argsUsed.patchLabel[firstKey]
260
+ });
261
+ }
262
+
263
+ // Both the success and error paths of the onSubmit hook are tested
264
+ // together to make sure the correct function chains are called for
265
+ // each.
266
+
267
+ // The success path is tested per-action as it can differ slightly.
268
+
269
+ // Testing the error path.
270
+ expect(_handlers.default.submissionErrorCalls).toEqual(1);
271
+ expect(setDataArgs[setDataCalls - 1]).toEqual(argsUsed.data); // Data is reset in the case of an error.
272
+ };
273
+
274
+ it("should handle the ".concat(_models.PageAction.TYPES.CANCEL, " Page Action type"), function () {
275
+ var ACTION = {
276
+ type: _models.PageAction.TYPES.CANCEL
277
+ };
278
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
279
+ action: ACTION
280
+ });
281
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
282
+ expect(MOCK_HOOKS.onCancelCalls).toEqual(1);
283
+ // Shouldn't get to the point of validation if
284
+ // action is a cancel action.
285
+ expect(_helpers.default.canActionProceedCalls).toEqual(0);
286
+ expect(MOCK_VALIDATE.pageCalls).toEqual(0);
287
+ });
288
+ it("should handle the ".concat(_models.PageAction.TYPES.NAVIGATE, " Page Action type"), function () {
289
+ var ACTION = {
290
+ type: _models.PageAction.TYPES.NAVIGATE
291
+ };
292
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
293
+ action: ACTION
294
+ });
295
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
296
+ preActionChecks();
297
+ expect(_handlers.default.navigateCalls).toEqual(1);
298
+ expect(MOCK_HOOKS.onSubmitCalls).toEqual(0);
299
+ // Not doing the usual post-action checks here
300
+ // as a navigate action should stop at calling
301
+ // hooks.navigate.
302
+ });
303
+
304
+ it("should handle the ".concat(_models.PageAction.TYPES.SUBMIT, " Page Action type"), function () {
305
+ var ACTION = {
306
+ type: _models.PageAction.TYPES.SUBMIT
307
+ };
308
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
309
+ action: ACTION
310
+ });
311
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
312
+ preActionChecks();
313
+ expect(setPagePointCalls).toEqual(1);
314
+ expect(setPagePointArgs[0]).toEqual('submit');
315
+ postActionChecks(CUSTOM_ARGS);
316
+ });
317
+ it("should handle the ".concat(_models.PageAction.TYPES.SAVE_AND_NAVIGATE, " Page Action type"), function () {
318
+ var ACTION = {
319
+ type: _models.PageAction.TYPES.SAVE_AND_NAVIGATE
320
+ };
321
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
322
+ action: ACTION
323
+ });
324
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
325
+ preActionChecks();
326
+ // All the actions does in this case is set a function
327
+ // to be called in the onSuccess callback for the onSubmit hook.
328
+ postActionChecks(CUSTOM_ARGS);
329
+ expect(_handlers.default.navigateCalls).toEqual(1);
330
+ });
331
+ it("should handle the ".concat(_models.PageAction.TYPES.COLLECTION_ADD, " Page Action type"), function () {
332
+ var FORM_STATE = {
333
+ page: {
334
+ formData: {
335
+ 'testCollection': []
336
+ }
337
+ }
338
+ };
339
+ var ACTION = {
340
+ type: _models.PageAction.TYPES.COLLECTION_ADD,
341
+ collection: 'testCollection'
342
+ };
343
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
344
+ action: ACTION,
345
+ formState: FORM_STATE
346
+ });
347
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
348
+ preActionChecks();
349
+ expect(FORM_STATE.page.formData["".concat(ACTION.collection, "ActiveId")]).toBeDefined();
350
+ postActionChecks(CUSTOM_ARGS);
351
+
352
+ // This action type also sets up a call to handlers.navigate
353
+ // that's called as part of the onSubmit hook's onSuccess callback.
354
+ expect(_handlers.default.navigateCalls).toEqual(1);
355
+ });
356
+ describe("should handle the ".concat(_models.PageAction.TYPES.COLLECTION_DUPLICATE, " Page Action type"), function () {
357
+ it("calling handlers.navigate if the duplication was successful", function () {
358
+ var FORM_STATE = {
359
+ page: {
360
+ formData: {
361
+ 'testCollection': []
362
+ }
363
+ }
364
+ };
365
+ var ACTION = {
366
+ type: _models.PageAction.TYPES.COLLECTION_DUPLICATE,
367
+ collection: 'testCollection'
368
+ };
369
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
370
+ action: ACTION,
371
+ formState: FORM_STATE
372
+ });
373
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
374
+ preActionChecks();
375
+ expect(_utils.default.CollectionPage.duplicateActiveEntryCalls).toEqual(1);
376
+ postActionChecks(CUSTOM_ARGS);
377
+
378
+ // This action type also sets up a call to handlers.navigate
379
+ // that's called as part of the onSubmit hook's onSuccess callback.
380
+ expect(_handlers.default.navigateCalls).toEqual(1);
381
+ });
382
+ it("calling onPageChange if the duplication was unsuccessful", function () {
383
+ var FORM_STATE = {
384
+ page: {
385
+ formData: {
386
+ 'testCollection': []
387
+ }
388
+ }
389
+ };
390
+ var ACTION = {
391
+ type: _models.PageAction.TYPES.COLLECTION_DUPLICATE,
392
+ collection: 'testCollection'
393
+ };
394
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
395
+ action: ACTION,
396
+ formState: FORM_STATE
397
+ });
398
+ _utils.default.CollectionPage.duplicateActiveEntryResult = false;
399
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
400
+ preActionChecks();
401
+ expect(_utils.default.CollectionPage.duplicateActiveEntryCalls).toEqual(1);
402
+ postActionChecks(CUSTOM_ARGS);
403
+
404
+ // The handlers.navigate callback shouldn't be set when
405
+ // duplication fails.
406
+ expect(_handlers.default.navigateCalls).toEqual(0);
407
+ // Instead we should be using the default onPageChange setup.
408
+ expect(onPageChangeCalls).toEqual(1);
409
+ });
410
+ });
411
+ describe("should handle the ".concat(_models.PageAction.TYPES.COLLECTION_REMOVE, " Page Action type"), function () {
412
+ it("should store a reference to the removed item if action.recordRemoval is true", function () {
413
+ var FORM_STATE = {
414
+ page: {
415
+ formData: {
416
+ testCollectionActiveId: 'removeMe',
417
+ testCollection: [{
418
+ id: 'removeMe'
419
+ }, {
420
+ id: 'leaveMeAlone'
421
+ }]
422
+ }
423
+ }
424
+ };
425
+ var ACTION = {
426
+ type: _models.PageAction.TYPES.COLLECTION_REMOVE,
427
+ collection: 'testCollection',
428
+ recordRemoval: true
429
+ };
430
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
431
+ action: ACTION,
432
+ formState: FORM_STATE
433
+ });
434
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
435
+ preActionChecks();
436
+ expect(FORM_STATE.page.formData.testCollection).toEqual([{
437
+ id: 'leaveMeAlone'
438
+ }]);
439
+ expect(FORM_STATE.page.formData.testCollectionLastRemoved).toEqual({
440
+ id: 'removeMe'
441
+ });
442
+ postActionChecks(CUSTOM_ARGS);
443
+
444
+ // This action type uses the default onPageChange.
445
+ expect(onPageChangeCalls).toEqual(1);
446
+ });
447
+ it("should not store a reference to the removed item if action.recordRemoval is false", function () {
448
+ var FORM_STATE = {
449
+ page: {
450
+ formData: {
451
+ testCollectionActiveId: 'removeMe',
452
+ testCollection: [{
453
+ id: 'removeMe'
454
+ }, {
455
+ id: 'leaveMeAlone'
456
+ }]
457
+ }
458
+ }
459
+ };
460
+ var ACTION = {
461
+ type: _models.PageAction.TYPES.COLLECTION_REMOVE,
462
+ collection: 'testCollection',
463
+ recordRemoval: false
464
+ };
465
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
466
+ action: ACTION,
467
+ formState: FORM_STATE
468
+ });
469
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
470
+ preActionChecks();
471
+ expect(FORM_STATE.page.formData.testCollection).toEqual([{
472
+ id: 'leaveMeAlone'
473
+ }]);
474
+ expect(FORM_STATE.page.formData.testCollectionLastRemoved).toBeUndefined();
475
+ postActionChecks(CUSTOM_ARGS);
476
+
477
+ // This action type uses the default onPageChange.
478
+ expect(onPageChangeCalls).toEqual(1);
479
+ });
480
+ it("should not store a reference to the removed item if action.recordRemoval is not defined", function () {
481
+ var FORM_STATE = {
482
+ page: {
483
+ formData: {
484
+ testCollectionActiveId: 'removeMe',
485
+ testCollection: [{
486
+ id: 'removeMe'
487
+ }, {
488
+ id: 'leaveMeAlone'
489
+ }]
490
+ }
491
+ }
492
+ };
493
+ var ACTION = {
494
+ type: _models.PageAction.TYPES.COLLECTION_REMOVE,
495
+ collection: 'testCollection'
496
+ };
497
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
498
+ action: ACTION,
499
+ formState: FORM_STATE
500
+ });
501
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
502
+ preActionChecks();
503
+ expect(FORM_STATE.page.formData.testCollection).toEqual([{
504
+ id: 'leaveMeAlone'
505
+ }]);
506
+ expect(FORM_STATE.page.formData.testCollectionLastRemoved).toBeUndefined();
507
+ postActionChecks(CUSTOM_ARGS);
508
+
509
+ // This action type uses the default onPageChange.
510
+ expect(onPageChangeCalls).toEqual(1);
511
+ });
512
+ });
513
+ describe('if validation fails', function () {
514
+ var VALID_ACTIONS = Object.values(_models.PageAction.TYPES).filter(function (a) {
515
+ return a !== _models.PageAction.TYPES.CANCEL;
516
+ });
517
+ VALID_ACTIONS.forEach(function (actionType) {
518
+ it("should not continue for the ".concat(actionType, " action type"), function () {
519
+ var ACTION = {
520
+ type: actionType
521
+ };
522
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
523
+ action: ACTION
524
+ });
525
+ _helpers.default.canActionProceedResult = false;
526
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
527
+ expect(_helpers.default.canActionProceedCalls).toEqual(1);
528
+ expect(MOCK_VALIDATE.pageCalls).toEqual(1);
529
+ // Validation fails so we expect to never reach
530
+ // the point of submission.
531
+ expect(MOCK_HOOKS.onSubmitCalls).toEqual(0);
532
+ });
533
+ });
534
+ });
535
+ describe('adding a field to formData if specified on the action', function () {
536
+ var VALID_ACTIONS = Object.values(_models.PageAction.TYPES).filter(function (a) {
537
+ return a !== _models.PageAction.TYPES.CANCEL && a !== _models.PageAction.TYPES.NAVIGATE;
538
+ });
539
+ VALID_ACTIONS.forEach(function (actionType) {
540
+ it("should work for the ".concat(actionType, " action type"), function () {
541
+ var FORM_STATE = {
542
+ page: {
543
+ formData: {
544
+ testCollection: []
545
+ }
546
+ }
547
+ };
548
+ var ACTION = {
549
+ type: actionType,
550
+ collection: 'testCollection',
551
+ addToFormData: {
552
+ field: 'alpha',
553
+ value: '123'
554
+ }
555
+ };
556
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
557
+ formState: FORM_STATE,
558
+ action: ACTION
559
+ });
560
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
561
+ preActionChecks();
562
+ postActionChecks(CUSTOM_ARGS);
563
+ expect(FORM_STATE.page.formData).toMatchObject({
564
+ alpha: '123'
565
+ });
566
+ });
567
+ });
568
+ it("should work for the ".concat(_models.PageAction.TYPES.NAVIGATE, " action type"), function () {
569
+ var FORM_STATE = {
570
+ page: {
571
+ formData: {
572
+ testCollection: []
573
+ }
574
+ }
575
+ };
576
+ var ACTION = {
577
+ type: _models.PageAction.TYPES.NAVIGATE,
578
+ collection: 'testCollection',
579
+ addToFormData: {
580
+ field: 'alpha',
581
+ value: '123'
582
+ }
583
+ };
584
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
585
+ formState: FORM_STATE,
586
+ action: ACTION
587
+ });
588
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
589
+ preActionChecks();
590
+ // Not doing the usual post-action checks here
591
+ // as a navigate action should stop at calling
592
+ // hooks.navigate.
593
+ expect(FORM_STATE.page.formData).toMatchObject({
594
+ alpha: '123'
595
+ });
596
+ });
597
+ });
598
+ describe('recording patchLabel fields correctly when it is defined', function () {
599
+ var VALID_ACTIONS = Object.values(_models.PageAction.TYPES).filter(function (a) {
600
+ return a !== _models.PageAction.TYPES.CANCEL && a !== _models.PageAction.TYPES.NAVIGATE;
601
+ });
602
+ VALID_ACTIONS.forEach(function (actionType) {
603
+ it("should work for the ".concat(actionType, " action type"), function () {
604
+ var FORM_STATE = {
605
+ page: {
606
+ formData: {
607
+ testCollection: []
608
+ }
609
+ }
610
+ };
611
+ var KEY = 'testField';
612
+ var VALUE = 'testValue';
613
+ var PATCH_LABEL = _defineProperty({}, KEY, VALUE);
614
+ var PATCH = _defineProperty({}, KEY, VALUE);
615
+ var ACTION = {
616
+ type: actionType,
617
+ collection: 'testCollection'
618
+ };
619
+ var CUSTOM_ARGS = _objectSpread(_objectSpread({}, ARGS), {}, {
620
+ action: ACTION,
621
+ formState: FORM_STATE,
622
+ patch: PATCH,
623
+ patchLabel: PATCH_LABEL,
624
+ type: _models.FormTypes.HUB
625
+ });
626
+ _onPageAction.default.apply(void 0, Object.values(CUSTOM_ARGS));
627
+ preActionChecks();
628
+ postActionChecks(CUSTOM_ARGS); // Specific check for patchLabel done in here.
629
+ });
630
+ });
631
+ });
632
+ });
@@ -4,40 +4,26 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.DEFAULT_LABEL = void 0;
7
-
8
7
  var _copReactComponents = require("@ukhomeoffice/cop-react-components");
9
-
10
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
-
12
9
  var _react = _interopRequireDefault(require("react"));
13
-
14
10
  var _models = require("../../models");
15
-
16
11
  var _excluded = ["action", "onAction"];
17
-
18
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
13
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
21
-
22
14
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
-
24
15
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
25
-
26
16
  var DEFAULT_LABEL = 'Continue';
27
17
  exports.DEFAULT_LABEL = DEFAULT_LABEL;
28
-
29
18
  var ActionButton = function ActionButton(_ref) {
30
19
  var _action = _ref.action,
31
- onAction = _ref.onAction,
32
- attrs = _objectWithoutProperties(_ref, _excluded);
33
-
20
+ onAction = _ref.onAction,
21
+ attrs = _objectWithoutProperties(_ref, _excluded);
34
22
  var action = typeof _action === 'string' ? _models.PageAction.DEFAULTS[_action] : _action;
35
23
  var actionLabel = _models.PageAction.DEFAULTS[_action.type];
36
-
37
24
  if (!action) {
38
25
  return null;
39
26
  }
40
-
41
27
  return /*#__PURE__*/_react.default.createElement(_copReactComponents.Button, _extends({}, attrs, {
42
28
  className: action.className,
43
29
  classModifiers: action.classModifiers,
@@ -47,7 +33,6 @@ var ActionButton = function ActionButton(_ref) {
47
33
  }
48
34
  }), action.label || (actionLabel === null || actionLabel === void 0 ? void 0 : actionLabel.label) || DEFAULT_LABEL);
49
35
  };
50
-
51
36
  ActionButton.propTypes = {
52
37
  action: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]).isRequired,
53
38
  onAction: _propTypes.default.func.isRequired