@defra/forms-engine-plugin 4.7.2 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. package/.public/javascripts/shared.min.js +1 -1
  2. package/.public/javascripts/shared.min.js.map +1 -1
  3. package/.server/client/javascripts/geospatial-map.d.ts +6 -6
  4. package/.server/client/javascripts/geospatial-map.js +3 -3
  5. package/.server/client/javascripts/location-map.d.ts +1 -1
  6. package/.server/client/javascripts/location-map.js +1 -1
  7. package/.server/client/javascripts/map.d.ts +5 -1
  8. package/.server/client/javascripts/map.js +10 -2
  9. package/.server/client/javascripts/map.js.map +1 -1
  10. package/.server/client/javascripts/shared.d.ts +7 -7
  11. package/.server/server/index.d.ts +1 -1
  12. package/.server/server/plugins/crumb.d.ts +1 -1
  13. package/.server/server/plugins/engine/beta/form-context.d.ts +6 -6
  14. package/.server/server/plugins/engine/components/AutocompleteField.d.ts +4 -4
  15. package/.server/server/plugins/engine/components/CheckboxesField.d.ts +2 -2
  16. package/.server/server/plugins/engine/components/CheckboxesField.js +2 -2
  17. package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
  18. package/.server/server/plugins/engine/components/ComponentBase.d.ts +5 -5
  19. package/.server/server/plugins/engine/components/ComponentCollection.d.ts +8 -8
  20. package/.server/server/plugins/engine/components/DatePartsField.d.ts +11 -11
  21. package/.server/server/plugins/engine/components/DeclarationField.d.ts +3 -3
  22. package/.server/server/plugins/engine/components/Details.d.ts +1 -1
  23. package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +22 -22
  24. package/.server/server/plugins/engine/components/EmailAddressField.d.ts +4 -4
  25. package/.server/server/plugins/engine/components/FileUploadField.d.ts +3 -3
  26. package/.server/server/plugins/engine/components/FormComponent.d.ts +10 -10
  27. package/.server/server/plugins/engine/components/GeospatialField.d.ts +6 -6
  28. package/.server/server/plugins/engine/components/HiddenField.d.ts +2 -2
  29. package/.server/server/plugins/engine/components/Html.d.ts +1 -1
  30. package/.server/server/plugins/engine/components/InsetText.d.ts +1 -1
  31. package/.server/server/plugins/engine/components/LatLongField.d.ts +22 -22
  32. package/.server/server/plugins/engine/components/List.d.ts +8 -8
  33. package/.server/server/plugins/engine/components/ListFormComponent.d.ts +10 -10
  34. package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +6 -6
  35. package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +14 -14
  36. package/.server/server/plugins/engine/components/Markdown.d.ts +1 -1
  37. package/.server/server/plugins/engine/components/MonthYearField.d.ts +11 -11
  38. package/.server/server/plugins/engine/components/MultilineTextField.d.ts +5 -5
  39. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +1 -1
  40. package/.server/server/plugins/engine/components/NumberField.d.ts +3 -3
  41. package/.server/server/plugins/engine/components/OsGridRefField.d.ts +1 -1
  42. package/.server/server/plugins/engine/components/PaymentField.d.ts +12 -12
  43. package/.server/server/plugins/engine/components/RadiosField.d.ts +1 -1
  44. package/.server/server/plugins/engine/components/SelectField.d.ts +4 -4
  45. package/.server/server/plugins/engine/components/SelectionControlField.d.ts +10 -10
  46. package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +4 -4
  47. package/.server/server/plugins/engine/components/TextField.d.ts +2 -2
  48. package/.server/server/plugins/engine/components/UkAddressField.d.ts +11 -11
  49. package/.server/server/plugins/engine/components/YesNoField.d.ts +2 -2
  50. package/.server/server/plugins/engine/components/helpers/__stubs__/geospatial.d.ts +1 -1
  51. package/.server/server/plugins/engine/components/helpers/components.d.ts +5 -5
  52. package/.server/server/plugins/engine/components/helpers/geospatial.d.ts +1 -1
  53. package/.server/server/plugins/engine/components/index.d.ts +27 -27
  54. package/.server/server/plugins/engine/components/types.d.ts +1 -1
  55. package/.server/server/plugins/engine/configureEnginePlugin.d.ts +4 -4
  56. package/.server/server/plugins/engine/date-helper.d.ts +1 -1
  57. package/.server/server/plugins/engine/helpers.d.ts +8 -8
  58. package/.server/server/plugins/engine/index.d.ts +5 -5
  59. package/.server/server/plugins/engine/models/FormModel.d.ts +6 -6
  60. package/.server/server/plugins/engine/models/SummaryViewModel.d.ts +6 -6
  61. package/.server/server/plugins/engine/models/index.d.ts +2 -2
  62. package/.server/server/plugins/engine/models/types.d.ts +4 -4
  63. package/.server/server/plugins/engine/options.d.ts +1 -1
  64. package/.server/server/plugins/engine/options.js +1 -1
  65. package/.server/server/plugins/engine/options.test.js +1 -1
  66. package/.server/server/plugins/engine/outputFormatters/adapter/v1.d.ts +4 -4
  67. package/.server/server/plugins/engine/outputFormatters/human/v1.d.ts +4 -4
  68. package/.server/server/plugins/engine/outputFormatters/index.d.ts +5 -5
  69. package/.server/server/plugins/engine/outputFormatters/machine/v1.d.ts +4 -4
  70. package/.server/server/plugins/engine/outputFormatters/machine/v2.d.ts +4 -4
  71. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +8 -8
  72. package/.server/server/plugins/engine/pageControllers/PageController.d.ts +6 -6
  73. package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +8 -8
  74. package/.server/server/plugins/engine/pageControllers/RepeatPageController.d.ts +5 -5
  75. package/.server/server/plugins/engine/pageControllers/StartPageController.d.ts +4 -4
  76. package/.server/server/plugins/engine/pageControllers/StatusPageController.d.ts +4 -4
  77. package/.server/server/plugins/engine/pageControllers/SummaryPageController.d.ts +5 -5
  78. package/.server/server/plugins/engine/pageControllers/TerminalPageController.d.ts +3 -3
  79. package/.server/server/plugins/engine/pageControllers/__stubs__/request.d.ts +2 -2
  80. package/.server/server/plugins/engine/pageControllers/errors.d.ts +1 -1
  81. package/.server/server/plugins/engine/pageControllers/helpers/pages.d.ts +2 -2
  82. package/.server/server/plugins/engine/pageControllers/helpers/state.d.ts +5 -5
  83. package/.server/server/plugins/engine/pageControllers/helpers/state.js +1 -1
  84. package/.server/server/plugins/engine/pageControllers/helpers/state.js.map +1 -1
  85. package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +1 -1
  86. package/.server/server/plugins/engine/pageControllers/index.d.ts +7 -7
  87. package/.server/server/plugins/engine/plugin.d.ts +1 -1
  88. package/.server/server/plugins/engine/routes/file-upload.d.ts +1 -1
  89. package/.server/server/plugins/engine/routes/index.d.ts +3 -3
  90. package/.server/server/plugins/engine/routes/payment-helper.d.ts +3 -3
  91. package/.server/server/plugins/engine/routes/payment-helper.js +2 -2
  92. package/.server/server/plugins/engine/routes/payment.js +5 -5
  93. package/.server/server/plugins/engine/routes/payment.test.js +1 -1
  94. package/.server/server/plugins/engine/routes/questions.d.ts +2 -2
  95. package/.server/server/plugins/engine/routes/repeaters/item-delete.d.ts +2 -2
  96. package/.server/server/plugins/engine/routes/repeaters/summary.d.ts +2 -2
  97. package/.server/server/plugins/engine/services/index.d.ts +3 -3
  98. package/.server/server/plugins/engine/services/notifyService.d.ts +4 -4
  99. package/.server/server/plugins/engine/services/uploadService.d.ts +2 -2
  100. package/.server/server/plugins/engine/services/uploadService.js +1 -1
  101. package/.server/server/plugins/engine/types/index.d.ts +10 -10
  102. package/.server/server/plugins/engine/types/schema.d.ts +1 -1
  103. package/.server/server/plugins/engine/types.d.ts +25 -16
  104. package/.server/server/plugins/engine/types.js.map +1 -1
  105. package/.server/server/plugins/engine/validationHelpers.d.ts +2 -2
  106. package/.server/server/plugins/engine/vision.d.ts +1 -1
  107. package/.server/server/plugins/map/index.d.ts +1 -1
  108. package/.server/server/plugins/map/index.js +1 -1
  109. package/.server/server/plugins/map/routes/get-os-token.d.ts +11 -1
  110. package/.server/server/plugins/map/routes/get-os-token.js +12 -2
  111. package/.server/server/plugins/map/routes/get-os-token.js.map +1 -1
  112. package/.server/server/plugins/map/routes/index.d.ts +4 -4
  113. package/.server/server/plugins/map/routes/index.js +3 -2
  114. package/.server/server/plugins/map/routes/index.js.map +1 -1
  115. package/.server/server/plugins/map/routes/vts/esri-aerial.json +23 -0
  116. package/.server/server/plugins/map/service.d.ts +1 -1
  117. package/.server/server/plugins/map/service.js +5 -2
  118. package/.server/server/plugins/map/service.js.map +1 -1
  119. package/.server/server/plugins/map/test/__stubs__/find.d.ts +1 -1
  120. package/.server/server/plugins/map/test/__stubs__/find.js +1 -1
  121. package/.server/server/plugins/nunjucks/context.d.ts +2 -2
  122. package/.server/server/plugins/nunjucks/context.js +2 -2
  123. package/.server/server/plugins/nunjucks/context.test.js +1 -1
  124. package/.server/server/plugins/nunjucks/enviroment.test.js +1 -1
  125. package/.server/server/plugins/nunjucks/environment.d.ts +3 -3
  126. package/.server/server/plugins/nunjucks/environment.js +3 -3
  127. package/.server/server/plugins/nunjucks/filters/answer.d.ts +1 -1
  128. package/.server/server/plugins/nunjucks/filters/answer.js +2 -2
  129. package/.server/server/plugins/nunjucks/filters/answer.test.js +1 -1
  130. package/.server/server/plugins/nunjucks/filters/evaluate.d.ts +1 -1
  131. package/.server/server/plugins/nunjucks/filters/evaluate.js +1 -1
  132. package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
  133. package/.server/server/plugins/nunjucks/filters/field.js +1 -1
  134. package/.server/server/plugins/nunjucks/filters/field.test.js +1 -1
  135. package/.server/server/plugins/nunjucks/filters/href.d.ts +1 -1
  136. package/.server/server/plugins/nunjucks/filters/href.js +1 -1
  137. package/.server/server/plugins/nunjucks/filters/href.test.js +1 -1
  138. package/.server/server/plugins/nunjucks/filters/index.d.ts +8 -8
  139. package/.server/server/plugins/nunjucks/filters/page.d.ts +1 -1
  140. package/.server/server/plugins/nunjucks/filters/page.js +1 -1
  141. package/.server/server/plugins/nunjucks/filters/page.test.js +1 -1
  142. package/.server/server/plugins/nunjucks/index.d.ts +3 -3
  143. package/.server/server/plugins/nunjucks/render.d.ts +2 -2
  144. package/.server/server/plugins/nunjucks/render.js +1 -1
  145. package/.server/server/plugins/nunjucks/types.d.ts +1 -1
  146. package/.server/server/plugins/nunjucks/types.js +1 -1
  147. package/.server/server/plugins/payment/helper.d.ts +2 -2
  148. package/.server/server/plugins/payment/helper.js +1 -1
  149. package/.server/server/plugins/payment/service.d.ts +3 -3
  150. package/.server/server/plugins/payment/service.js +1 -1
  151. package/.server/server/plugins/postcode-lookup/index.d.ts +1 -1
  152. package/.server/server/plugins/postcode-lookup/index.js +1 -1
  153. package/.server/server/plugins/postcode-lookup/models/index.d.ts +6 -6
  154. package/.server/server/plugins/postcode-lookup/models/index.js +1 -1
  155. package/.server/server/plugins/postcode-lookup/routes/index.d.ts +6 -6
  156. package/.server/server/plugins/postcode-lookup/routes/index.js +15 -15
  157. package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
  158. package/.server/server/plugins/postcode-lookup/service.d.ts +1 -1
  159. package/.server/server/plugins/postcode-lookup/service.js +5 -2
  160. package/.server/server/plugins/postcode-lookup/service.js.map +1 -1
  161. package/.server/server/plugins/postcode-lookup/types.js +1 -1
  162. package/.server/server/routes/index.d.ts +2 -2
  163. package/.server/server/routes/types.d.ts +1 -1
  164. package/.server/server/schemas/index.d.ts +2 -2
  165. package/.server/server/services/cacheService.d.ts +8 -8
  166. package/.server/server/services/cacheService.js +2 -5
  167. package/.server/server/services/cacheService.js.map +1 -1
  168. package/.server/server/services/httpService.test.js +1 -1
  169. package/.server/server/services/index.d.ts +1 -1
  170. package/.server/server/types.d.ts +7 -7
  171. package/.server/server/utils/file-form-service.d.ts +2 -2
  172. package/.server/server/utils/file-form-service.js +1 -1
  173. package/package.json +8 -4
  174. package/src/client/javascripts/application.js +1 -1
  175. package/src/client/javascripts/geospatial-map.js +4 -4
  176. package/src/client/javascripts/location-map.js +2 -2
  177. package/src/client/javascripts/map.js +13 -4
  178. package/src/client/javascripts/shared.js +7 -7
  179. package/src/index.ts +3 -3
  180. package/src/server/common/helpers/logging/logger-options.ts +1 -1
  181. package/src/server/common/helpers/logging/logger.ts +1 -1
  182. package/src/server/common/helpers/logging/request-logger.ts +1 -1
  183. package/src/server/common/helpers/logging/request-tracing.js +1 -1
  184. package/src/server/common/helpers/redis-client.js +2 -2
  185. package/src/server/index.ts +13 -13
  186. package/src/server/plugins/crumb.ts +2 -2
  187. package/src/server/plugins/engine/beta/form-context.ts +9 -9
  188. package/src/server/plugins/engine/components/AutocompleteField.ts +3 -3
  189. package/src/server/plugins/engine/components/CheckboxesField.ts +7 -8
  190. package/src/server/plugins/engine/components/ComponentBase.ts +5 -5
  191. package/src/server/plugins/engine/components/ComponentCollection.ts +9 -9
  192. package/src/server/plugins/engine/components/DatePartsField.ts +8 -8
  193. package/src/server/plugins/engine/components/DeclarationField.ts +3 -3
  194. package/src/server/plugins/engine/components/Details.ts +1 -1
  195. package/src/server/plugins/engine/components/EastingNorthingField.ts +9 -9
  196. package/src/server/plugins/engine/components/EmailAddressField.ts +3 -3
  197. package/src/server/plugins/engine/components/FileUploadField.ts +6 -6
  198. package/src/server/plugins/engine/components/FormComponent.ts +4 -4
  199. package/src/server/plugins/engine/components/GeospatialField.ts +5 -5
  200. package/src/server/plugins/engine/components/HiddenField.ts +4 -4
  201. package/src/server/plugins/engine/components/Html.ts +1 -1
  202. package/src/server/plugins/engine/components/InsetText.ts +1 -1
  203. package/src/server/plugins/engine/components/LatLongField.ts +9 -9
  204. package/src/server/plugins/engine/components/List.ts +2 -2
  205. package/src/server/plugins/engine/components/ListFormComponent.ts +4 -4
  206. package/src/server/plugins/engine/components/LocationFieldBase.ts +5 -5
  207. package/src/server/plugins/engine/components/LocationFieldHelpers.ts +5 -5
  208. package/src/server/plugins/engine/components/Markdown.ts +1 -1
  209. package/src/server/plugins/engine/components/MonthYearField.ts +8 -8
  210. package/src/server/plugins/engine/components/MultilineTextField.ts +4 -4
  211. package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +2 -2
  212. package/src/server/plugins/engine/components/NumberField.ts +3 -3
  213. package/src/server/plugins/engine/components/OsGridRefField.ts +2 -2
  214. package/src/server/plugins/engine/components/PaymentField.ts +8 -8
  215. package/src/server/plugins/engine/components/RadiosField.ts +1 -1
  216. package/src/server/plugins/engine/components/SelectField.ts +2 -2
  217. package/src/server/plugins/engine/components/SelectionControlField.ts +4 -4
  218. package/src/server/plugins/engine/components/TelephoneNumberField.ts +4 -4
  219. package/src/server/plugins/engine/components/TextField.ts +3 -3
  220. package/src/server/plugins/engine/components/UkAddressField.ts +7 -7
  221. package/src/server/plugins/engine/components/YesNoField.ts +5 -5
  222. package/src/server/plugins/engine/components/helpers/__stubs__/geospatial.ts +1 -1
  223. package/src/server/plugins/engine/components/helpers/components.ts +8 -8
  224. package/src/server/plugins/engine/components/helpers/geospatial.ts +1 -1
  225. package/src/server/plugins/engine/components/index.ts +27 -27
  226. package/src/server/plugins/engine/components/types.ts +1 -1
  227. package/src/server/plugins/engine/configureEnginePlugin.ts +10 -10
  228. package/src/server/plugins/engine/date-helper.ts +1 -1
  229. package/src/server/plugins/engine/helpers.ts +8 -8
  230. package/src/server/plugins/engine/index.ts +8 -8
  231. package/src/server/plugins/engine/models/FormModel.ts +15 -15
  232. package/src/server/plugins/engine/models/SummaryViewModel.ts +10 -10
  233. package/src/server/plugins/engine/models/index.ts +2 -2
  234. package/src/server/plugins/engine/models/types.ts +4 -4
  235. package/src/server/plugins/engine/options.js +3 -3
  236. package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +6 -6
  237. package/src/server/plugins/engine/outputFormatters/human/v1.ts +9 -9
  238. package/src/server/plugins/engine/outputFormatters/index.ts +8 -8
  239. package/src/server/plugins/engine/outputFormatters/machine/v1.ts +7 -7
  240. package/src/server/plugins/engine/outputFormatters/machine/v2.ts +6 -6
  241. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +9 -9
  242. package/src/server/plugins/engine/pageControllers/PageController.ts +7 -7
  243. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +13 -13
  244. package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +6 -6
  245. package/src/server/plugins/engine/pageControllers/StartPageController.ts +3 -3
  246. package/src/server/plugins/engine/pageControllers/StatusPageController.ts +5 -5
  247. package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +12 -12
  248. package/src/server/plugins/engine/pageControllers/TerminalPageController.ts +3 -3
  249. package/src/server/plugins/engine/pageControllers/__stubs__/request.ts +3 -3
  250. package/src/server/plugins/engine/pageControllers/__stubs__/server.ts +2 -2
  251. package/src/server/plugins/engine/pageControllers/errors.ts +1 -1
  252. package/src/server/plugins/engine/pageControllers/helpers/pages.ts +2 -2
  253. package/src/server/plugins/engine/pageControllers/helpers/state.ts +9 -9
  254. package/src/server/plugins/engine/pageControllers/helpers/submission.ts +5 -5
  255. package/src/server/plugins/engine/pageControllers/index.ts +7 -7
  256. package/src/server/plugins/engine/pageControllers/validationOptions.ts +1 -1
  257. package/src/server/plugins/engine/plugin.ts +14 -14
  258. package/src/server/plugins/engine/routes/file-upload.ts +2 -2
  259. package/src/server/plugins/engine/routes/index.ts +10 -10
  260. package/src/server/plugins/engine/routes/payment-helper.js +4 -4
  261. package/src/server/plugins/engine/routes/payment.js +9 -9
  262. package/src/server/plugins/engine/routes/questions.ts +10 -10
  263. package/src/server/plugins/engine/routes/repeaters/item-delete.ts +6 -6
  264. package/src/server/plugins/engine/routes/repeaters/summary.ts +5 -5
  265. package/src/server/plugins/engine/services/formSubmissionService.js +2 -2
  266. package/src/server/plugins/engine/services/index.js +3 -3
  267. package/src/server/plugins/engine/services/localFormsService.js +2 -2
  268. package/src/server/plugins/engine/services/notifyService.ts +9 -9
  269. package/src/server/plugins/engine/services/uploadService.js +3 -3
  270. package/src/server/plugins/engine/types/index.ts +10 -10
  271. package/src/server/plugins/engine/types/schema.ts +2 -2
  272. package/src/server/plugins/engine/types.ts +22 -17
  273. package/src/server/plugins/engine/validationHelpers.ts +3 -3
  274. package/src/server/plugins/engine/vision.ts +3 -3
  275. package/src/server/plugins/map/index.js +2 -2
  276. package/src/server/plugins/map/routes/get-os-token.js +15 -3
  277. package/src/server/plugins/map/routes/index.js +7 -5
  278. package/src/server/plugins/map/routes/vts/esri-aerial.json +23 -0
  279. package/src/server/plugins/map/service.js +7 -4
  280. package/src/server/plugins/map/test/__stubs__/find.js +1 -1
  281. package/src/server/plugins/nunjucks/context.js +5 -5
  282. package/src/server/plugins/nunjucks/environment.js +6 -6
  283. package/src/server/plugins/nunjucks/filters/answer.js +3 -3
  284. package/src/server/plugins/nunjucks/filters/evaluate.js +2 -2
  285. package/src/server/plugins/nunjucks/filters/field.js +1 -1
  286. package/src/server/plugins/nunjucks/filters/href.js +2 -2
  287. package/src/server/plugins/nunjucks/filters/index.js +8 -8
  288. package/src/server/plugins/nunjucks/filters/page.js +1 -1
  289. package/src/server/plugins/nunjucks/index.js +3 -3
  290. package/src/server/plugins/nunjucks/plugin.js +3 -3
  291. package/src/server/plugins/nunjucks/render.js +2 -2
  292. package/src/server/plugins/nunjucks/types.js +1 -1
  293. package/src/server/plugins/payment/helper.js +2 -2
  294. package/src/server/plugins/payment/service.js +4 -4
  295. package/src/server/plugins/postcode-lookup/index.js +2 -2
  296. package/src/server/plugins/postcode-lookup/models/index.js +3 -3
  297. package/src/server/plugins/postcode-lookup/routes/index.js +24 -14
  298. package/src/server/plugins/postcode-lookup/service.js +7 -4
  299. package/src/server/plugins/postcode-lookup/types.js +1 -1
  300. package/src/server/plugins/session.ts +1 -1
  301. package/src/server/routes/index.ts +2 -2
  302. package/src/server/routes/public.ts +1 -1
  303. package/src/server/routes/types.ts +1 -1
  304. package/src/server/schemas/index.ts +2 -2
  305. package/src/server/secure-context.js +1 -1
  306. package/src/server/services/cacheService.ts +13 -18
  307. package/src/server/services/httpService.ts +1 -1
  308. package/src/server/services/index.ts +1 -1
  309. package/src/server/types.ts +7 -7
  310. package/src/server/utils/notify.ts +2 -2
  311. package/src/server/utils/utils.js +1 -1
  312. package/src/typings/hapi/index.d.ts +4 -4
  313. package/src/typings/joi/index.d.ts +1 -1
  314. package/src/server/common/helpers/logging/logger-options.test.ts +0 -50
  315. package/src/server/index.test.ts +0 -644
  316. package/src/server/plugins/engine/beta/form-context.test.ts +0 -373
  317. package/src/server/plugins/engine/components/AutocompleteField.test.ts +0 -362
  318. package/src/server/plugins/engine/components/CheckboxesField.test.ts +0 -486
  319. package/src/server/plugins/engine/components/DatePartsField.test.ts +0 -927
  320. package/src/server/plugins/engine/components/DeclarationField.test.ts +0 -560
  321. package/src/server/plugins/engine/components/Details.test.ts +0 -49
  322. package/src/server/plugins/engine/components/EastingNorthingField.test.ts +0 -727
  323. package/src/server/plugins/engine/components/EmailAddressField.test.ts +0 -445
  324. package/src/server/plugins/engine/components/FileUploadField.test.ts +0 -1079
  325. package/src/server/plugins/engine/components/GeospatialField.test.ts +0 -380
  326. package/src/server/plugins/engine/components/HiddenField.test.ts +0 -188
  327. package/src/server/plugins/engine/components/Html.test.ts +0 -48
  328. package/src/server/plugins/engine/components/InsetText.test.ts +0 -48
  329. package/src/server/plugins/engine/components/LatLongField.test.ts +0 -898
  330. package/src/server/plugins/engine/components/List.test.ts +0 -79
  331. package/src/server/plugins/engine/components/LocationFieldBase.test.ts +0 -253
  332. package/src/server/plugins/engine/components/LocationFieldHelpers.test.ts +0 -743
  333. package/src/server/plugins/engine/components/Markdown.test.ts +0 -48
  334. package/src/server/plugins/engine/components/MonthYearField.test.ts +0 -617
  335. package/src/server/plugins/engine/components/MultilineTextField.test.ts +0 -647
  336. package/src/server/plugins/engine/components/NationalGridFieldNumberField.test.ts +0 -449
  337. package/src/server/plugins/engine/components/NumberField.test.ts +0 -723
  338. package/src/server/plugins/engine/components/OsGridRefField.test.ts +0 -460
  339. package/src/server/plugins/engine/components/PaymentField.test.ts +0 -745
  340. package/src/server/plugins/engine/components/RadiosField.test.ts +0 -297
  341. package/src/server/plugins/engine/components/SelectField.test.ts +0 -289
  342. package/src/server/plugins/engine/components/TelephoneNumberField.test.ts +0 -384
  343. package/src/server/plugins/engine/components/TextField.test.ts +0 -521
  344. package/src/server/plugins/engine/components/UkAddressField.test.ts +0 -806
  345. package/src/server/plugins/engine/components/YesNoField.test.ts +0 -256
  346. package/src/server/plugins/engine/components/helpers/components.test.ts +0 -399
  347. package/src/server/plugins/engine/components/helpers/geospatial.test.js +0 -55
  348. package/src/server/plugins/engine/components/helpers/helpers.test.ts +0 -219
  349. package/src/server/plugins/engine/date-helper.test.ts +0 -47
  350. package/src/server/plugins/engine/helpers.test.ts +0 -868
  351. package/src/server/plugins/engine/models/FormModel.test.ts +0 -725
  352. package/src/server/plugins/engine/models/SummaryViewModel.test.ts +0 -472
  353. package/src/server/plugins/engine/options.test.js +0 -63
  354. package/src/server/plugins/engine/outputFormatters/adapter/v1.location.test.ts +0 -356
  355. package/src/server/plugins/engine/outputFormatters/adapter/v1.test.ts +0 -871
  356. package/src/server/plugins/engine/outputFormatters/human/v1.payment.test.ts +0 -147
  357. package/src/server/plugins/engine/outputFormatters/human/v1.test.ts +0 -145
  358. package/src/server/plugins/engine/outputFormatters/index.test.ts +0 -17
  359. package/src/server/plugins/engine/outputFormatters/machine/v1.test.ts +0 -268
  360. package/src/server/plugins/engine/outputFormatters/machine/v2.location.test.ts +0 -341
  361. package/src/server/plugins/engine/outputFormatters/machine/v2.payment.test.ts +0 -115
  362. package/src/server/plugins/engine/outputFormatters/machine/v2.test.ts +0 -311
  363. package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +0 -1372
  364. package/src/server/plugins/engine/pageControllers/PageController.test.ts +0 -246
  365. package/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +0 -1686
  366. package/src/server/plugins/engine/pageControllers/RepeatPageController.test.ts +0 -279
  367. package/src/server/plugins/engine/pageControllers/StartPageController.test.ts +0 -32
  368. package/src/server/plugins/engine/pageControllers/StatusPageController.test.ts +0 -32
  369. package/src/server/plugins/engine/pageControllers/SummaryPageController.test.ts +0 -89
  370. package/src/server/plugins/engine/pageControllers/TerminalController.test.ts +0 -37
  371. package/src/server/plugins/engine/pageControllers/errors.test.ts +0 -78
  372. package/src/server/plugins/engine/pageControllers/helpers/helpers.test.ts +0 -182
  373. package/src/server/plugins/engine/pageControllers/helpers/state.test.ts +0 -359
  374. package/src/server/plugins/engine/pageControllers/helpers/submission.test.ts +0 -373
  375. package/src/server/plugins/engine/referenceNumbers.test.ts +0 -74
  376. package/src/server/plugins/engine/routes/index.test.ts +0 -332
  377. package/src/server/plugins/engine/routes/payment-helper.test.js +0 -136
  378. package/src/server/plugins/engine/routes/payment.test.js +0 -180
  379. package/src/server/plugins/engine/routes/questions.test.ts +0 -502
  380. package/src/server/plugins/engine/routes/repeaters/item-delete.test.ts +0 -83
  381. package/src/server/plugins/engine/routes/repeaters/summary.test.ts +0 -75
  382. package/src/server/plugins/engine/services/formsService.test.js +0 -26
  383. package/src/server/plugins/engine/services/notifyService.test.ts +0 -310
  384. package/src/server/plugins/engine/types/schema.test.ts +0 -234
  385. package/src/server/plugins/engine/views/components/service-banner/template.test.js +0 -43
  386. package/src/server/plugins/engine/views/components/tag-env/template.test.js +0 -28
  387. package/src/server/plugins/engine/views/partials/preview-banner.test.js +0 -122
  388. package/src/server/plugins/map/routes/get-os-token.test.js +0 -55
  389. package/src/server/plugins/map/service.test.js +0 -144
  390. package/src/server/plugins/nunjucks/context.test.js +0 -109
  391. package/src/server/plugins/nunjucks/enviroment.test.js +0 -207
  392. package/src/server/plugins/nunjucks/filters/answer.test.js +0 -92
  393. package/src/server/plugins/nunjucks/filters/field.test.js +0 -75
  394. package/src/server/plugins/nunjucks/filters/href.test.js +0 -80
  395. package/src/server/plugins/nunjucks/filters/merge.test.js +0 -15
  396. package/src/server/plugins/nunjucks/filters/page.test.js +0 -65
  397. package/src/server/plugins/payment/helper.test.js +0 -29
  398. package/src/server/plugins/payment/service.test.js +0 -218
  399. package/src/server/plugins/postcode-lookup/service.test.js +0 -177
  400. package/src/server/postcode-lookup.test.ts +0 -64
  401. package/src/server/routes/dummy-api.test.ts +0 -97
  402. package/src/server/services/cacheService.test.ts +0 -308
  403. package/src/server/services/httpService.test.js +0 -491
  404. package/src/server/utils/file-form-service.test.js +0 -127
  405. package/src/server/utils/notify.test.ts +0 -37
  406. package/src/server/utils/secure-context/get-trust-store-certs.test.js +0 -19
  407. package/src/server/utils/utils.test.js +0 -69
@@ -1,472 +0,0 @@
1
- import {
2
- type FormDefinition,
3
- type PageQuestion,
4
- type RadiosFieldComponent
5
- } from '@defra/forms-model'
6
-
7
- import { FORM_PREFIX } from '~/src/server/constants.js'
8
- import {
9
- FormModel,
10
- SummaryViewModel
11
- } from '~/src/server/plugins/engine/models/index.js'
12
- import { SummaryPageController } from '~/src/server/plugins/engine/pageControllers/SummaryPageController.js'
13
- import { buildFormContextRequest } from '~/src/server/plugins/engine/pageControllers/__stubs__/request.js'
14
- import { serverWithSaveAndExit } from '~/src/server/plugins/engine/pageControllers/__stubs__/server.js'
15
- import {
16
- createPage,
17
- type PageControllerClass
18
- } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js'
19
- import {
20
- type FormContext,
21
- type FormContextRequest,
22
- type FormState
23
- } from '~/src/server/plugins/engine/types.js'
24
- import v2Definition from '~/test/form/definitions/conditions-relative-dates-v2.js'
25
- import definition from '~/test/form/definitions/repeat-mixed.js'
26
- const basePath = `${FORM_PREFIX}/test`
27
-
28
- describe('SummaryViewModel', () => {
29
- const itemId1 = 'abc-123'
30
- const itemId2 = 'xyz-987'
31
-
32
- let model: FormModel
33
- let page: PageControllerClass
34
- let pageUrl: URL
35
- let request: FormContextRequest
36
- let context: FormContext
37
- let summaryViewModel: SummaryViewModel
38
-
39
- beforeEach(() => {
40
- model = new FormModel(definition, {
41
- basePath: `${FORM_PREFIX}/test`
42
- })
43
-
44
- page = createPage(model, definition.pages[2])
45
- pageUrl = new URL('http://example.com/repeat/pizza-order/summary')
46
-
47
- request = buildFormContextRequest({
48
- method: 'get',
49
- url: pageUrl,
50
- path: pageUrl.pathname,
51
- params: {
52
- path: 'pizza-order',
53
- slug: 'repeat'
54
- },
55
- query: {},
56
- app: { model }
57
- })
58
- })
59
-
60
- describe.each([
61
- {
62
- description: '0 items',
63
- state: {
64
- $$__referenceNumber: 'foobar',
65
- orderType: 'collection',
66
- pizza: []
67
- } satisfies FormState,
68
- keys: [
69
- 'How would you like to receive your pizza?',
70
- 'Pizza',
71
- 'How you would like to receive your pizza',
72
- 'Pizza',
73
- 'Pizza'
74
- ],
75
- values: ['Collection', 'Not provided'],
76
- answers: ['Collection', ''],
77
- names: ['orderType', 'pizza']
78
- },
79
- {
80
- description: '1 item',
81
- state: {
82
- $$__referenceNumber: 'foobar',
83
- orderType: 'delivery',
84
- pizza: [
85
- {
86
- toppings: 'Ham',
87
- quantity: 2,
88
- itemId: itemId1
89
- }
90
- ]
91
- } satisfies FormState,
92
- keys: [
93
- 'How would you like to receive your pizza?',
94
- 'Pizza',
95
- 'How you would like to receive your pizza',
96
- 'Pizza',
97
- 'Pizza'
98
- ],
99
- values: ['Delivery', 'You have added 1 answer'],
100
- answers: ['Delivery', 'You have added 1 answer'],
101
- names: ['orderType', 'pizza']
102
- },
103
- {
104
- description: '2 items',
105
- state: {
106
- $$__referenceNumber: 'foobar',
107
- orderType: 'delivery',
108
- pizza: [
109
- {
110
- toppings: 'Ham',
111
- quantity: 2,
112
- itemId: itemId1
113
- },
114
- {
115
- toppings: 'Pepperoni',
116
- quantity: 1,
117
- itemId: itemId2
118
- }
119
- ]
120
- } satisfies FormState,
121
- keys: [
122
- 'How would you like to receive your pizza?',
123
- 'Pizza',
124
- 'How you would like to receive your pizza',
125
- 'Pizza',
126
- 'Pizza'
127
- ],
128
- values: ['Delivery', 'You have added 2 answers'],
129
- answers: ['Delivery', 'You have added 2 answers'],
130
- names: ['orderType', 'pizza']
131
- }
132
- ])(
133
- 'Check answers ($description)',
134
- ({ state, keys, values, names, answers }) => {
135
- beforeEach(() => {
136
- context = model.getFormContext(request, state)
137
- summaryViewModel = new SummaryViewModel(request, page, context)
138
- })
139
-
140
- it('should add title for each section', () => {
141
- const [checkAnswers1, checkAnswers2] = summaryViewModel.checkAnswers
142
-
143
- // 1st summary list has section title
144
- expect(checkAnswers1).toHaveProperty('title', {
145
- text: 'Food'
146
- })
147
-
148
- // 2nd summary list has no title (unsectioned questions at bottom)
149
- expect(checkAnswers2).toHaveProperty('title', undefined)
150
- })
151
-
152
- it('should add summary list for each section', () => {
153
- expect(summaryViewModel.checkAnswers).toHaveLength(2)
154
-
155
- const [checkAnswers1, checkAnswers2] = summaryViewModel.checkAnswers
156
-
157
- const { summaryList: summaryList1 } = checkAnswers1
158
- const { summaryList: summaryList2 } = checkAnswers2
159
-
160
- // 1st summary list contains sectioned questions (Food section)
161
- expect(summaryList1).toHaveProperty('rows', [
162
- {
163
- key: {
164
- text: keys[1]
165
- },
166
- value: {
167
- classes: 'app-prose-scope',
168
- html: values[1]
169
- },
170
- actions: {
171
- items: [
172
- {
173
- classes: 'govuk-link--no-visited-state',
174
- href: `${basePath}/pizza-order/summary?returnUrl=${encodeURIComponent(`${basePath}/summary`)}`,
175
- text: 'Change',
176
- visuallyHiddenText: 'Pizza'
177
- }
178
- ]
179
- }
180
- }
181
- ])
182
-
183
- // 2nd summary list contains unsectioned questions (at bottom)
184
- expect(summaryList2).toHaveProperty('rows', [
185
- {
186
- key: {
187
- text: keys[2]
188
- },
189
- value: {
190
- classes: 'app-prose-scope',
191
- html: values[0]
192
- },
193
- actions: {
194
- items: [
195
- {
196
- classes: 'govuk-link--no-visited-state',
197
- href: `${basePath}/delivery-or-collection?returnUrl=${encodeURIComponent(`${basePath}/summary`)}`,
198
- text: 'Change',
199
- visuallyHiddenText: keys[0]
200
- }
201
- ]
202
- }
203
- }
204
- ])
205
- })
206
-
207
- it('should add summary list for each section (preview URL direct access)', () => {
208
- request.query.force = '' // Preview URL '?force'
209
- context = model.getFormContext(request, state)
210
- summaryViewModel = new SummaryViewModel(request, page, context)
211
-
212
- expect(summaryViewModel.checkAnswers).toHaveLength(2)
213
-
214
- const [checkAnswers1, checkAnswers2] = summaryViewModel.checkAnswers
215
-
216
- const { summaryList: summaryList1 } = checkAnswers1
217
- const { summaryList: summaryList2 } = checkAnswers2
218
-
219
- // 1st summary list contains sectioned questions (Food section)
220
- expect(summaryList1).toHaveProperty('rows', [
221
- {
222
- key: {
223
- text: keys[1]
224
- },
225
- value: {
226
- classes: 'app-prose-scope',
227
- html: values[1]
228
- },
229
- actions: {
230
- items: []
231
- }
232
- }
233
- ])
234
-
235
- // 2nd summary list contains unsectioned questions (at bottom)
236
- expect(summaryList2).toHaveProperty('rows', [
237
- {
238
- key: {
239
- text: keys[2]
240
- },
241
- value: {
242
- classes: 'app-prose-scope',
243
- html: values[0]
244
- },
245
- actions: {
246
- items: []
247
- }
248
- }
249
- ])
250
- })
251
-
252
- it('should use correct summary labels', () => {
253
- request.query.force = '' // Preview URL '?force'
254
- context = model.getFormContext(request, state)
255
- summaryViewModel = new SummaryViewModel(request, page, context)
256
-
257
- expect(summaryViewModel.details).toHaveLength(2)
258
-
259
- const [details1, details2] = summaryViewModel.details
260
-
261
- // 1st details contains sectioned questions (Food section)
262
- expect(details1.items[0]).toMatchObject({
263
- name: names[1],
264
- value: answers[1],
265
- title: keys[1],
266
- label: keys[4]
267
- })
268
-
269
- // 2nd details contains unsectioned questions (at bottom)
270
- expect(details2.items[0]).toMatchObject({
271
- name: names[0],
272
- value: answers[0],
273
- title: keys[2],
274
- label: keys[0]
275
- })
276
-
277
- const snapshot = [
278
- {
279
- name: names[1],
280
- value: answers[1],
281
- title: keys[1],
282
- label: keys[4]
283
- },
284
- {
285
- name: names[0],
286
- value: answers[0],
287
- title: keys[2],
288
- label: keys[0]
289
- }
290
- ]
291
-
292
- expect(snapshot).toMatchSnapshot()
293
- })
294
- }
295
- )
296
-
297
- it('should use correct summary labels', () => {
298
- request.query.force = '' // Preview URL '?force'
299
- const state = {
300
- $$__referenceNumber: 'foobar',
301
- orderType: 'collection',
302
- pizza: []
303
- } satisfies FormState
304
-
305
- // Setup an optional question
306
- const definitionOptional = structuredClone(definition) as FormDefinition
307
- const firstPage = definitionOptional.pages[0] as PageQuestion
308
- const firstComponent = firstPage.components[0] as RadiosFieldComponent
309
- firstComponent.options.required = false
310
-
311
- const model = new FormModel(definitionOptional, {
312
- basePath: `${FORM_PREFIX}/test`
313
- })
314
-
315
- context = model.getFormContext(request, state)
316
-
317
- const page = createPage(model, definition.pages[2])
318
-
319
- summaryViewModel = new SummaryViewModel(request, page, context)
320
-
321
- expect(summaryViewModel.details).toHaveLength(2)
322
-
323
- const [details1, details2] = summaryViewModel.details
324
-
325
- // 1st details contains sectioned questions (Food section)
326
- expect(details1.items[0]).toMatchObject({
327
- name: 'pizza',
328
- value: '',
329
- title: 'Pizza',
330
- label: 'Pizza'
331
- })
332
-
333
- // 2nd details contains unsectioned questions (at bottom)
334
- expect(details2.items[0]).toMatchObject({
335
- name: 'orderType',
336
- value: 'Collection',
337
- title: 'How you would like to receive your pizza (optional)',
338
- label: 'How would you like to receive your pizza?'
339
- })
340
- })
341
- })
342
-
343
- describe('SummaryPageController', () => {
344
- let model: FormModel
345
- let controller: SummaryPageController
346
- let request: FormContextRequest
347
-
348
- beforeEach(() => {
349
- model = new FormModel(definition, {
350
- basePath: `${FORM_PREFIX}/test`
351
- })
352
-
353
- controller = new SummaryPageController(model, definition.pages[2])
354
-
355
- request = {
356
- method: 'get',
357
- url: new URL('http://example.com/repeat/pizza-order/summary'),
358
- path: '/repeat/pizza-order/summary',
359
- params: {
360
- path: 'pizza-order',
361
- slug: 'repeat'
362
- },
363
- query: {},
364
- app: { model },
365
- server: serverWithSaveAndExit
366
- }
367
- })
368
-
369
- describe('Save and Exit functionality', () => {
370
- it('should show save and exit button on summary page', () => {
371
- expect(controller.shouldShowSaveAndExit(request.server)).toBe(true)
372
- })
373
-
374
- it('should handle save and exit from summary page', () => {
375
- const state: FormState = {
376
- $$__referenceNumber: 'foobar',
377
- orderType: 'collection',
378
- pizza: []
379
- }
380
-
381
- const context = model.getFormContext(request, state)
382
- const viewModel = controller.getViewModel(request, context)
383
-
384
- expect(viewModel).toHaveProperty('allowSaveAndExit', true)
385
- })
386
-
387
- it('should display correct page title for v1 form', () => {
388
- const state: FormState = {
389
- $$__referenceNumber: 'foobar',
390
- orderType: 'collection',
391
- pizza: []
392
- }
393
-
394
- const context = model.getFormContext(request, state)
395
- const viewModel = controller.getSummaryViewModel(request, context)
396
-
397
- expect(viewModel.pageTitle).toBe(
398
- 'Check your answers before sending your form'
399
- )
400
- })
401
-
402
- it('should display default page title for v2 form when title not provided', () => {
403
- const state: FormState = {
404
- $$__referenceNumber: 'foobar',
405
- orderType: 'collection',
406
- pizza: []
407
- }
408
-
409
- const titleModel = new FormModel(v2Definition, {
410
- basePath: `${FORM_PREFIX}/test`
411
- })
412
-
413
- controller = new SummaryPageController(titleModel, v2Definition.pages[5])
414
-
415
- request = {
416
- method: 'get',
417
- url: new URL('http://example.com/repeat/pizza-order/summary'),
418
- path: '/test/summary',
419
- params: {
420
- path: 'summary',
421
- slug: 'test'
422
- },
423
- query: {},
424
- app: { model: titleModel },
425
- server: serverWithSaveAndExit
426
- }
427
-
428
- const context = titleModel.getFormContext(request, state)
429
- const viewModel = controller.getSummaryViewModel(request, context)
430
-
431
- expect(viewModel.pageTitle).toBe(
432
- 'Check your answers before sending your form'
433
- )
434
- })
435
-
436
- it('should display override page title for v2 form when title supplied', () => {
437
- const state: FormState = {
438
- $$__referenceNumber: 'foobar',
439
- orderType: 'collection',
440
- pizza: []
441
- }
442
-
443
- const v2DefinitionWithSummaryTitle = structuredClone(v2Definition)
444
- const summaryPage = v2DefinitionWithSummaryTitle.pages[5]
445
- summaryPage.title = 'Override summary title'
446
-
447
- const titleModel = new FormModel(v2DefinitionWithSummaryTitle, {
448
- basePath: `${FORM_PREFIX}/test`
449
- })
450
-
451
- controller = new SummaryPageController(titleModel, summaryPage)
452
-
453
- request = {
454
- method: 'get',
455
- url: new URL('http://example.com/repeat/pizza-order/summary'),
456
- path: '/test/summary',
457
- params: {
458
- path: 'summary',
459
- slug: 'test'
460
- },
461
- query: {},
462
- app: { model: titleModel },
463
- server: serverWithSaveAndExit
464
- }
465
-
466
- const context = titleModel.getFormContext(request, state)
467
- const viewModel = controller.getSummaryViewModel(request, context)
468
-
469
- expect(viewModel.pageTitle).toBe('Override summary title')
470
- })
471
- })
472
- })
@@ -1,63 +0,0 @@
1
- import { validatePluginOptions } from '~/src/server/plugins/engine/options.js'
2
-
3
- describe('validatePluginOptions', () => {
4
- it('returns the validated value for valid options', () => {
5
- /**
6
- * @type {PluginOptions}
7
- */
8
- const validOptions = {
9
- nunjucks: {
10
- baseLayoutPath: 'dxt-devtool-baselayout.html',
11
- paths: ['src/server/devserver'] // custom layout to make it really clear this is not the same as the runner
12
- },
13
- viewContext: () => {
14
- return { hello: 'world' }
15
- },
16
- baseUrl: 'http://localhost:3009'
17
- }
18
-
19
- expect(validatePluginOptions(validOptions)).toEqual(validOptions)
20
- })
21
-
22
- it('accepts optional property saveAndExit', () => {
23
- /**
24
- * @type {PluginOptions}
25
- */
26
- const validOptionsWithOptionals = {
27
- nunjucks: {
28
- baseLayoutPath: 'dxt-devtool-baselayout.html',
29
- paths: ['src/server/devserver']
30
- },
31
- viewContext: () => {
32
- return { hello: 'world' }
33
- },
34
- baseUrl: 'http://localhost:3009',
35
- saveAndExit: (request, h) => h.redirect('/save-and-exit')
36
- }
37
-
38
- expect(validatePluginOptions(validOptionsWithOptionals)).toEqual(
39
- validOptionsWithOptionals
40
- )
41
- })
42
-
43
- /**
44
- * tsc would usually check compliance with the type, but given a user might be using plain JS we still want a test
45
- */
46
- it('fails if a required attribute is missing', () => {
47
- const invalidOptions =
48
- /** @type {PluginOptions} testing without viewContext */ ({
49
- nunjucks: {
50
- baseLayoutPath: 'dxt-devtool-baselayout.html',
51
- paths: ['src/server/devserver'] // custom layout to make it really clear this is not the same as the runner
52
- }
53
- })
54
-
55
- expect(() => validatePluginOptions(invalidOptions)).toThrow(
56
- 'Invalid plugin options'
57
- )
58
- })
59
- })
60
-
61
- /**
62
- * @import { PluginOptions } from '~/src/server/plugins/engine/types.js'
63
- */