@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,177 +0,0 @@
1
- import Boom from '@hapi/boom'
2
-
3
- import * as service from '~/src/server/plugins/postcode-lookup/service.js'
4
- import { result as postcodeResult } from '~/src/server/plugins/postcode-lookup/test/__stubs__/postcode.js'
5
- import { result as queryResult } from '~/src/server/plugins/postcode-lookup/test/__stubs__/query.js'
6
- import { result as uprnResult } from '~/src/server/plugins/postcode-lookup/test/__stubs__/uprn.js'
7
- import { getJson } from '~/src/server/services/httpService.js'
8
-
9
- jest.mock('~/src/server/services/httpService.ts')
10
-
11
- describe('Postcode lookup service', () => {
12
- describe('searchByPostcode', () => {
13
- it('should return formatted addresses', async () => {
14
- jest.mocked(getJson).mockResolvedValueOnce({
15
- res: /** @type {IncomingMessage} */ ({
16
- statusCode: 200,
17
- headers: {}
18
- }),
19
- payload: postcodeResult,
20
- error: undefined
21
- })
22
-
23
- const results = await service.searchByPostcode('NW1 6XE', 'apikey')
24
-
25
- expect(results).toHaveLength(10)
26
- expect(results.at(0)).toEqual({
27
- address: "EMILIA'S CRAFTED PASTA, 215, BAKER STREET, LONDON, NW1 6XE",
28
- addressLine1: "Emilia's Crafted Pasta 215",
29
- addressLine2: 'Baker Street',
30
- county: '',
31
- formatted: "Emilia's Crafted Pasta 215, Baker Street, London, NW1 6XE",
32
- postcode: 'NW1 6XE',
33
- town: 'London',
34
- uprn: '10033619968'
35
- })
36
- })
37
-
38
- it('should return an empty response when an error is encountered', async () => {
39
- jest.mocked(getJson).mockResolvedValueOnce({
40
- res: /** @type {IncomingMessage} */ ({
41
- statusCode: 300,
42
- headers: {}
43
- }),
44
- payload: undefined,
45
- error: new Error('Unknown error')
46
- })
47
-
48
- const results = await service.searchByPostcode('NW1 6XE', 'apikey')
49
-
50
- expect(results).toHaveLength(0)
51
- expect(results).toEqual([])
52
- })
53
-
54
- it('should return an empty response when a non 200 response is encountered', async () => {
55
- jest
56
- .mocked(getJson)
57
- .mockRejectedValueOnce(
58
- Boom.badRequest(
59
- 'OS API error',
60
- new Error('Invalid postcode segments')
61
- )
62
- )
63
-
64
- const results = await service.searchByPostcode(
65
- 'invalid postcode',
66
- 'apikey'
67
- )
68
-
69
- expect(results).toHaveLength(0)
70
- expect(results).toEqual([])
71
- })
72
-
73
- it('should return an empty response when no results are returned', async () => {
74
- jest.mocked(getJson).mockResolvedValueOnce({
75
- res: /** @type {IncomingMessage} */ ({
76
- statusCode: 200,
77
- headers: {}
78
- }),
79
- payload: { results: undefined },
80
- error: undefined
81
- })
82
-
83
- const results = await service.searchByPostcode('NW1 6XE', 'apikey')
84
-
85
- expect(results).toHaveLength(0)
86
- expect(results).toEqual([])
87
- })
88
- })
89
-
90
- describe('searchByUPRN', () => {
91
- it('should return formatted addresses', async () => {
92
- jest.mocked(getJson).mockResolvedValueOnce({
93
- res: /** @type {IncomingMessage} */ ({
94
- statusCode: 200,
95
- headers: {}
96
- }),
97
- payload: uprnResult,
98
- error: undefined
99
- })
100
-
101
- const results = await service.searchByUPRN('100023071949', 'apikey')
102
-
103
- expect(results).toHaveLength(1)
104
- expect(results.at(0)).toEqual({
105
- address: 'SHERLOCK HOLMES MUSEUM, 221B, BAKER STREET, LONDON, NW1 6XE',
106
- addressLine1: 'Sherlock Holmes Museum 221b',
107
- addressLine2: 'Baker Street',
108
- county: '',
109
- formatted: 'Sherlock Holmes Museum 221b, Baker Street, London, NW1 6XE',
110
- postcode: 'NW1 6XE',
111
- town: 'London',
112
- uprn: '100023071949'
113
- })
114
- })
115
- })
116
-
117
- describe('searchByQuery', () => {
118
- it('should return formatted addresses', async () => {
119
- jest.mocked(getJson).mockResolvedValueOnce({
120
- res: /** @type {IncomingMessage} */ ({
121
- statusCode: 200,
122
- headers: {}
123
- }),
124
- payload: queryResult,
125
- error: undefined
126
- })
127
-
128
- const results = await service.searchByQuery(
129
- 'Prime minister downing',
130
- 'apikey'
131
- )
132
-
133
- expect(results).toHaveLength(5)
134
- expect(results.at(0)).toEqual({
135
- address: 'BAKER STREET COTTAGE, BAKER STREET, FROME, BA11 3BL',
136
- addressLine1: 'Baker Street Cottage',
137
- addressLine2: 'Baker Street',
138
- town: 'Frome',
139
- county: '',
140
- formatted: 'Baker Street Cottage, Baker Street, Frome, BA11 3BL',
141
- postcode: 'BA11 3BL',
142
- uprn: '250034655'
143
- })
144
- })
145
- })
146
-
147
- describe('search', () => {
148
- it('should return formatted addresses', async () => {
149
- jest.mocked(getJson).mockResolvedValueOnce({
150
- res: /** @type {IncomingMessage} */ ({
151
- statusCode: 200,
152
- headers: {}
153
- }),
154
- payload: postcodeResult,
155
- error: undefined
156
- })
157
-
158
- const results = await service.search('NW1 6XE', 'Emilia', 'apikey')
159
-
160
- expect(results).toHaveLength(1)
161
- expect(results.at(0)).toEqual({
162
- address: "EMILIA'S CRAFTED PASTA, 215, BAKER STREET, LONDON, NW1 6XE",
163
- addressLine1: "Emilia's Crafted Pasta 215",
164
- addressLine2: 'Baker Street',
165
- county: '',
166
- formatted: "Emilia's Crafted Pasta 215, Baker Street, London, NW1 6XE",
167
- postcode: 'NW1 6XE',
168
- town: 'London',
169
- uprn: '10033619968'
170
- })
171
- })
172
- })
173
- })
174
-
175
- /**
176
- * @import { IncomingMessage } from 'node:http'
177
- */
@@ -1,64 +0,0 @@
1
- import { type Server } from '@hapi/hapi'
2
-
3
- import { createServer } from '~/src/server/index.js'
4
- import { getFormMetadata } from '~/src/server/plugins/engine/services/formsService.js'
5
- import * as defaultServices from '~/src/server/plugins/engine/services/index.js'
6
- import * as fixtures from '~/test/fixtures/index.js'
7
-
8
- jest.mock('~/src/server/plugins/engine/services/formsService.js')
9
- jest.mock('~/src/server/plugins/engine/services/uploadService.js')
10
-
11
- describe('Postcode lookup plugin', () => {
12
- let server: Server
13
-
14
- beforeEach(() => {
15
- jest.mocked(getFormMetadata).mockResolvedValue(fixtures.form.metadata)
16
- })
17
-
18
- afterAll(async () => {
19
- await server.stop()
20
- })
21
-
22
- describe('Plugin registration', () => {
23
- test('Registers plugin with ordnance survey key', async () => {
24
- server = await createServer({
25
- services: defaultServices,
26
- ordnanceSurveyApiKey: 'dummy'
27
- })
28
- await server.initialize()
29
-
30
- expect(server.registrations).toHaveProperty(
31
- '@defra/forms-engine-plugin/postcode-lookup',
32
- {
33
- name: '@defra/forms-engine-plugin/postcode-lookup',
34
- options: { ordnanceSurveyApiKey: 'dummy' },
35
- version: undefined
36
- }
37
- )
38
-
39
- expect(
40
- server.table().find((route) => route.path === '/postcode-lookup')
41
- ).toBeDefined()
42
- })
43
-
44
- test('Does not register plugin when no ordnance survey key is provided', async () => {
45
- server = await createServer({
46
- services: defaultServices
47
- })
48
- await server.initialize()
49
-
50
- expect(server.registrations).not.toHaveProperty(
51
- '@defra/forms-engine-plugin/postcode-lookup',
52
- {
53
- name: '@defra/forms-engine-plugin/postcode-lookup',
54
- options: { ordnanceSurveyApiKey: 'dummy' },
55
- version: undefined
56
- }
57
- )
58
-
59
- expect(
60
- server.table().find((route) => route.path === '/postcode-lookup')
61
- ).toBeUndefined()
62
- })
63
- })
64
- })
@@ -1,97 +0,0 @@
1
- import { type Server } from '@hapi/hapi'
2
- import MockDate from 'mockdate'
3
-
4
- import { createServer } from '~/src/server/index.js'
5
-
6
- describe('Dummy API', () => {
7
- let server: Server
8
-
9
- const payload = {
10
- meta: {
11
- referenceNumber: 'FOO-BAR-123'
12
- },
13
- data: {
14
- main: {
15
- applicantFirstName: 'Joe',
16
- applicantLastName: 'Bloggs',
17
- dateOfBirth: '2020-01-01'
18
- }
19
- }
20
- }
21
-
22
- beforeAll(async () => {
23
- MockDate.set('2025-01-01T00:00:00Z')
24
- server = await createServer({
25
- enforceCsrf: false
26
- })
27
- await server.initialize()
28
- })
29
-
30
- afterAll(async () => {
31
- await server.stop()
32
- MockDate.reset()
33
- })
34
-
35
- it('should validate on-load-page POST response', async () => {
36
- const res = await server.inject({
37
- method: 'POST',
38
- url: '/api/example/on-load-page',
39
- payload
40
- })
41
-
42
- expect(res.statusCode).toBe(200)
43
- expect(res.result).toMatchObject({
44
- submissionEvent: 'GET',
45
- submissionReferenceNumber: payload.meta.referenceNumber
46
- })
47
- })
48
-
49
- /*
50
- This is just dummy code that won't run in prod, we don't need a full suite of tests.
51
- */
52
- it('should validate on-summary POST response', async () => {
53
- const res = await server.inject({
54
- method: 'POST',
55
- url: '/api/example/on-summary',
56
- payload
57
- })
58
-
59
- expect(res.statusCode).toBe(200)
60
- expect(res.result).toMatchObject({
61
- calculatedAge: 5,
62
- submissionEvent: 'POST',
63
- submissionReferenceNumber: payload.meta.referenceNumber
64
- })
65
- })
66
-
67
- it('should calculate age correctly when birthday has not occurred yet this year', async () => {
68
- // Set today's date to just before the birthday in 2025
69
- MockDate.set('2025-01-01T00:00:00Z')
70
-
71
- const payloadWithFutureBirthday = {
72
- meta: {
73
- referenceNumber: 'FOO-BAR-456'
74
- },
75
- data: {
76
- main: {
77
- applicantFirstName: 'Jane',
78
- applicantLastName: 'Doe',
79
- dateOfBirth: '2020-02-01' // Birthday is in February, today is January
80
- }
81
- }
82
- }
83
-
84
- const res = await server.inject({
85
- method: 'POST',
86
- url: '/api/example/on-summary',
87
- payload: payloadWithFutureBirthday
88
- })
89
-
90
- expect(res.statusCode).toBe(200)
91
- expect(res.result).toMatchObject({
92
- calculatedAge: 4, // Should be 4, not 5, because birthday hasn't occurred yet
93
- submissionEvent: 'POST',
94
- submissionReferenceNumber: payloadWithFutureBirthday.meta.referenceNumber
95
- })
96
- })
97
- })
@@ -1,308 +0,0 @@
1
- import { type Request, type Server } from '@hapi/hapi'
2
-
3
- import { config } from '~/src/config/index.js'
4
- import { type FormRequest } from '~/src/server/routes/types.js'
5
- import { CacheService, merge } from '~/src/server/services/cacheService.js'
6
-
7
- describe('CacheService', () => {
8
- let mockServer: Partial<Server>
9
- let mockCache: {
10
- get: jest.Mock
11
- set: jest.Mock
12
- drop: jest.Mock
13
- }
14
- let cacheService: CacheService
15
-
16
- beforeEach(() => {
17
- mockCache = {
18
- get: jest.fn(),
19
- set: jest.fn(),
20
- drop: jest.fn()
21
- }
22
-
23
- mockServer = {
24
- log: jest.fn(),
25
- cache: (() => ({
26
- ...mockCache,
27
- provision: jest.fn()
28
- })) as unknown as Server['cache'],
29
- logger: {
30
- info: jest.fn()
31
- } as unknown as Server['logger']
32
- }
33
-
34
- cacheService = new CacheService({
35
- server: mockServer as Server,
36
- cacheName: 'test-cache'
37
- })
38
- })
39
-
40
- describe('getState', () => {
41
- describe('when cache exists', () => {
42
- it('should return cached state', async () => {
43
- const mockRequest = {
44
- yar: { id: 'some-session' },
45
- params: { state: 'form1', slug: 'page1' }
46
- } as unknown as FormRequest
47
- const mockState = { someData: 'test' }
48
-
49
- mockCache.get.mockResolvedValue(mockState)
50
-
51
- const result = await cacheService.getState(mockRequest)
52
-
53
- expect(result).toEqual(mockState)
54
- expect(mockCache.get).toHaveBeenCalledWith({
55
- segment: 'cache',
56
- id: 'some-session:form1:page1:'
57
- })
58
- })
59
- })
60
-
61
- describe('when cache does not exist', () => {
62
- it('should return empty object', async () => {
63
- const mockRequest = {
64
- yar: { id: 'some-session' },
65
- params: { state: 'form1', slug: 'page1' }
66
- } as unknown as FormRequest
67
-
68
- mockCache.get.mockResolvedValue(null)
69
-
70
- const result = await cacheService.getState(mockRequest)
71
-
72
- expect(result).toEqual({})
73
- })
74
- })
75
- })
76
-
77
- describe('setState', () => {
78
- it('should set state with correct TTL and return updated state', async () => {
79
- const mockRequest = {
80
- yar: { id: 'some-session' },
81
- params: { state: 'form1', slug: 'page1' }
82
- } as unknown as FormRequest
83
- const mockState = { someData: 'test' }
84
- const mockTTL = 3600000
85
-
86
- jest.spyOn(config, 'get').mockReturnValue(mockTTL)
87
-
88
- // Mock getState to return the updated state after set
89
- jest.spyOn(cacheService, 'getState').mockResolvedValue(mockState)
90
-
91
- await expect(
92
- cacheService.setState(mockRequest, mockState)
93
- ).resolves.toEqual(mockState)
94
-
95
- expect(mockCache.set).toHaveBeenCalledWith(
96
- {
97
- segment: 'cache',
98
- id: 'some-session:form1:page1:'
99
- },
100
- mockState,
101
- mockTTL
102
- )
103
- expect(cacheService.getState).toHaveBeenCalledWith(mockRequest)
104
- })
105
- })
106
-
107
- describe('Key', () => {
108
- describe('when session ID is missing', () => {
109
- it('should throw error', () => {
110
- const mockRequest = {
111
- yar: { id: null },
112
- params: {}
113
- } as unknown as Request
114
-
115
- expect(() => cacheService.Key(mockRequest)).toThrow(
116
- 'No session ID found'
117
- )
118
- })
119
- })
120
- })
121
-
122
- describe('merge', () => {
123
- describe('when merging objects', () => {
124
- it('should merge them correctly', () => {
125
- const state = { field1: 'some-data-1', field2: 'some-data-2' }
126
- const update = { field2: 'updated', field3: 'some-data-3' }
127
-
128
- const result = merge(state, update)
129
-
130
- expect(result).toEqual({
131
- field1: 'some-data-1',
132
- field2: 'updated',
133
- field3: 'some-data-3'
134
- })
135
- })
136
- })
137
-
138
- describe('when merging arrays', () => {
139
- it('should overwrite instead of merge', () => {
140
- const state = { items: ['some-item-1', 'some-item-2'] }
141
- const update = { items: ['some-item-3'] }
142
-
143
- const result = merge(state, update)
144
-
145
- expect(result.items).toEqual(['some-item-3'])
146
- })
147
- })
148
- })
149
-
150
- describe('getFlash', () => {
151
- describe('when messages exist', () => {
152
- it('should return first message', () => {
153
- const mockRequest = {
154
- yar: {
155
- id: 'some-session',
156
- flash: jest.fn().mockReturnValue([{ errors: [{ type: 'error' }] }])
157
- },
158
- params: { state: 'form1', slug: 'page1' }
159
- } as unknown as FormRequest
160
-
161
- const result = cacheService.getFlash(mockRequest)
162
-
163
- expect(result).toEqual({ errors: [{ type: 'error' }] })
164
- })
165
- })
166
-
167
- describe('when no messages exist', () => {
168
- it('should return undefined', () => {
169
- const mockRequest = {
170
- yar: {
171
- id: 'some-session',
172
- flash: jest.fn().mockReturnValue([])
173
- },
174
- params: { state: 'form1', slug: 'page1' }
175
- } as unknown as FormRequest
176
-
177
- const result = cacheService.getFlash(mockRequest)
178
-
179
- expect(result).toBeUndefined()
180
- })
181
- })
182
- })
183
-
184
- describe('setFlash', () => {
185
- it('should set flash message', () => {
186
- const mockRequest = {
187
- yar: {
188
- id: 'some-session',
189
- flash: jest.fn()
190
- },
191
- params: { state: 'form1', slug: 'page1' }
192
- } as unknown as FormRequest
193
- const message = {
194
- errors: [
195
- {
196
- type: 'error',
197
- href: '#error',
198
- name: 'error',
199
- text: 'Error message',
200
- path: ['path-abc']
201
- }
202
- ]
203
- }
204
-
205
- cacheService.setFlash(mockRequest, message)
206
-
207
- expect(mockRequest.yar.flash).toHaveBeenCalledWith(
208
- 'some-session:form1:page1:',
209
- message
210
- )
211
- })
212
- })
213
-
214
- describe('clearState', () => {
215
- it('should clear state from cache', async () => {
216
- const mockRequest = {
217
- yar: { id: 'some-session' },
218
- params: { state: 'form1', slug: 'page1' }
219
- } as unknown as FormRequest
220
-
221
- await cacheService.clearState(mockRequest)
222
-
223
- expect(mockCache.drop).toHaveBeenCalledWith({
224
- segment: 'cache',
225
- id: 'some-session:form1:page1:'
226
- })
227
- })
228
-
229
- it('should not clear state when session ID is undefined', async () => {
230
- const mockRequest = {
231
- yar: { id: undefined },
232
- params: { state: 'form1', slug: 'page1' }
233
- } as unknown as FormRequest
234
-
235
- await cacheService.clearState(mockRequest)
236
-
237
- expect(mockCache.drop).not.toHaveBeenCalled()
238
- })
239
-
240
- it('should not clear state when session ID is null', async () => {
241
- const mockRequest = {
242
- yar: { id: null },
243
- params: { state: 'form1', slug: 'page1' }
244
- } as unknown as FormRequest
245
-
246
- await cacheService.clearState(mockRequest)
247
-
248
- expect(mockCache.drop).not.toHaveBeenCalled()
249
- })
250
- })
251
-
252
- describe('getConfirmationState', () => {
253
- it('should return confirmation state from cache', async () => {
254
- const mockRequest = {
255
- yar: { id: 'some-session' },
256
- params: { state: 'form1', slug: 'page1' }
257
- } as unknown as FormRequest
258
- const mockState = { confirmed: true as const }
259
-
260
- mockCache.get.mockResolvedValue(mockState)
261
-
262
- const result = await cacheService.getConfirmationState(mockRequest)
263
-
264
- expect(result).toEqual(mockState)
265
- expect(mockCache.get).toHaveBeenCalledWith({
266
- segment: 'cache',
267
- id: 'some-session:form1:page1::confirmation'
268
- })
269
- })
270
-
271
- it('should return empty object when no confirmation state exists', async () => {
272
- const mockRequest = {
273
- yar: { id: 'some-session' },
274
- params: { state: 'form1', slug: 'page1' }
275
- } as unknown as FormRequest
276
-
277
- mockCache.get.mockResolvedValue(null)
278
-
279
- const result = await cacheService.getConfirmationState(mockRequest)
280
-
281
- expect(result).toEqual({})
282
- })
283
- })
284
-
285
- describe('setConfirmationState', () => {
286
- it('should set confirmation state in cache', async () => {
287
- const mockRequest = {
288
- yar: { id: 'some-session' },
289
- params: { state: 'form1', slug: 'page1' }
290
- } as unknown as FormRequest
291
- const mockState = { confirmed: true as const }
292
- const mockTTL = 3600000
293
-
294
- jest.spyOn(config, 'get').mockReturnValue(mockTTL)
295
-
296
- await cacheService.setConfirmationState(mockRequest, mockState)
297
-
298
- expect(mockCache.set).toHaveBeenCalledWith(
299
- {
300
- segment: 'cache',
301
- id: 'some-session:form1:page1::confirmation'
302
- },
303
- mockState,
304
- mockTTL
305
- )
306
- })
307
- })
308
- })