@defra/forms-engine-plugin 4.7.2-alpha → 4.7.3

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 (402) hide show
  1. package/.server/client/javascripts/geospatial-map.d.ts +6 -6
  2. package/.server/client/javascripts/geospatial-map.js +3 -3
  3. package/.server/client/javascripts/location-map.d.ts +1 -1
  4. package/.server/client/javascripts/location-map.js +1 -1
  5. package/.server/client/javascripts/map.d.ts +1 -1
  6. package/.server/client/javascripts/map.js +1 -1
  7. package/.server/client/javascripts/shared.d.ts +7 -7
  8. package/.server/server/index.d.ts +1 -1
  9. package/.server/server/plugins/crumb.d.ts +1 -1
  10. package/.server/server/plugins/engine/beta/form-context.d.ts +6 -6
  11. package/.server/server/plugins/engine/components/AutocompleteField.d.ts +4 -4
  12. package/.server/server/plugins/engine/components/CheckboxesField.d.ts +2 -2
  13. package/.server/server/plugins/engine/components/CheckboxesField.js +2 -2
  14. package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
  15. package/.server/server/plugins/engine/components/ComponentBase.d.ts +5 -5
  16. package/.server/server/plugins/engine/components/ComponentCollection.d.ts +8 -8
  17. package/.server/server/plugins/engine/components/DatePartsField.d.ts +11 -11
  18. package/.server/server/plugins/engine/components/DeclarationField.d.ts +3 -3
  19. package/.server/server/plugins/engine/components/Details.d.ts +1 -1
  20. package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +22 -22
  21. package/.server/server/plugins/engine/components/EmailAddressField.d.ts +4 -4
  22. package/.server/server/plugins/engine/components/FileUploadField.d.ts +3 -3
  23. package/.server/server/plugins/engine/components/FormComponent.d.ts +10 -10
  24. package/.server/server/plugins/engine/components/GeospatialField.d.ts +6 -6
  25. package/.server/server/plugins/engine/components/HiddenField.d.ts +2 -2
  26. package/.server/server/plugins/engine/components/Html.d.ts +1 -1
  27. package/.server/server/plugins/engine/components/InsetText.d.ts +1 -1
  28. package/.server/server/plugins/engine/components/LatLongField.d.ts +22 -22
  29. package/.server/server/plugins/engine/components/List.d.ts +8 -8
  30. package/.server/server/plugins/engine/components/ListFormComponent.d.ts +10 -10
  31. package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +6 -6
  32. package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +14 -14
  33. package/.server/server/plugins/engine/components/Markdown.d.ts +1 -1
  34. package/.server/server/plugins/engine/components/MonthYearField.d.ts +11 -11
  35. package/.server/server/plugins/engine/components/MultilineTextField.d.ts +5 -5
  36. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +1 -1
  37. package/.server/server/plugins/engine/components/NumberField.d.ts +3 -3
  38. package/.server/server/plugins/engine/components/OsGridRefField.d.ts +1 -1
  39. package/.server/server/plugins/engine/components/PaymentField.d.ts +12 -12
  40. package/.server/server/plugins/engine/components/RadiosField.d.ts +1 -1
  41. package/.server/server/plugins/engine/components/SelectField.d.ts +4 -4
  42. package/.server/server/plugins/engine/components/SelectionControlField.d.ts +10 -10
  43. package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +4 -4
  44. package/.server/server/plugins/engine/components/TextField.d.ts +2 -2
  45. package/.server/server/plugins/engine/components/UkAddressField.d.ts +11 -11
  46. package/.server/server/plugins/engine/components/YesNoField.d.ts +2 -2
  47. package/.server/server/plugins/engine/components/helpers/__stubs__/geospatial.d.ts +1 -1
  48. package/.server/server/plugins/engine/components/helpers/components.d.ts +5 -5
  49. package/.server/server/plugins/engine/components/helpers/geospatial.d.ts +1 -1
  50. package/.server/server/plugins/engine/components/index.d.ts +27 -27
  51. package/.server/server/plugins/engine/components/types.d.ts +1 -1
  52. package/.server/server/plugins/engine/configureEnginePlugin.d.ts +4 -4
  53. package/.server/server/plugins/engine/date-helper.d.ts +1 -1
  54. package/.server/server/plugins/engine/helpers.d.ts +8 -8
  55. package/.server/server/plugins/engine/index.d.ts +5 -5
  56. package/.server/server/plugins/engine/models/FormModel.d.ts +6 -6
  57. package/.server/server/plugins/engine/models/SummaryViewModel.d.ts +6 -6
  58. package/.server/server/plugins/engine/models/index.d.ts +2 -2
  59. package/.server/server/plugins/engine/models/types.d.ts +4 -4
  60. package/.server/server/plugins/engine/options.d.ts +1 -1
  61. package/.server/server/plugins/engine/options.js +1 -1
  62. package/.server/server/plugins/engine/options.test.js +1 -1
  63. package/.server/server/plugins/engine/outputFormatters/adapter/v1.d.ts +4 -4
  64. package/.server/server/plugins/engine/outputFormatters/human/v1.d.ts +4 -4
  65. package/.server/server/plugins/engine/outputFormatters/index.d.ts +5 -5
  66. package/.server/server/plugins/engine/outputFormatters/machine/v1.d.ts +4 -4
  67. package/.server/server/plugins/engine/outputFormatters/machine/v2.d.ts +4 -4
  68. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +8 -8
  69. package/.server/server/plugins/engine/pageControllers/PageController.d.ts +6 -6
  70. package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +8 -8
  71. package/.server/server/plugins/engine/pageControllers/RepeatPageController.d.ts +5 -5
  72. package/.server/server/plugins/engine/pageControllers/StartPageController.d.ts +4 -4
  73. package/.server/server/plugins/engine/pageControllers/StatusPageController.d.ts +4 -4
  74. package/.server/server/plugins/engine/pageControllers/SummaryPageController.d.ts +5 -5
  75. package/.server/server/plugins/engine/pageControllers/TerminalPageController.d.ts +3 -3
  76. package/.server/server/plugins/engine/pageControllers/__stubs__/request.d.ts +2 -2
  77. package/.server/server/plugins/engine/pageControllers/errors.d.ts +1 -1
  78. package/.server/server/plugins/engine/pageControllers/helpers/pages.d.ts +2 -2
  79. package/.server/server/plugins/engine/pageControllers/helpers/state.d.ts +5 -5
  80. package/.server/server/plugins/engine/pageControllers/helpers/state.js +1 -1
  81. package/.server/server/plugins/engine/pageControllers/helpers/state.js.map +1 -1
  82. package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +1 -1
  83. package/.server/server/plugins/engine/pageControllers/index.d.ts +7 -7
  84. package/.server/server/plugins/engine/plugin.d.ts +1 -1
  85. package/.server/server/plugins/engine/routes/file-upload.d.ts +1 -1
  86. package/.server/server/plugins/engine/routes/index.d.ts +3 -3
  87. package/.server/server/plugins/engine/routes/payment-helper.d.ts +3 -3
  88. package/.server/server/plugins/engine/routes/payment-helper.js +2 -2
  89. package/.server/server/plugins/engine/routes/payment.js +5 -5
  90. package/.server/server/plugins/engine/routes/payment.test.js +1 -1
  91. package/.server/server/plugins/engine/routes/questions.d.ts +2 -2
  92. package/.server/server/plugins/engine/routes/repeaters/item-delete.d.ts +2 -2
  93. package/.server/server/plugins/engine/routes/repeaters/summary.d.ts +2 -2
  94. package/.server/server/plugins/engine/services/index.d.ts +3 -3
  95. package/.server/server/plugins/engine/services/notifyService.d.ts +4 -4
  96. package/.server/server/plugins/engine/services/uploadService.d.ts +2 -2
  97. package/.server/server/plugins/engine/services/uploadService.js +1 -1
  98. package/.server/server/plugins/engine/types/index.d.ts +10 -10
  99. package/.server/server/plugins/engine/types/schema.d.ts +1 -1
  100. package/.server/server/plugins/engine/types.d.ts +25 -16
  101. package/.server/server/plugins/engine/types.js.map +1 -1
  102. package/.server/server/plugins/engine/validationHelpers.d.ts +2 -2
  103. package/.server/server/plugins/engine/vision.d.ts +1 -1
  104. package/.server/server/plugins/map/index.d.ts +1 -1
  105. package/.server/server/plugins/map/index.js +1 -1
  106. package/.server/server/plugins/map/routes/get-os-token.d.ts +11 -1
  107. package/.server/server/plugins/map/routes/get-os-token.js +12 -2
  108. package/.server/server/plugins/map/routes/get-os-token.js.map +1 -1
  109. package/.server/server/plugins/map/routes/index.d.ts +4 -4
  110. package/.server/server/plugins/map/routes/index.js +3 -2
  111. package/.server/server/plugins/map/routes/index.js.map +1 -1
  112. package/.server/server/plugins/map/service.d.ts +1 -1
  113. package/.server/server/plugins/map/service.js +5 -2
  114. package/.server/server/plugins/map/service.js.map +1 -1
  115. package/.server/server/plugins/map/test/__stubs__/find.d.ts +1 -1
  116. package/.server/server/plugins/map/test/__stubs__/find.js +1 -1
  117. package/.server/server/plugins/nunjucks/context.d.ts +2 -2
  118. package/.server/server/plugins/nunjucks/context.js +2 -2
  119. package/.server/server/plugins/nunjucks/context.test.js +1 -1
  120. package/.server/server/plugins/nunjucks/enviroment.test.js +1 -1
  121. package/.server/server/plugins/nunjucks/environment.d.ts +3 -3
  122. package/.server/server/plugins/nunjucks/environment.js +3 -3
  123. package/.server/server/plugins/nunjucks/filters/answer.d.ts +1 -1
  124. package/.server/server/plugins/nunjucks/filters/answer.js +2 -2
  125. package/.server/server/plugins/nunjucks/filters/answer.test.js +1 -1
  126. package/.server/server/plugins/nunjucks/filters/evaluate.d.ts +1 -1
  127. package/.server/server/plugins/nunjucks/filters/evaluate.js +1 -1
  128. package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
  129. package/.server/server/plugins/nunjucks/filters/field.js +1 -1
  130. package/.server/server/plugins/nunjucks/filters/field.test.js +1 -1
  131. package/.server/server/plugins/nunjucks/filters/href.d.ts +1 -1
  132. package/.server/server/plugins/nunjucks/filters/href.js +1 -1
  133. package/.server/server/plugins/nunjucks/filters/href.test.js +1 -1
  134. package/.server/server/plugins/nunjucks/filters/index.d.ts +8 -8
  135. package/.server/server/plugins/nunjucks/filters/page.d.ts +1 -1
  136. package/.server/server/plugins/nunjucks/filters/page.js +1 -1
  137. package/.server/server/plugins/nunjucks/filters/page.test.js +1 -1
  138. package/.server/server/plugins/nunjucks/index.d.ts +3 -3
  139. package/.server/server/plugins/nunjucks/render.d.ts +2 -2
  140. package/.server/server/plugins/nunjucks/render.js +1 -1
  141. package/.server/server/plugins/nunjucks/types.d.ts +1 -1
  142. package/.server/server/plugins/nunjucks/types.js +1 -1
  143. package/.server/server/plugins/payment/helper.d.ts +2 -2
  144. package/.server/server/plugins/payment/helper.js +1 -1
  145. package/.server/server/plugins/payment/service.d.ts +3 -3
  146. package/.server/server/plugins/payment/service.js +1 -1
  147. package/.server/server/plugins/postcode-lookup/index.d.ts +1 -1
  148. package/.server/server/plugins/postcode-lookup/index.js +1 -1
  149. package/.server/server/plugins/postcode-lookup/models/index.d.ts +6 -6
  150. package/.server/server/plugins/postcode-lookup/models/index.js +1 -1
  151. package/.server/server/plugins/postcode-lookup/routes/index.d.ts +6 -6
  152. package/.server/server/plugins/postcode-lookup/routes/index.js +15 -15
  153. package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
  154. package/.server/server/plugins/postcode-lookup/service.d.ts +1 -1
  155. package/.server/server/plugins/postcode-lookup/service.js +5 -2
  156. package/.server/server/plugins/postcode-lookup/service.js.map +1 -1
  157. package/.server/server/plugins/postcode-lookup/types.js +1 -1
  158. package/.server/server/routes/index.d.ts +2 -2
  159. package/.server/server/routes/types.d.ts +1 -1
  160. package/.server/server/schemas/index.d.ts +2 -2
  161. package/.server/server/services/cacheService.d.ts +8 -8
  162. package/.server/server/services/cacheService.js +2 -5
  163. package/.server/server/services/cacheService.js.map +1 -1
  164. package/.server/server/services/httpService.test.js +1 -1
  165. package/.server/server/services/index.d.ts +1 -1
  166. package/.server/server/types.d.ts +7 -7
  167. package/.server/server/utils/file-form-service.d.ts +2 -2
  168. package/.server/server/utils/file-form-service.js +1 -1
  169. package/package.json +8 -4
  170. package/src/client/javascripts/application.js +1 -1
  171. package/src/client/javascripts/geospatial-map.js +4 -4
  172. package/src/client/javascripts/location-map.js +2 -2
  173. package/src/client/javascripts/map.js +3 -3
  174. package/src/client/javascripts/shared.js +7 -7
  175. package/src/index.ts +3 -3
  176. package/src/server/common/helpers/logging/logger-options.ts +1 -1
  177. package/src/server/common/helpers/logging/logger.ts +1 -1
  178. package/src/server/common/helpers/logging/request-logger.ts +1 -1
  179. package/src/server/common/helpers/logging/request-tracing.js +1 -1
  180. package/src/server/common/helpers/redis-client.js +2 -2
  181. package/src/server/index.ts +13 -13
  182. package/src/server/plugins/crumb.ts +2 -2
  183. package/src/server/plugins/engine/beta/form-context.ts +9 -9
  184. package/src/server/plugins/engine/components/AutocompleteField.ts +3 -3
  185. package/src/server/plugins/engine/components/CheckboxesField.ts +7 -8
  186. package/src/server/plugins/engine/components/ComponentBase.ts +5 -5
  187. package/src/server/plugins/engine/components/ComponentCollection.ts +9 -9
  188. package/src/server/plugins/engine/components/DatePartsField.ts +8 -8
  189. package/src/server/plugins/engine/components/DeclarationField.ts +3 -3
  190. package/src/server/plugins/engine/components/Details.ts +1 -1
  191. package/src/server/plugins/engine/components/EastingNorthingField.ts +9 -9
  192. package/src/server/plugins/engine/components/EmailAddressField.ts +3 -3
  193. package/src/server/plugins/engine/components/FileUploadField.ts +6 -6
  194. package/src/server/plugins/engine/components/FormComponent.ts +4 -4
  195. package/src/server/plugins/engine/components/GeospatialField.ts +5 -5
  196. package/src/server/plugins/engine/components/HiddenField.ts +4 -4
  197. package/src/server/plugins/engine/components/Html.ts +1 -1
  198. package/src/server/plugins/engine/components/InsetText.ts +1 -1
  199. package/src/server/plugins/engine/components/LatLongField.ts +9 -9
  200. package/src/server/plugins/engine/components/List.ts +2 -2
  201. package/src/server/plugins/engine/components/ListFormComponent.ts +4 -4
  202. package/src/server/plugins/engine/components/LocationFieldBase.ts +5 -5
  203. package/src/server/plugins/engine/components/LocationFieldHelpers.ts +5 -5
  204. package/src/server/plugins/engine/components/Markdown.ts +1 -1
  205. package/src/server/plugins/engine/components/MonthYearField.ts +8 -8
  206. package/src/server/plugins/engine/components/MultilineTextField.ts +4 -4
  207. package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +2 -2
  208. package/src/server/plugins/engine/components/NumberField.ts +3 -3
  209. package/src/server/plugins/engine/components/OsGridRefField.ts +2 -2
  210. package/src/server/plugins/engine/components/PaymentField.ts +8 -8
  211. package/src/server/plugins/engine/components/RadiosField.ts +1 -1
  212. package/src/server/plugins/engine/components/SelectField.ts +2 -2
  213. package/src/server/plugins/engine/components/SelectionControlField.ts +4 -4
  214. package/src/server/plugins/engine/components/TelephoneNumberField.ts +4 -4
  215. package/src/server/plugins/engine/components/TextField.ts +3 -3
  216. package/src/server/plugins/engine/components/UkAddressField.ts +7 -7
  217. package/src/server/plugins/engine/components/YesNoField.ts +5 -5
  218. package/src/server/plugins/engine/components/helpers/__stubs__/geospatial.ts +1 -1
  219. package/src/server/plugins/engine/components/helpers/components.ts +8 -8
  220. package/src/server/plugins/engine/components/helpers/geospatial.ts +1 -1
  221. package/src/server/plugins/engine/components/index.ts +27 -27
  222. package/src/server/plugins/engine/components/types.ts +1 -1
  223. package/src/server/plugins/engine/configureEnginePlugin.ts +10 -10
  224. package/src/server/plugins/engine/date-helper.ts +1 -1
  225. package/src/server/plugins/engine/helpers.ts +8 -8
  226. package/src/server/plugins/engine/index.ts +8 -8
  227. package/src/server/plugins/engine/models/FormModel.ts +15 -15
  228. package/src/server/plugins/engine/models/SummaryViewModel.ts +10 -10
  229. package/src/server/plugins/engine/models/index.ts +2 -2
  230. package/src/server/plugins/engine/models/types.ts +4 -4
  231. package/src/server/plugins/engine/options.js +3 -3
  232. package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +6 -6
  233. package/src/server/plugins/engine/outputFormatters/human/v1.ts +9 -9
  234. package/src/server/plugins/engine/outputFormatters/index.ts +8 -8
  235. package/src/server/plugins/engine/outputFormatters/machine/v1.ts +7 -7
  236. package/src/server/plugins/engine/outputFormatters/machine/v2.ts +6 -6
  237. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +9 -9
  238. package/src/server/plugins/engine/pageControllers/PageController.ts +7 -7
  239. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +13 -13
  240. package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +6 -6
  241. package/src/server/plugins/engine/pageControllers/StartPageController.ts +3 -3
  242. package/src/server/plugins/engine/pageControllers/StatusPageController.ts +5 -5
  243. package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +12 -12
  244. package/src/server/plugins/engine/pageControllers/TerminalPageController.ts +3 -3
  245. package/src/server/plugins/engine/pageControllers/__stubs__/request.ts +3 -3
  246. package/src/server/plugins/engine/pageControllers/__stubs__/server.ts +2 -2
  247. package/src/server/plugins/engine/pageControllers/errors.ts +1 -1
  248. package/src/server/plugins/engine/pageControllers/helpers/pages.ts +2 -2
  249. package/src/server/plugins/engine/pageControllers/helpers/state.ts +9 -9
  250. package/src/server/plugins/engine/pageControllers/helpers/submission.ts +5 -5
  251. package/src/server/plugins/engine/pageControllers/index.ts +7 -7
  252. package/src/server/plugins/engine/pageControllers/validationOptions.ts +1 -1
  253. package/src/server/plugins/engine/plugin.ts +14 -14
  254. package/src/server/plugins/engine/routes/file-upload.ts +2 -2
  255. package/src/server/plugins/engine/routes/index.ts +10 -10
  256. package/src/server/plugins/engine/routes/payment-helper.js +4 -4
  257. package/src/server/plugins/engine/routes/payment.js +9 -9
  258. package/src/server/plugins/engine/routes/questions.ts +10 -10
  259. package/src/server/plugins/engine/routes/repeaters/item-delete.ts +6 -6
  260. package/src/server/plugins/engine/routes/repeaters/summary.ts +5 -5
  261. package/src/server/plugins/engine/services/formSubmissionService.js +2 -2
  262. package/src/server/plugins/engine/services/index.js +3 -3
  263. package/src/server/plugins/engine/services/localFormsService.js +2 -2
  264. package/src/server/plugins/engine/services/notifyService.ts +9 -9
  265. package/src/server/plugins/engine/services/uploadService.js +3 -3
  266. package/src/server/plugins/engine/types/index.ts +10 -10
  267. package/src/server/plugins/engine/types/schema.ts +2 -2
  268. package/src/server/plugins/engine/types.ts +22 -17
  269. package/src/server/plugins/engine/validationHelpers.ts +3 -3
  270. package/src/server/plugins/engine/vision.ts +3 -3
  271. package/src/server/plugins/map/index.js +2 -2
  272. package/src/server/plugins/map/routes/get-os-token.js +15 -3
  273. package/src/server/plugins/map/routes/index.js +7 -5
  274. package/src/server/plugins/map/service.js +7 -4
  275. package/src/server/plugins/map/test/__stubs__/find.js +1 -1
  276. package/src/server/plugins/nunjucks/context.js +5 -5
  277. package/src/server/plugins/nunjucks/environment.js +6 -6
  278. package/src/server/plugins/nunjucks/filters/answer.js +3 -3
  279. package/src/server/plugins/nunjucks/filters/evaluate.js +2 -2
  280. package/src/server/plugins/nunjucks/filters/field.js +1 -1
  281. package/src/server/plugins/nunjucks/filters/href.js +2 -2
  282. package/src/server/plugins/nunjucks/filters/index.js +8 -8
  283. package/src/server/plugins/nunjucks/filters/page.js +1 -1
  284. package/src/server/plugins/nunjucks/index.js +3 -3
  285. package/src/server/plugins/nunjucks/plugin.js +3 -3
  286. package/src/server/plugins/nunjucks/render.js +2 -2
  287. package/src/server/plugins/nunjucks/types.js +1 -1
  288. package/src/server/plugins/payment/helper.js +2 -2
  289. package/src/server/plugins/payment/service.js +4 -4
  290. package/src/server/plugins/postcode-lookup/index.js +2 -2
  291. package/src/server/plugins/postcode-lookup/models/index.js +3 -3
  292. package/src/server/plugins/postcode-lookup/routes/index.js +24 -14
  293. package/src/server/plugins/postcode-lookup/service.js +7 -4
  294. package/src/server/plugins/postcode-lookup/types.js +1 -1
  295. package/src/server/plugins/session.ts +1 -1
  296. package/src/server/routes/index.ts +2 -2
  297. package/src/server/routes/public.ts +1 -1
  298. package/src/server/routes/types.ts +1 -1
  299. package/src/server/schemas/index.ts +2 -2
  300. package/src/server/secure-context.js +1 -1
  301. package/src/server/services/cacheService.ts +13 -18
  302. package/src/server/services/httpService.ts +1 -1
  303. package/src/server/services/index.ts +1 -1
  304. package/src/server/types.ts +7 -7
  305. package/src/server/utils/notify.ts +2 -2
  306. package/src/server/utils/utils.js +1 -1
  307. package/src/typings/hapi/index.d.ts +4 -4
  308. package/src/typings/joi/index.d.ts +1 -1
  309. package/src/server/common/helpers/logging/logger-options.test.ts +0 -50
  310. package/src/server/index.test.ts +0 -644
  311. package/src/server/plugins/engine/beta/form-context.test.ts +0 -373
  312. package/src/server/plugins/engine/components/AutocompleteField.test.ts +0 -362
  313. package/src/server/plugins/engine/components/CheckboxesField.test.ts +0 -486
  314. package/src/server/plugins/engine/components/DatePartsField.test.ts +0 -927
  315. package/src/server/plugins/engine/components/DeclarationField.test.ts +0 -560
  316. package/src/server/plugins/engine/components/Details.test.ts +0 -49
  317. package/src/server/plugins/engine/components/EastingNorthingField.test.ts +0 -727
  318. package/src/server/plugins/engine/components/EmailAddressField.test.ts +0 -445
  319. package/src/server/plugins/engine/components/FileUploadField.test.ts +0 -1079
  320. package/src/server/plugins/engine/components/GeospatialField.test.ts +0 -380
  321. package/src/server/plugins/engine/components/HiddenField.test.ts +0 -188
  322. package/src/server/plugins/engine/components/Html.test.ts +0 -48
  323. package/src/server/plugins/engine/components/InsetText.test.ts +0 -48
  324. package/src/server/plugins/engine/components/LatLongField.test.ts +0 -898
  325. package/src/server/plugins/engine/components/List.test.ts +0 -79
  326. package/src/server/plugins/engine/components/LocationFieldBase.test.ts +0 -253
  327. package/src/server/plugins/engine/components/LocationFieldHelpers.test.ts +0 -743
  328. package/src/server/plugins/engine/components/Markdown.test.ts +0 -48
  329. package/src/server/plugins/engine/components/MonthYearField.test.ts +0 -617
  330. package/src/server/plugins/engine/components/MultilineTextField.test.ts +0 -647
  331. package/src/server/plugins/engine/components/NationalGridFieldNumberField.test.ts +0 -449
  332. package/src/server/plugins/engine/components/NumberField.test.ts +0 -723
  333. package/src/server/plugins/engine/components/OsGridRefField.test.ts +0 -460
  334. package/src/server/plugins/engine/components/PaymentField.test.ts +0 -745
  335. package/src/server/plugins/engine/components/RadiosField.test.ts +0 -297
  336. package/src/server/plugins/engine/components/SelectField.test.ts +0 -289
  337. package/src/server/plugins/engine/components/TelephoneNumberField.test.ts +0 -384
  338. package/src/server/plugins/engine/components/TextField.test.ts +0 -521
  339. package/src/server/plugins/engine/components/UkAddressField.test.ts +0 -806
  340. package/src/server/plugins/engine/components/YesNoField.test.ts +0 -256
  341. package/src/server/plugins/engine/components/helpers/components.test.ts +0 -399
  342. package/src/server/plugins/engine/components/helpers/geospatial.test.js +0 -55
  343. package/src/server/plugins/engine/components/helpers/helpers.test.ts +0 -219
  344. package/src/server/plugins/engine/date-helper.test.ts +0 -47
  345. package/src/server/plugins/engine/helpers.test.ts +0 -868
  346. package/src/server/plugins/engine/models/FormModel.test.ts +0 -725
  347. package/src/server/plugins/engine/models/SummaryViewModel.test.ts +0 -472
  348. package/src/server/plugins/engine/options.test.js +0 -63
  349. package/src/server/plugins/engine/outputFormatters/adapter/v1.location.test.ts +0 -356
  350. package/src/server/plugins/engine/outputFormatters/adapter/v1.test.ts +0 -871
  351. package/src/server/plugins/engine/outputFormatters/human/v1.payment.test.ts +0 -147
  352. package/src/server/plugins/engine/outputFormatters/human/v1.test.ts +0 -145
  353. package/src/server/plugins/engine/outputFormatters/index.test.ts +0 -17
  354. package/src/server/plugins/engine/outputFormatters/machine/v1.test.ts +0 -268
  355. package/src/server/plugins/engine/outputFormatters/machine/v2.location.test.ts +0 -341
  356. package/src/server/plugins/engine/outputFormatters/machine/v2.payment.test.ts +0 -115
  357. package/src/server/plugins/engine/outputFormatters/machine/v2.test.ts +0 -311
  358. package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +0 -1372
  359. package/src/server/plugins/engine/pageControllers/PageController.test.ts +0 -246
  360. package/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +0 -1686
  361. package/src/server/plugins/engine/pageControllers/RepeatPageController.test.ts +0 -279
  362. package/src/server/plugins/engine/pageControllers/StartPageController.test.ts +0 -32
  363. package/src/server/plugins/engine/pageControllers/StatusPageController.test.ts +0 -32
  364. package/src/server/plugins/engine/pageControllers/SummaryPageController.test.ts +0 -89
  365. package/src/server/plugins/engine/pageControllers/TerminalController.test.ts +0 -37
  366. package/src/server/plugins/engine/pageControllers/errors.test.ts +0 -78
  367. package/src/server/plugins/engine/pageControllers/helpers/helpers.test.ts +0 -182
  368. package/src/server/plugins/engine/pageControllers/helpers/state.test.ts +0 -359
  369. package/src/server/plugins/engine/pageControllers/helpers/submission.test.ts +0 -373
  370. package/src/server/plugins/engine/referenceNumbers.test.ts +0 -74
  371. package/src/server/plugins/engine/routes/index.test.ts +0 -332
  372. package/src/server/plugins/engine/routes/payment-helper.test.js +0 -136
  373. package/src/server/plugins/engine/routes/payment.test.js +0 -180
  374. package/src/server/plugins/engine/routes/questions.test.ts +0 -502
  375. package/src/server/plugins/engine/routes/repeaters/item-delete.test.ts +0 -83
  376. package/src/server/plugins/engine/routes/repeaters/summary.test.ts +0 -75
  377. package/src/server/plugins/engine/services/formsService.test.js +0 -26
  378. package/src/server/plugins/engine/services/notifyService.test.ts +0 -310
  379. package/src/server/plugins/engine/types/schema.test.ts +0 -234
  380. package/src/server/plugins/engine/views/components/service-banner/template.test.js +0 -43
  381. package/src/server/plugins/engine/views/components/tag-env/template.test.js +0 -28
  382. package/src/server/plugins/engine/views/partials/preview-banner.test.js +0 -122
  383. package/src/server/plugins/map/routes/get-os-token.test.js +0 -55
  384. package/src/server/plugins/map/service.test.js +0 -144
  385. package/src/server/plugins/nunjucks/context.test.js +0 -109
  386. package/src/server/plugins/nunjucks/enviroment.test.js +0 -207
  387. package/src/server/plugins/nunjucks/filters/answer.test.js +0 -92
  388. package/src/server/plugins/nunjucks/filters/field.test.js +0 -75
  389. package/src/server/plugins/nunjucks/filters/href.test.js +0 -80
  390. package/src/server/plugins/nunjucks/filters/merge.test.js +0 -15
  391. package/src/server/plugins/nunjucks/filters/page.test.js +0 -65
  392. package/src/server/plugins/payment/helper.test.js +0 -29
  393. package/src/server/plugins/payment/service.test.js +0 -218
  394. package/src/server/plugins/postcode-lookup/service.test.js +0 -177
  395. package/src/server/postcode-lookup.test.ts +0 -64
  396. package/src/server/routes/dummy-api.test.ts +0 -97
  397. package/src/server/services/cacheService.test.ts +0 -308
  398. package/src/server/services/httpService.test.js +0 -491
  399. package/src/server/utils/file-form-service.test.js +0 -127
  400. package/src/server/utils/notify.test.ts +0 -37
  401. package/src/server/utils/secure-context/get-trust-store-certs.test.js +0 -19
  402. package/src/server/utils/utils.test.js +0 -69
@@ -1,745 +0,0 @@
1
- import {
2
- ComponentType,
3
- type FormMetadata,
4
- type PaymentFieldComponent
5
- } from '@defra/forms-model'
6
- import { StatusCodes } from 'http-status-codes'
7
-
8
- import { ComponentCollection } from '~/src/server/plugins/engine/components/ComponentCollection.js'
9
- import { PaymentField } from '~/src/server/plugins/engine/components/PaymentField.js'
10
- import {
11
- getAnswer,
12
- type Field
13
- } from '~/src/server/plugins/engine/components/helpers/components.js'
14
- import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
15
- import { PaymentPreAuthError } from '~/src/server/plugins/engine/pageControllers/errors.js'
16
- import {
17
- type FormContext,
18
- type FormValue,
19
- type PaymentExternalArgs
20
- } from '~/src/server/plugins/engine/types.js'
21
- import {
22
- type FormRequestPayload,
23
- type FormResponseToolkit
24
- } from '~/src/server/routes/types.js'
25
- import { get, post, postJson } from '~/src/server/services/httpService.js'
26
- import { type Services } from '~/src/server/types.js'
27
- import definition from '~/test/form/definitions/blank.js'
28
- import { getFormData, getFormState } from '~/test/helpers/component-helpers.js'
29
-
30
- jest.mock('~/src/server/services/httpService.ts')
31
-
32
- const mockServices = {
33
- formsService: {
34
- getFormSecret: () => 'secret-value'
35
- }
36
- } as unknown as Services
37
-
38
- describe('PaymentField', () => {
39
- let model: FormModel
40
-
41
- beforeEach(() => {
42
- model = new FormModel(definition, {
43
- basePath: 'test'
44
- })
45
- })
46
-
47
- describe('Defaults', () => {
48
- let def: PaymentFieldComponent
49
- let collection: ComponentCollection
50
- let field: Field
51
-
52
- beforeEach(() => {
53
- def = {
54
- title: 'Example payment field',
55
- name: 'myComponent',
56
- type: ComponentType.PaymentField,
57
- options: {
58
- amount: 100,
59
- description: 'Test payment description'
60
- }
61
- } satisfies PaymentFieldComponent
62
-
63
- collection = new ComponentCollection([def], { model })
64
- field = collection.fields[0]
65
- })
66
-
67
- describe('Schema', () => {
68
- it('uses component title as label as default', () => {
69
- const { formSchema } = collection
70
- const { keys } = formSchema.describe()
71
-
72
- expect(keys).toHaveProperty(
73
- 'myComponent',
74
- expect.objectContaining({
75
- flags: expect.objectContaining({
76
- label: 'Example payment field'
77
- })
78
- })
79
- )
80
- })
81
-
82
- it('uses component name as keys', () => {
83
- const { formSchema } = collection
84
- const { keys } = formSchema.describe()
85
-
86
- expect(field.keys).toEqual(['myComponent'])
87
- expect(field.collection).toBeUndefined()
88
-
89
- for (const key of field.keys) {
90
- expect(keys).toHaveProperty(key)
91
- }
92
- })
93
-
94
- it('is required by default', () => {
95
- const { formSchema } = collection
96
- const { keys } = formSchema.describe()
97
-
98
- expect(keys).toHaveProperty(
99
- 'myComponent',
100
- expect.objectContaining({
101
- keys: expect.objectContaining({
102
- amount: expect.objectContaining({
103
- flags: expect.objectContaining({
104
- presence: 'required'
105
- })
106
- })
107
- })
108
- })
109
- )
110
- })
111
-
112
- it('adds errors for empty value', () => {
113
- const payment = {
114
- paymentId: '',
115
- reference: '',
116
- amount: 0,
117
- description: '',
118
- uuid: '',
119
- formId: '',
120
- isLivePayment: false
121
- }
122
- const result = collection.validate(
123
- getFormData(payment as unknown as FormValue)
124
- )
125
-
126
- const errors = result.errors ?? []
127
-
128
- expect(errors[0]).toEqual(
129
- expect.objectContaining({
130
- text: 'Enter myComponent.paymentId'
131
- })
132
- )
133
-
134
- expect(errors[1]).toEqual(
135
- expect.objectContaining({
136
- text: 'Enter myComponent.reference'
137
- })
138
- )
139
-
140
- expect(errors[2]).toEqual(
141
- expect.objectContaining({
142
- text: 'Enter myComponent.description'
143
- })
144
- )
145
-
146
- expect(errors[3]).toEqual(
147
- expect.objectContaining({
148
- text: 'Enter myComponent.uuid'
149
- })
150
- )
151
-
152
- expect(errors[4]).toEqual(
153
- expect.objectContaining({
154
- text: 'Enter myComponent.formId'
155
- })
156
- )
157
-
158
- expect(errors[5]).toEqual(
159
- expect.objectContaining({
160
- text: 'Select myComponent.preAuth'
161
- })
162
- )
163
- })
164
-
165
- it('adds errors for invalid values', () => {
166
- const result1 = collection.validate(getFormData(['invalid']))
167
- const result2 = collection.validate(
168
- // @ts-expect-error - Allow invalid param for test
169
- getFormData({ unknown: 'invalid' })
170
- )
171
-
172
- expect(result1.errors).toBeTruthy()
173
- expect(result2.errors).toBeTruthy()
174
- })
175
- })
176
-
177
- describe('State', () => {
178
- const paymentForState = {
179
- paymentId: 'payment-id',
180
- reference: 'payment-ref',
181
- amount: 150,
182
- description: 'payment description',
183
- uuid: 'ee501106-4ce1-4947-91a7-7cc1a335ccd8',
184
- formId: 'formid',
185
- isLivePayment: false
186
- }
187
- it('returns text from state', () => {
188
- const state1 = getFormState(paymentForState as unknown as FormValue)
189
- const state2 = getFormState(null)
190
-
191
- const answer1 = getAnswer(field, state1)
192
- const answer2 = getAnswer(field, state2)
193
-
194
- expect(answer1).toBe('£150.00 - payment description')
195
- expect(answer2).toBe('')
196
- })
197
- })
198
-
199
- describe('View model', () => {
200
- it('sets Nunjucks component defaults', () => {
201
- const viewModel = field.getViewModel(getFormData(undefined))
202
-
203
- expect(viewModel).toEqual(
204
- expect.objectContaining({
205
- label: { text: def.title },
206
- name: 'myComponent',
207
- id: 'myComponent',
208
- amount: '£100.00',
209
- attributes: {},
210
- description: 'Test payment description'
211
- })
212
- )
213
- })
214
-
215
- it('sets Nunjucks component values', () => {
216
- const paymentForViewModel = {
217
- paymentId: 'payment-id',
218
- reference: 'payment-ref',
219
- uuid: 'ee501106-4ce1-4947-91a7-7cc1a335ccd8',
220
- formId: 'formid',
221
- amount: 100,
222
- description: 'Test payment description',
223
- isLivePayment: false
224
- } as unknown as FormValue
225
- const viewModel = field.getViewModel(getFormData(paymentForViewModel))
226
-
227
- expect(viewModel).toEqual(
228
- expect.objectContaining({
229
- label: { text: def.title },
230
- name: 'myComponent',
231
- id: 'myComponent',
232
- amount: '£100.00',
233
- attributes: {},
234
- description: 'Test payment description'
235
- })
236
- )
237
- })
238
- })
239
-
240
- describe('AllPossibleErrors', () => {
241
- it('should return errors', () => {
242
- const errors = field.getAllPossibleErrors()
243
- expect(errors.baseErrors).not.toBeEmpty()
244
- expect(errors.advancedSettingsErrors).toBeEmpty()
245
- })
246
- })
247
- })
248
-
249
- describe('dispatcher and onSubmit', () => {
250
- const def = {
251
- title: 'Example payment field',
252
- name: 'myComponent',
253
- type: ComponentType.PaymentField,
254
- options: {
255
- amount: 100,
256
- description: 'Test payment description'
257
- }
258
- } satisfies PaymentFieldComponent
259
-
260
- const collection = new ComponentCollection([def], { model })
261
- const paymentField = collection.fields[0] as PaymentField
262
- paymentField.model = { services: mockServices } as unknown as FormModel
263
-
264
- describe('dispatcher', () => {
265
- it('should create payment and redirect to gov pay', async () => {
266
- const mockYarSet = jest.fn()
267
- const mockRequest = {
268
- server: {
269
- plugins: {
270
- // eslint-disable-next-line no-useless-computed-key
271
- ['forms-engine-plugin']: {
272
- baseUrl: 'base-url'
273
- }
274
- }
275
- },
276
- yar: {
277
- set: mockYarSet
278
- }
279
- } as unknown as FormRequestPayload
280
- const mockH = {
281
- redirect: jest
282
- .fn()
283
- .mockReturnValueOnce({ code: jest.fn().mockReturnValueOnce('ok') })
284
- } as unknown as FormResponseToolkit
285
- const args = {
286
- controller: {
287
- model: {
288
- formId: 'formid',
289
- basePath: 'base-path',
290
- name: 'PaymentModel',
291
- services: mockServices
292
- },
293
- getState: jest
294
- .fn()
295
- .mockResolvedValueOnce({ $$__referenceNumber: 'pay-ref-123' })
296
- },
297
- component: paymentField,
298
- sourceUrl: 'http://localhost:3009/test-payment',
299
- isLive: false,
300
- isPreview: true
301
- } as unknown as PaymentExternalArgs
302
- // @ts-expect-error - partial mock
303
- jest.mocked(postJson).mockResolvedValueOnce({
304
- payload: {
305
- state: {
306
- status: 'created'
307
- },
308
- payment_id: 'new-payment-id',
309
- _links: {
310
- next_url: {
311
- href: '/next-url'
312
- }
313
- }
314
- }
315
- })
316
-
317
- const res = await PaymentField.dispatcher(mockRequest, mockH, args)
318
- expect(res).toBe('ok')
319
- expect(mockYarSet).toHaveBeenCalledWith(expect.any(String), {
320
- amount: 100,
321
- componentName: 'myComponent',
322
- description: 'Test payment description',
323
- failureUrl: 'http://localhost:3009/test-payment',
324
- formId: 'formid',
325
- isLivePayment: false,
326
- paymentId: 'new-payment-id',
327
- reference: 'pay-ref-123',
328
- returnUrl: 'base-url/base-path/summary',
329
- uuid: expect.any(String)
330
- })
331
- })
332
-
333
- it('should redirect to summary if payment is already pre-authorised', async () => {
334
- const mockRedirectCode = jest.fn().mockReturnValueOnce('redirected')
335
- const mockH = {
336
- redirect: jest.fn().mockReturnValueOnce({ code: mockRedirectCode })
337
- } as unknown as FormResponseToolkit
338
- const mockRequest = {
339
- server: {
340
- plugins: {
341
- // eslint-disable-next-line no-useless-computed-key
342
- ['forms-engine-plugin']: {
343
- baseUrl: 'base-url'
344
- }
345
- }
346
- },
347
- yar: {
348
- set: jest.fn()
349
- }
350
- } as unknown as FormRequestPayload
351
- const args = {
352
- controller: {
353
- model: {
354
- formId: 'formid',
355
- basePath: 'base-path',
356
- name: 'PaymentModel',
357
- services: mockServices
358
- },
359
- getState: jest.fn().mockResolvedValueOnce({
360
- $$__referenceNumber: 'pay-ref-123',
361
- myComponent: {
362
- paymentId: 'existing-payment-id',
363
- amount: 100,
364
- description: 'Test payment',
365
- preAuth: {
366
- status: 'success',
367
- createdAt: '2026-01-29T12:00:00.000Z'
368
- }
369
- }
370
- })
371
- },
372
- component: paymentField,
373
- sourceUrl: 'http://localhost:3009/test-payment',
374
- isLive: false,
375
- isPreview: true
376
- } as unknown as PaymentExternalArgs
377
-
378
- const res = await PaymentField.dispatcher(mockRequest, mockH, args)
379
-
380
- expect(res).toBe('redirected')
381
- expect(mockH.redirect).toHaveBeenCalledWith(
382
- 'base-url/base-path/summary'
383
- )
384
- expect(mockRedirectCode).toHaveBeenCalledWith(303)
385
- expect(postJson).not.toHaveBeenCalled()
386
- })
387
-
388
- it('should display error if create payment fails (e.g. network or bad api key) - test payment', async () => {
389
- const mockYarSet = jest.fn()
390
- const mockYarFlash = jest.fn()
391
- const mockRequest = {
392
- server: {
393
- plugins: {
394
- // eslint-disable-next-line no-useless-computed-key
395
- ['forms-engine-plugin']: {
396
- baseUrl: 'base-url'
397
- }
398
- }
399
- },
400
- yar: {
401
- set: mockYarSet,
402
- flash: mockYarFlash
403
- },
404
- url: {
405
- href: '/here'
406
- }
407
- } as unknown as FormRequestPayload
408
- const mockH = {
409
- redirect: jest
410
- .fn()
411
- .mockReturnValueOnce({ code: jest.fn().mockReturnValueOnce('ok') })
412
- } as unknown as FormResponseToolkit
413
- const args = {
414
- controller: {
415
- model: {
416
- formId: 'formid',
417
- basePath: 'base-path',
418
- name: 'PaymentModel',
419
- services: mockServices
420
- },
421
- getState: jest
422
- .fn()
423
- .mockResolvedValueOnce({ $$__referenceNumber: 'pay-ref-123' })
424
- },
425
- component: paymentField,
426
- sourceUrl: 'http://localhost:3009/test-payment',
427
- isLive: false,
428
- isPreview: true
429
- } as unknown as PaymentExternalArgs
430
- jest.mocked(postJson).mockImplementationOnce(() => {
431
- // eslint-disable-next-line @typescript-eslint/only-throw-error
432
- throw { output: { statusCode: StatusCodes.UNAUTHORIZED } }
433
- })
434
-
435
- const res = await PaymentField.dispatcher(mockRequest, mockH, args)
436
- expect(res).toBe('ok')
437
- expect(mockYarSet).not.toHaveBeenCalled()
438
- expect(mockYarFlash).toHaveBeenCalledWith(
439
- 'COMPONENT_STATE_ERROR',
440
- {
441
- href: '#myComponent',
442
- name: 'myComponent',
443
- text: 'Add a valid test API key before you can preview the payment journey.'
444
- },
445
- true
446
- )
447
- })
448
-
449
- it('should display error if create payment fails (e.g. network or bad api key) - live payment', async () => {
450
- const mockYarSet = jest.fn()
451
- const mockYarFlash = jest.fn()
452
- const mockRequest = {
453
- server: {
454
- plugins: {
455
- // eslint-disable-next-line no-useless-computed-key
456
- ['forms-engine-plugin']: {
457
- baseUrl: 'base-url'
458
- }
459
- }
460
- },
461
- yar: {
462
- set: mockYarSet,
463
- flash: mockYarFlash
464
- },
465
- url: {
466
- href: '/here'
467
- }
468
- } as unknown as FormRequestPayload
469
- const mockH = {
470
- redirect: jest
471
- .fn()
472
- .mockReturnValueOnce({ code: jest.fn().mockReturnValueOnce('ok') })
473
- } as unknown as FormResponseToolkit
474
- const args = {
475
- controller: {
476
- model: {
477
- formId: 'formid',
478
- basePath: 'base-path',
479
- name: 'PaymentModel',
480
- services: mockServices
481
- },
482
- getState: jest
483
- .fn()
484
- .mockResolvedValueOnce({ $$__referenceNumber: 'pay-ref-123' })
485
- },
486
- component: paymentField,
487
- sourceUrl: 'http://localhost:3009/test-payment',
488
- isLive: true,
489
- isPreview: false
490
- } as unknown as PaymentExternalArgs
491
- jest.mocked(postJson).mockImplementationOnce(() => {
492
- // eslint-disable-next-line @typescript-eslint/only-throw-error
493
- throw { output: { statusCode: StatusCodes.UNAUTHORIZED } }
494
- })
495
-
496
- const res = await PaymentField.dispatcher(mockRequest, mockH, args)
497
- expect(res).toBe('ok')
498
- expect(mockYarSet).not.toHaveBeenCalled()
499
- expect(mockYarFlash).toHaveBeenCalledWith(
500
- 'COMPONENT_STATE_ERROR',
501
- {
502
- href: '#myComponent',
503
- name: 'myComponent',
504
- text: 'There is a problem and we cannot take a payment. Contact us (details in the footer of this form) or save your progress and return to the form later.'
505
- },
506
- true
507
- )
508
- })
509
- })
510
-
511
- describe('onSubmit', () => {
512
- it('should throw if missing state', async () => {
513
- const mockRequest = {} as unknown as FormRequestPayload
514
-
515
- const error = await paymentField
516
- .onSubmit(
517
- mockRequest,
518
- {} as FormMetadata,
519
- { state: {} } as FormContext
520
- )
521
- .catch((e: unknown) => e)
522
-
523
- expect(error).toBeInstanceOf(PaymentPreAuthError)
524
- expect((error as PaymentPreAuthError).component).toBe(paymentField)
525
- expect((error as PaymentPreAuthError).userMessage).toBe(
526
- 'Complete the payment to continue'
527
- )
528
- })
529
-
530
- it('should ignore if our state says payment already captured', async () => {
531
- const mockRequest = {} as unknown as FormRequestPayload
532
-
533
- await paymentField.onSubmit(
534
- mockRequest,
535
- {} as FormMetadata,
536
- {
537
- state: {
538
- myComponent: {
539
- capture: {
540
- status: 'success'
541
- },
542
- paymentId: 'payment-id',
543
- amount: 123,
544
- description: 'Payment desc'
545
- }
546
- }
547
- } as unknown as FormContext
548
- )
549
- expect(get).not.toHaveBeenCalled()
550
- expect(post).not.toHaveBeenCalled()
551
- })
552
-
553
- it('should mark payment already captured according to gov pay', async () => {
554
- const mockRequest = {} as unknown as FormRequestPayload
555
- jest
556
- .mocked(get)
557
- // @ts-expect-error - partial mock
558
- .mockResolvedValueOnce({
559
- payload: { amount: 10000, state: { status: 'success' } }
560
- })
561
- await paymentField.onSubmit(
562
- mockRequest,
563
- {} as FormMetadata,
564
- {
565
- state: {
566
- myComponent: {
567
- paymentId: 'payment-id',
568
- amount: 100,
569
- description: 'Payment desc',
570
- isLivePayment: false,
571
- formId: 'formid'
572
- }
573
- }
574
- } as unknown as FormContext
575
- )
576
- expect(get).toHaveBeenCalled()
577
- expect(post).not.toHaveBeenCalled()
578
- })
579
-
580
- it('should throw if bad status', async () => {
581
- const mockRequest = {} as unknown as FormRequestPayload
582
- jest
583
- .mocked(get)
584
- // @ts-expect-error - partial mock
585
- .mockResolvedValueOnce({
586
- payload: { amount: 10000, state: { status: 'bad' } }
587
- })
588
- const error = await paymentField
589
- .onSubmit(
590
- mockRequest,
591
- {} as FormMetadata,
592
- {
593
- state: {
594
- myComponent: {
595
- paymentId: 'payment-id',
596
- amount: 100,
597
- description: 'Payment desc',
598
- isLivePayment: false,
599
- formId: 'formid'
600
- }
601
- }
602
- } as unknown as FormContext
603
- )
604
- .catch((e: unknown) => e)
605
-
606
- expect(error).toBeInstanceOf(PaymentPreAuthError)
607
- expect((error as PaymentPreAuthError).component).toBe(paymentField)
608
- expect((error as PaymentPreAuthError).userMessage).toBe(
609
- 'Your payment authorisation has expired. Please add your payment details again.'
610
- )
611
- })
612
-
613
- it('should throw if error during capture', async () => {
614
- const mockRequest = {} as unknown as FormRequestPayload
615
- jest
616
- .mocked(get)
617
- // @ts-expect-error - partial mock
618
- .mockResolvedValueOnce({
619
- payload: { amount: 10000, state: { status: 'capturable' } }
620
- })
621
- // @ts-expect-error - partial mock
622
- jest.mocked(post).mockResolvedValueOnce({ res: { statusCode: 400 } })
623
- const error = await paymentField
624
- .onSubmit(
625
- mockRequest,
626
- {} as FormMetadata,
627
- {
628
- state: {
629
- myComponent: {
630
- paymentId: 'payment-id',
631
- amount: 123,
632
- description: 'Payment desc',
633
- isLivePayment: false,
634
- formId: 'formid'
635
- }
636
- }
637
- } as unknown as FormContext
638
- )
639
- .catch((e: unknown) => e)
640
-
641
- expect(error).toBeInstanceOf(PaymentPreAuthError)
642
- expect((error as PaymentPreAuthError).component).toBe(paymentField)
643
- expect((error as PaymentPreAuthError).userMessage).toBe(
644
- 'There was a problem and your form was not submitted. Try submitting the form again.'
645
- )
646
- })
647
-
648
- it('should throw if amount mismatch', async () => {
649
- const mockRequest = {} as unknown as FormRequestPayload
650
- jest
651
- .mocked(get)
652
- // @ts-expect-error - partial mock
653
- .mockResolvedValueOnce({
654
- payload: { amount: 5000, state: { status: 'capturable' } }
655
- })
656
- // @ts-expect-error - partial mock
657
- jest.mocked(post).mockResolvedValueOnce({ res: { statusCode: 200 } })
658
- const error = await paymentField
659
- .onSubmit(
660
- mockRequest,
661
- {} as FormMetadata,
662
- {
663
- state: {
664
- myComponent: {
665
- paymentId: 'payment-id',
666
- amount: 123,
667
- description: 'Payment desc',
668
- isLivePayment: false,
669
- formId: 'formid'
670
- }
671
- }
672
- } as unknown as FormContext
673
- )
674
- .catch((e: unknown) => e)
675
-
676
- expect(error).toBeInstanceOf(PaymentPreAuthError)
677
- expect((error as PaymentPreAuthError).component).toBe(paymentField)
678
- expect((error as PaymentPreAuthError).userMessage).toBe(
679
- 'The pre-authorised payment amount is somehow different from that requested. Try adding payment details again.'
680
- )
681
- })
682
-
683
- it('should capture payment if no errors', async () => {
684
- const mockRequest = {} as unknown as FormRequestPayload
685
- jest
686
- .mocked(get)
687
- // @ts-expect-error - partial mock
688
- .mockResolvedValueOnce({
689
- payload: { amount: 10000, state: { status: 'capturable' } }
690
- })
691
- // @ts-expect-error - partial mock
692
- jest.mocked(post).mockResolvedValueOnce({ res: { statusCode: 200 } })
693
- await paymentField.onSubmit(
694
- mockRequest,
695
- {} as FormMetadata,
696
- {
697
- state: {
698
- myComponent: {
699
- paymentId: 'payment-id',
700
- amount: 123,
701
- description: 'Payment desc',
702
- isLivePayment: false,
703
- formId: 'formid'
704
- }
705
- }
706
- } as unknown as FormContext
707
- )
708
- expect(get).toHaveBeenCalled()
709
- expect(post).toHaveBeenCalled()
710
- })
711
- })
712
-
713
- describe('getFormValue', () => {
714
- it('should return undefined', () => {
715
- expect(paymentField.getFormValue({})).toBeUndefined()
716
- })
717
- it('should return value', () => {
718
- const payment = {
719
- paymentId: 'payment-id',
720
- amount: 123,
721
- description: 'Payment desc',
722
- isLivePayment: false,
723
- formId: 'formid'
724
- }
725
- expect(paymentField.getFormValue(payment)).toEqual(payment)
726
- })
727
- })
728
-
729
- describe('isState', () => {
730
- it('should return false if not valid state', () => {
731
- expect(paymentField.isState({})).toBe(false)
732
- })
733
- it('should return value', () => {
734
- const payment = {
735
- paymentId: 'payment-id',
736
- amount: 123,
737
- description: 'Payment desc',
738
- isLivePayment: false,
739
- formId: 'formid'
740
- }
741
- expect(paymentField.isState(payment)).toBe(true)
742
- })
743
- })
744
- })
745
- })