@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,122 +0,0 @@
1
- import { FormStatus } from '~/src/server/routes/types.js'
2
- import { renderView } from '~/test/helpers/component-helpers.js'
3
-
4
- describe('Preview banner partial', () => {
5
- describe.each([
6
- {
7
- status: FormStatus.Draft
8
- },
9
- {
10
- status: FormStatus.Live
11
- }
12
- ])('Status: $status', ({ status }) => {
13
- let $component = /** @type {HTMLElement | null} */ (null)
14
- let $paragraphs = /** @type {HTMLElement[]} */ ([])
15
-
16
- describe('Form preview', () => {
17
- beforeEach(() => {
18
- const { container } = renderView('partials/preview-banner.html', {
19
- context: {
20
- previewMode: status,
21
- context: {
22
- isForceAccess: false,
23
- relevantPages: [{ title: 'Page 1' }]
24
- }
25
- }
26
- })
27
-
28
- $component = container.getByRole('region')
29
- $paragraphs = container.getAllByRole('paragraph')
30
- })
31
-
32
- it('should render contents', () => {
33
- expect($component).toBeInTheDocument()
34
- expect($component).toContainElement($paragraphs[0])
35
- expect($component).toHaveClass('govuk-notification-banner')
36
-
37
- expect($paragraphs).toHaveLength(1)
38
- expect($paragraphs[0]).toHaveClass('govuk-notification-banner__heading')
39
- })
40
-
41
- it('should have accessible name', () => {
42
- expect($component).toHaveAccessibleName('Important')
43
- })
44
-
45
- it('should have text content', () => {
46
- expect($paragraphs[0]).toHaveTextContent(
47
- `This is a preview of a ${status} form. Do not enter personal information.`
48
- )
49
- })
50
- })
51
-
52
- describe('Preview URL direct access', () => {
53
- beforeEach(() => {
54
- const { container } = renderView('partials/preview-banner.html', {
55
- context: {
56
- previewMode: status,
57
- context: {
58
- isForceAccess: true,
59
- relevantPages: [{ title: 'Page 1' }]
60
- }
61
- }
62
- })
63
-
64
- $component = container.getByRole('region')
65
- $paragraphs = container.getAllByRole('paragraph')
66
- })
67
-
68
- it('should have text content', () => {
69
- expect($paragraphs[0]).toHaveTextContent(
70
- `This is a preview of a ${status} form page you are editing.`
71
- )
72
-
73
- expect($paragraphs[1]).toBeUndefined()
74
- })
75
- })
76
-
77
- describe('Preview URL direct access (with previous pages)', () => {
78
- beforeEach(() => {
79
- const { container } = renderView('partials/preview-banner.html', {
80
- context: {
81
- previewMode: status,
82
- context: {
83
- isForceAccess: true,
84
- relevantPages: [
85
- { title: 'Page 1' },
86
- { title: 'Page 2' },
87
- { title: 'Page 3' }
88
- ]
89
- }
90
- }
91
- })
92
-
93
- $component = container.getByRole('region')
94
- $paragraphs = container.getAllByRole('paragraph')
95
- })
96
-
97
- it('should render contents', () => {
98
- expect($component).toBeInTheDocument()
99
- expect($component).toContainElement($paragraphs[0])
100
- expect($component).toHaveClass('govuk-notification-banner')
101
-
102
- expect($paragraphs).toHaveLength(2)
103
- expect($paragraphs[0]).toHaveClass('govuk-notification-banner__heading')
104
- expect($paragraphs[1]).toHaveClass('govuk-body')
105
- })
106
-
107
- it('should have accessible name', () => {
108
- expect($component).toHaveAccessibleName('Important')
109
- })
110
-
111
- it('should have text content', () => {
112
- expect($paragraphs[0]).toHaveTextContent(
113
- `This is a preview of a ${status} form page you are editing.`
114
- )
115
-
116
- expect($paragraphs[1]).toHaveTextContent(
117
- 'It depends on answers from earlier pages in the form. In the live version, users will need to complete those questions first.'
118
- )
119
- })
120
- })
121
- })
122
- })
@@ -1,55 +0,0 @@
1
- import { getAccessToken } from '~/src/server/plugins/map/routes/get-os-token.js'
2
- import { post } from '~/src/server/services/httpService.js'
3
-
4
- jest.mock('~/src/server/services/httpService.ts')
5
-
6
- describe('OS OAuth token', () => {
7
- describe('getAccessToken', () => {
8
- it('should get access token', async () => {
9
- jest.mocked(post).mockResolvedValueOnce({
10
- res: /** @type {IncomingMessage} */ ({
11
- statusCode: 200,
12
- headers: {}
13
- }),
14
- payload: {
15
- access_token: 'access_token',
16
- expires_in: '299',
17
- issued_at: '1770036762387',
18
- token_type: 'Bearer'
19
- },
20
- error: undefined
21
- })
22
-
23
- const token = await getAccessToken({
24
- ordnanceSurveyApiKey: 'apikey',
25
- ordnanceSurveyApiSecret: 'apisecret'
26
- })
27
-
28
- expect(token).toBe('access_token')
29
-
30
- expect(post).toHaveBeenCalledWith('https://api.os.uk/oauth2/token/v1', {
31
- headers: {
32
- Authorization: `Basic ${btoa('apikey:apisecret')}`,
33
- 'Content-Type': 'application/x-www-form-urlencoded'
34
- },
35
- payload: 'grant_type=client_credentials',
36
- json: true
37
- })
38
- expect(post).toHaveBeenCalledTimes(1)
39
- })
40
-
41
- it('should return an cached token', async () => {
42
- const token = await getAccessToken({
43
- ordnanceSurveyApiKey: 'apikey',
44
- ordnanceSurveyApiSecret: 'apisecret'
45
- })
46
-
47
- expect(token).toBe('access_token')
48
- expect(post).toHaveBeenCalledTimes(0)
49
- })
50
- })
51
- })
52
-
53
- /**
54
- * @import { IncomingMessage } from 'node:http'
55
- */
@@ -1,144 +0,0 @@
1
- import Boom from '@hapi/boom'
2
-
3
- import * as service from '~/src/server/plugins/map/service.js'
4
- import { result as findResult } from '~/src/server/plugins/map/test/__stubs__/find.js'
5
- import { result as nearestResult } from '~/src/server/plugins/map/test/__stubs__/nearest.js'
6
- import { getJson } from '~/src/server/services/httpService.js'
7
-
8
- jest.mock('~/src/server/services/httpService.ts')
9
-
10
- describe('Maps service', () => {
11
- describe('find', () => {
12
- it('should return entires', async () => {
13
- jest.mocked(getJson).mockResolvedValueOnce({
14
- res: /** @type {IncomingMessage} */ ({
15
- statusCode: 200,
16
- headers: {}
17
- }),
18
- payload: findResult,
19
- error: undefined
20
- })
21
-
22
- const { results } = await service.find('NW1 6XE', 'apikey')
23
-
24
- expect(results).toHaveLength(8)
25
- expect(results.at(1)).toEqual({
26
- GAZETTEER_ENTRY: {
27
- ID: 'NW26XE',
28
- NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW26XE',
29
- NAME1: 'NW2 6XE',
30
- TYPE: 'other',
31
- LOCAL_TYPE: 'Postcode',
32
- GEOMETRY_X: 523065,
33
- GEOMETRY_Y: 185795,
34
- MOST_DETAIL_VIEW_RES: 3500,
35
- LEAST_DETAIL_VIEW_RES: 18000,
36
- POPULATED_PLACE: 'London',
37
- POPULATED_PLACE_URI:
38
- 'http://data.ordnancesurvey.co.uk/id/4000000074813508',
39
- POPULATED_PLACE_TYPE:
40
- 'http://www.ordnancesurvey.co.uk/xml/codelists/localtype.xml#city',
41
- DISTRICT_BOROUGH: 'Brent',
42
- DISTRICT_BOROUGH_URI:
43
- 'http://data.ordnancesurvey.co.uk/id/7000000000011447',
44
- DISTRICT_BOROUGH_TYPE:
45
- 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough',
46
- COUNTY_UNITARY: 'Greater London',
47
- COUNTY_UNITARY_URI:
48
- 'http://data.ordnancesurvey.co.uk/id/7000000000041441',
49
- COUNTY_UNITARY_TYPE:
50
- 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority',
51
- REGION: 'London',
52
- REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428',
53
- COUNTRY: 'England',
54
- COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england'
55
- }
56
- })
57
- })
58
-
59
- it('should return an empty response when an error is encountered', async () => {
60
- jest.mocked(getJson).mockResolvedValueOnce({
61
- res: /** @type {IncomingMessage} */ ({
62
- statusCode: 300,
63
- headers: {}
64
- }),
65
- payload: undefined,
66
- error: new Error('Unknown error')
67
- })
68
-
69
- const { results } = await service.find('NW1 6XE', 'apikey')
70
-
71
- expect(results).toHaveLength(0)
72
- expect(results).toEqual([])
73
- })
74
-
75
- it('should return an empty response when a non 200 response is encountered', async () => {
76
- jest
77
- .mocked(getJson)
78
- .mockRejectedValueOnce(
79
- Boom.badRequest(
80
- 'OS API error',
81
- new Error('Invalid postcode segments')
82
- )
83
- )
84
-
85
- const { results } = await service.find('invalid postcode', 'apikey')
86
-
87
- expect(results).toHaveLength(0)
88
- expect(results).toEqual([])
89
- })
90
- })
91
-
92
- describe('nearest', () => {
93
- it('should return entries', async () => {
94
- jest.mocked(getJson).mockResolvedValueOnce({
95
- res: /** @type {IncomingMessage} */ ({
96
- statusCode: 200,
97
- headers: {}
98
- }),
99
- payload: nearestResult,
100
- error: undefined
101
- })
102
-
103
- const { results } = await service.nearest(700000, 1300000, 'apikey')
104
-
105
- expect(results).toHaveLength(1)
106
- expect(results.at(0)).toEqual({
107
- GAZETTEER_ENTRY: {
108
- ID: 'NW26XE',
109
- NAMES_URI: 'http://data.ordnancesurvey.co.uk/id/postcodeunit/NW26XE',
110
- NAME1: 'NW2 6XE',
111
- TYPE: 'other',
112
- LOCAL_TYPE: 'Postcode',
113
- GEOMETRY_X: 523065,
114
- GEOMETRY_Y: 185795,
115
- MOST_DETAIL_VIEW_RES: 3500,
116
- LEAST_DETAIL_VIEW_RES: 18000,
117
- POPULATED_PLACE: 'London',
118
- POPULATED_PLACE_URI:
119
- 'http://data.ordnancesurvey.co.uk/id/4000000074813508',
120
- POPULATED_PLACE_TYPE:
121
- 'http://www.ordnancesurvey.co.uk/xml/codelists/localtype.xml#city',
122
- DISTRICT_BOROUGH: 'Brent',
123
- DISTRICT_BOROUGH_URI:
124
- 'http://data.ordnancesurvey.co.uk/id/7000000000011447',
125
- DISTRICT_BOROUGH_TYPE:
126
- 'http://data.ordnancesurvey.co.uk/ontology/admingeo/LondonBorough',
127
- COUNTY_UNITARY: 'Greater London',
128
- COUNTY_UNITARY_URI:
129
- 'http://data.ordnancesurvey.co.uk/id/7000000000041441',
130
- COUNTY_UNITARY_TYPE:
131
- 'http://data.ordnancesurvey.co.uk/ontology/admingeo/GreaterLondonAuthority',
132
- REGION: 'London',
133
- REGION_URI: 'http://data.ordnancesurvey.co.uk/id/7000000000041428',
134
- COUNTRY: 'England',
135
- COUNTRY_URI: 'http://data.ordnancesurvey.co.uk/id/country/england'
136
- }
137
- })
138
- })
139
- })
140
- })
141
-
142
- /**
143
- * @import { IncomingMessage } from 'node:http'
144
- */
@@ -1,109 +0,0 @@
1
- import { tmpdir } from 'node:os'
2
-
3
- import {
4
- context,
5
- devtoolContext
6
- } from '~/src/server/plugins/nunjucks/context.js'
7
-
8
- describe('Nunjucks context', () => {
9
- beforeEach(() => jest.resetModules())
10
-
11
- describe('Asset path', () => {
12
- it("should include 'assetPath' for GOV.UK Frontend icons", () => {
13
- const { assetPath } = devtoolContext(null)
14
- expect(assetPath).toBe('/assets')
15
- })
16
- })
17
-
18
- describe('Asset helper', () => {
19
- it("should locate 'assets-manifest.json' assets", () => {
20
- const { getDxtAssetPath } = devtoolContext(null)
21
-
22
- expect(getDxtAssetPath('example.scss')).toBe(
23
- '/stylesheets/example.xxxxxxx.min.css'
24
- )
25
-
26
- expect(getDxtAssetPath('example.mjs')).toBe(
27
- '/javascripts/example.xxxxxxx.min.js'
28
- )
29
- })
30
-
31
- it("should return path when 'assets-manifest.json' is missing", async () => {
32
- await jest.isolateModulesAsync(async () => {
33
- const { config } = await import('~/src/config/index.js')
34
-
35
- // Import when isolated to avoid cache
36
- const { devtoolContext } =
37
- await import('~/src/server/plugins/nunjucks/context.js')
38
-
39
- // Update config for missing manifest
40
- config.set('publicDir', tmpdir())
41
- const { getDxtAssetPath } = devtoolContext(null)
42
-
43
- // Uses original paths when missing
44
- expect(getDxtAssetPath('example.scss')).toBe('/example.scss')
45
- expect(getDxtAssetPath('example.mjs')).toBe('/example.mjs')
46
- })
47
- })
48
-
49
- it('should return path to unknown assets', () => {
50
- const { getDxtAssetPath } = devtoolContext(null)
51
-
52
- expect(getDxtAssetPath('')).toBe('/')
53
- expect(getDxtAssetPath('example.jpg')).toBe('/example.jpg')
54
- expect(getDxtAssetPath('example.gif')).toBe('/example.gif')
55
- })
56
- })
57
-
58
- describe('Config', () => {
59
- it('should include environment, phase tag and service info', async () => {
60
- await expect(context(null)).rejects.toThrow(
61
- 'context called before plugin registered'
62
- )
63
- })
64
- })
65
-
66
- describe('Crumb', () => {
67
- it('should handle malformed requests with missing state', async () => {
68
- // While state should always exist in a valid Hapi request (it holds cookies),
69
- // we've seen malformed requests in production where it's missing
70
- const malformedRequest = /** @type {FormRequest} */ (
71
- /** @type {unknown} */ ({
72
- server: {
73
- plugins: {
74
- crumb: {
75
- generate: jest.fn()
76
- },
77
- 'forms-engine-plugin': {
78
- baseLayoutPath: 'randomValue'
79
- }
80
- }
81
- },
82
- plugins: {},
83
- route: {
84
- settings: {
85
- plugins: {}
86
- }
87
- },
88
- path: '/test',
89
- url: { search: '' },
90
- yar: {
91
- flash: jest.fn().mockReturnValue([]),
92
- commit: jest.fn()
93
- }
94
- // state intentionally omitted to test real malformed requests
95
- })
96
- )
97
-
98
- const { crumb } = await context(malformedRequest)
99
- expect(crumb).toBeUndefined()
100
- expect(
101
- malformedRequest.server.plugins.crumb.generate
102
- ).not.toHaveBeenCalled()
103
- })
104
- })
105
- })
106
-
107
- /**
108
- * @import { FormRequest } from '~/src/server/routes/types.js'
109
- */
@@ -1,207 +0,0 @@
1
- import * as helpers from '~/src/server/plugins/engine/helpers.js'
2
- import { environment } from '~/src/server/plugins/nunjucks/environment.js'
3
-
4
- describe('Nunjucks environment', () => {
5
- describe('checkErrorTemplates function', () => {
6
- /** @type {Function} */
7
- let checkErrorTemplates
8
-
9
- beforeEach(() => {
10
- checkErrorTemplates = environment.getGlobal('checkErrorTemplates')
11
-
12
- jest
13
- .spyOn(helpers, 'evaluateTemplate')
14
- .mockImplementation((text) => `evaluated-${text}`)
15
- })
16
-
17
- afterEach(() => {
18
- jest.restoreAllMocks()
19
- })
20
-
21
- test('returns errors unchanged when context is not present', () => {
22
- const nunjucksCtx = {
23
- ctx: {}
24
- }
25
-
26
- const errors = [{ text: 'Error 1' }, { text: 'Error 2' }]
27
-
28
- const result = checkErrorTemplates.call(nunjucksCtx, errors)
29
-
30
- expect(result).toBe(errors)
31
- expect(helpers.evaluateTemplate).not.toHaveBeenCalled()
32
- })
33
-
34
- test('evaluates error texts when context is present', () => {
35
- const formContext = { someData: 'some-text' }
36
- const nunjucksCtx = {
37
- ctx: { context: formContext }
38
- }
39
-
40
- const errors = [{ text: 'Error 1' }, { text: 'Error 2' }]
41
-
42
- const result = checkErrorTemplates.call(nunjucksCtx, errors)
43
-
44
- expect(helpers.evaluateTemplate).toHaveBeenCalledTimes(2)
45
- expect(helpers.evaluateTemplate).toHaveBeenCalledWith(
46
- 'Error 1',
47
- formContext
48
- )
49
- expect(helpers.evaluateTemplate).toHaveBeenCalledWith(
50
- 'Error 2',
51
- formContext
52
- )
53
-
54
- expect(result).toEqual([
55
- { text: 'evaluated-Error 1' },
56
- { text: 'evaluated-Error 2' }
57
- ])
58
- })
59
- })
60
-
61
- describe('checkComponentTemplates function', () => {
62
- /** @type {Function} */
63
- let checkComponentTemplates
64
-
65
- beforeEach(() => {
66
- checkComponentTemplates = environment.getGlobal('checkComponentTemplates')
67
-
68
- jest
69
- .spyOn(helpers, 'evaluateTemplate')
70
- .mockImplementation((text) => `evaluated-${text}`)
71
- })
72
-
73
- afterEach(() => {
74
- jest.restoreAllMocks()
75
- })
76
-
77
- test('evaluates string content for Html components', () => {
78
- const formContext = { someData: 'some-text' }
79
- const nunjucksCtx = {
80
- ctx: { context: formContext }
81
- }
82
-
83
- const component = {
84
- type: 'Html',
85
- isFormComponent: false,
86
- model: {
87
- content: 'Some {{ context.someData }} content'
88
- }
89
- }
90
-
91
- const result = /** @type {{ model: { content: string } }} */ (
92
- checkComponentTemplates.call(nunjucksCtx, component)
93
- )
94
-
95
- expect(helpers.evaluateTemplate).toHaveBeenCalledWith(
96
- 'Some {{ context.someData }} content',
97
- formContext
98
- )
99
- expect(result.model.content).toBe(
100
- 'evaluated-Some {{ context.someData }} content'
101
- )
102
- })
103
-
104
- test('does not evaluate non-string content for Html components', () => {
105
- const formContext = { someData: 'some-text' }
106
- const nunjucksCtx = {
107
- ctx: { context: formContext }
108
- }
109
-
110
- const nonStringContent = { some: 'object' }
111
- const component = {
112
- type: 'Html',
113
- isFormComponent: false,
114
- model: {
115
- content: nonStringContent
116
- }
117
- }
118
-
119
- const result = /** @type {{ model: { content: string } }} */ (
120
- checkComponentTemplates.call(nunjucksCtx, component)
121
- )
122
-
123
- expect(helpers.evaluateTemplate).not.toHaveBeenCalled()
124
-
125
- expect(result.model.content).toBe(nonStringContent)
126
- })
127
-
128
- test('evaluates label text for form components', () => {
129
- const formContext = { someData: 'some-text' }
130
- const nunjucksCtx = {
131
- ctx: { context: formContext }
132
- }
133
-
134
- const component = {
135
- isFormComponent: true,
136
- model: {
137
- label: {
138
- text: 'Label with {{ context.someData }}'
139
- }
140
- }
141
- }
142
-
143
- const result = /** @type {{ model: { label?: { text: string } } }} */ (
144
- checkComponentTemplates.call(nunjucksCtx, component)
145
- )
146
-
147
- expect(helpers.evaluateTemplate).toHaveBeenCalledWith(
148
- 'Label with {{ context.someData }}',
149
- formContext
150
- )
151
-
152
- expect(result.model.label?.text).toBe(
153
- 'evaluated-Label with {{ context.someData }}'
154
- )
155
- })
156
- })
157
-
158
- describe('evaluate function', () => {
159
- /** @type {Function} */
160
- let evaluateFunc
161
-
162
- beforeEach(() => {
163
- evaluateFunc = environment.getGlobal('evaluate')
164
-
165
- jest
166
- .spyOn(helpers, 'evaluateTemplate')
167
- .mockImplementation((text) => `evaluated-${text}`)
168
- })
169
-
170
- afterEach(() => {
171
- jest.restoreAllMocks()
172
- })
173
-
174
- test('evaluates template when context is present', () => {
175
- const formContext = { someData: 'some-text' }
176
- const nunjucksCtx = {
177
- ctx: { context: formContext }
178
- }
179
-
180
- const template = 'Template with {{ context.someData }}'
181
- const result = evaluateFunc.call(nunjucksCtx, template)
182
-
183
- expect(helpers.evaluateTemplate).toHaveBeenCalledWith(
184
- template,
185
- formContext
186
- )
187
- expect(result).toBe('evaluated-Template with {{ context.someData }}')
188
- })
189
-
190
- test('returns template unchanged when context is not present', () => {
191
- const nunjucksCtx = {
192
- ctx: {}
193
- }
194
-
195
- const template = 'Template with {{ context.someData }}'
196
- const result = evaluateFunc.call(nunjucksCtx, template)
197
-
198
- expect(helpers.evaluateTemplate).not.toHaveBeenCalled()
199
-
200
- expect(result).toBe(template)
201
- })
202
- })
203
- })
204
-
205
- /*
206
- * @import { ComponentViewModel } from '~/src/server/plugins/engine/components/types.js'
207
- */