@defra/forms-engine-plugin 4.7.2 → 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,256 +0,0 @@
1
- import { ComponentType, type YesNoFieldComponent } from '@defra/forms-model'
2
-
3
- import { ComponentCollection } from '~/src/server/plugins/engine/components/ComponentCollection.js'
4
- import {
5
- getAnswer,
6
- type Field
7
- } from '~/src/server/plugins/engine/components/helpers/components.js'
8
- import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
9
- import { listYesNoExamples } from '~/test/fixtures/list.js'
10
- import definition from '~/test/form/definitions/blank.js'
11
- import { getFormData, getFormState } from '~/test/helpers/component-helpers.js'
12
-
13
- describe('YesNoField', () => {
14
- let def: YesNoFieldComponent
15
- let model: FormModel
16
- let collection: ComponentCollection
17
- let field: Field
18
-
19
- beforeEach(() => {
20
- def = {
21
- title: 'Example yes/no',
22
- name: 'myComponent',
23
- type: ComponentType.YesNoField,
24
- options: {}
25
- } satisfies YesNoFieldComponent
26
-
27
- model = new FormModel(definition, {
28
- basePath: 'test'
29
- })
30
-
31
- collection = new ComponentCollection([def], { model })
32
- field = collection.fields[0]
33
- })
34
-
35
- describe('Schema', () => {
36
- it('uses component title as label', () => {
37
- const { formSchema } = collection
38
- const { keys } = formSchema.describe()
39
-
40
- expect(keys).toHaveProperty(
41
- 'myComponent',
42
- expect.objectContaining({
43
- flags: expect.objectContaining({
44
- label: 'Example yes/no'
45
- })
46
- })
47
- )
48
- })
49
-
50
- it('uses component name as keys', () => {
51
- const { formSchema } = collection
52
- const { keys } = formSchema.describe()
53
-
54
- expect(field.keys).toEqual(['myComponent'])
55
- expect(field.collection).toBeUndefined()
56
-
57
- for (const key of field.keys) {
58
- expect(keys).toHaveProperty(key)
59
- }
60
- })
61
-
62
- it('is required by default', () => {
63
- const { formSchema } = collection
64
- const { keys } = formSchema.describe()
65
-
66
- expect(keys).toHaveProperty(
67
- 'myComponent',
68
- expect.objectContaining({
69
- flags: expect.objectContaining({
70
- presence: 'required'
71
- })
72
- })
73
- )
74
- })
75
-
76
- it('is optional when configured', () => {
77
- const collectionOptional = new ComponentCollection(
78
- [{ ...def, options: { required: false } }],
79
- { model }
80
- )
81
-
82
- const { formSchema } = collectionOptional
83
- const { keys } = formSchema.describe()
84
-
85
- expect(keys).toHaveProperty(
86
- 'myComponent',
87
- expect.objectContaining({
88
- flags: expect.objectContaining({
89
- presence: 'optional'
90
- })
91
- })
92
- )
93
-
94
- const result = collectionOptional.validate(getFormData())
95
- expect(result.errors).toBeUndefined()
96
- })
97
-
98
- it('is configured with radio items', () => {
99
- const { formSchema } = collection
100
- const { keys } = formSchema.describe()
101
-
102
- expect(keys).toHaveProperty(
103
- 'myComponent',
104
- expect.objectContaining({
105
- allow: [true, false],
106
- type: 'boolean'
107
- })
108
- )
109
- })
110
-
111
- it('accepts valid values', () => {
112
- const result1 = collection.validate(getFormData('true'))
113
- const result2 = collection.validate(getFormData('false'))
114
-
115
- expect(result1.errors).toBeUndefined()
116
- expect(result2.errors).toBeUndefined()
117
- })
118
-
119
- it('adds errors for empty value', () => {
120
- const result = collection.validate(getFormData())
121
-
122
- expect(result.errors).toEqual([
123
- expect.objectContaining({
124
- text: 'Example yes/no - select yes or no'
125
- })
126
- ])
127
- })
128
-
129
- it('adds errors for invalid values', () => {
130
- const result1 = collection.validate(getFormData('invalid'))
131
- const result2 = collection.validate(getFormData(['true']))
132
- const result3 = collection.validate(getFormData(['true', 'false']))
133
-
134
- expect(result1.errors).toBeTruthy()
135
- expect(result2.errors).toBeTruthy()
136
- expect(result3.errors).toBeTruthy()
137
- })
138
- })
139
-
140
- describe('State', () => {
141
- it('returns text from state', () => {
142
- const state1 = getFormState(true)
143
- const state2 = getFormState(false)
144
- const state3 = getFormState(null)
145
-
146
- const answer1 = getAnswer(field, state1)
147
- const answer2 = getAnswer(field, state2)
148
- const answer3 = getAnswer(field, state3)
149
-
150
- expect(answer1).toBe('Yes')
151
- expect(answer2).toBe('No')
152
- expect(answer3).toBe('')
153
- })
154
-
155
- it('returns payload from state', () => {
156
- const state1 = getFormState(true)
157
- const state2 = getFormState(false)
158
- const state3 = getFormState(null)
159
-
160
- const payload1 = field.getFormDataFromState(state1)
161
- const payload2 = field.getFormDataFromState(state2)
162
- const payload3 = field.getFormDataFromState(state3)
163
-
164
- expect(payload1).toEqual(getFormData(true))
165
- expect(payload2).toEqual(getFormData(false))
166
- expect(payload3).toEqual(getFormData())
167
- })
168
-
169
- it('returns value from state', () => {
170
- const state1 = getFormState(true)
171
- const state2 = getFormState(false)
172
- const state3 = getFormState(null)
173
-
174
- const value1 = field.getFormValueFromState(state1)
175
- const value2 = field.getFormValueFromState(state2)
176
- const value3 = field.getFormValueFromState(state3)
177
-
178
- expect(value1).toBe(true)
179
- expect(value2).toBe(false)
180
- expect(value3).toBeUndefined()
181
- })
182
-
183
- it('returns context for conditions and form submission', () => {
184
- const state1 = getFormState(true)
185
- const state2 = getFormState(false)
186
- const state3 = getFormState(null)
187
-
188
- const value1 = field.getContextValueFromState(state1)
189
- const value2 = field.getContextValueFromState(state2)
190
- const value3 = field.getContextValueFromState(state3)
191
-
192
- expect(value1).toBe(true)
193
- expect(value2).toBe(false)
194
- expect(value3).toBeNull()
195
- })
196
-
197
- it('returns state from payload', () => {
198
- const payload1 = getFormData(true)
199
- const payload2 = getFormData(false)
200
- const payload3 = getFormData()
201
-
202
- const value1 = field.getStateFromValidForm(payload1)
203
- const value2 = field.getStateFromValidForm(payload2)
204
- const value3 = field.getStateFromValidForm(payload3)
205
-
206
- expect(value1).toEqual(getFormState(true))
207
- expect(value2).toEqual(getFormState(false))
208
- expect(value3).toEqual(getFormState(null))
209
- })
210
- })
211
-
212
- describe('View model', () => {
213
- const items = listYesNoExamples
214
-
215
- it('sets Nunjucks component defaults', () => {
216
- const item = items[0]
217
-
218
- const viewModel = field.getViewModel(getFormData(item.value))
219
-
220
- expect(viewModel).toEqual(
221
- expect.objectContaining({
222
- label: { text: def.title },
223
- name: 'myComponent',
224
- id: 'myComponent',
225
- value: item.value
226
- })
227
- )
228
- })
229
-
230
- it.each([...items])('sets Nunjucks component radio items', (item) => {
231
- const viewModel = field.getViewModel(getFormData(item.value))
232
-
233
- expect(viewModel.items?.[0]).not.toMatchObject({
234
- value: '' // First item is never empty
235
- })
236
-
237
- expect(viewModel.items).toEqual(
238
- expect.arrayContaining([
239
- expect.objectContaining({
240
- text: item.text,
241
- value: item.value,
242
- checked: true
243
- })
244
- ])
245
- )
246
- })
247
- })
248
-
249
- describe('AllPossibleErrors', () => {
250
- it('should return errors', () => {
251
- const errors = field.getAllPossibleErrors()
252
- expect(errors.baseErrors).not.toBeEmpty()
253
- expect(errors.advancedSettingsErrors).toBeEmpty()
254
- })
255
- })
256
- })
@@ -1,399 +0,0 @@
1
- import {
2
- ComponentType,
3
- type DeclarationFieldComponent,
4
- type EastingNorthingFieldComponent,
5
- type GeospatialFieldComponent,
6
- type LatLongFieldComponent,
7
- type NationalGridFieldNumberFieldComponent,
8
- type OsGridRefFieldComponent
9
- } from '@defra/forms-model'
10
-
11
- import { validState } from '~/src/server/plugins/engine/components/helpers/__stubs__/geospatial.js'
12
- import {
13
- getAnswer,
14
- getAnswerMarkdown
15
- } from '~/src/server/plugins/engine/components/helpers/components.js'
16
- import {
17
- DeclarationField,
18
- EastingNorthingField,
19
- GeospatialField,
20
- LatLongField,
21
- NationalGridFieldNumberField,
22
- OsGridRefField
23
- } from '~/src/server/plugins/engine/components/index.js'
24
- import { FormModel } from '~/src/server/plugins/engine/models/FormModel.js'
25
- import definition from '~/test/form/definitions/blank.js'
26
-
27
- describe('Location field formatting', () => {
28
- let model: FormModel
29
-
30
- beforeEach(() => {
31
- model = new FormModel(definition, {
32
- basePath: 'test'
33
- })
34
- })
35
-
36
- describe('EastingNorthingField', () => {
37
- let field: EastingNorthingField
38
-
39
- beforeEach(() => {
40
- const def: EastingNorthingFieldComponent = {
41
- type: ComponentType.EastingNorthingField,
42
- name: 'locationEN',
43
- title: 'Location',
44
- options: {}
45
- }
46
- field = new EastingNorthingField(def, { model })
47
- })
48
-
49
- it('formats for email output with labels on separate lines', () => {
50
- const state = {
51
- locationEN__easting: 123456,
52
- locationEN__northing: 654321
53
- }
54
-
55
- const answer = getAnswer(field, state, { format: 'email' })
56
- expect(answer).toBe('Easting: 123456\nNorthing: 654321\n')
57
- })
58
-
59
- it('formats for data output', () => {
60
- const state = {
61
- locationEN__easting: 123456,
62
- locationEN__northing: 654321
63
- }
64
-
65
- const answer = getAnswer(field, state, { format: 'data' })
66
- expect(answer).toBe('Easting: 123456\nNorthing: 654321')
67
- })
68
-
69
- it('formats for summary display', () => {
70
- const state = {
71
- locationEN__easting: 123456,
72
- locationEN__northing: 654321
73
- }
74
-
75
- const answer = getAnswer(field, state, { format: 'summary' })
76
- // Should render as HTML from markdown
77
- expect(answer).toContain('Easting: 123456')
78
- expect(answer).toContain('Northing: 654321')
79
- })
80
-
81
- it('returns empty string when no values', () => {
82
- const state = {}
83
-
84
- const answer = getAnswer(field, state, { format: 'email' })
85
- expect(answer).toBe('')
86
- })
87
- })
88
-
89
- describe('LatLongField', () => {
90
- let field: LatLongField
91
-
92
- beforeEach(() => {
93
- const def: LatLongFieldComponent = {
94
- type: ComponentType.LatLongField,
95
- name: 'locationLL',
96
- title: 'Coordinates',
97
- options: {}
98
- }
99
- field = new LatLongField(def, { model })
100
- })
101
-
102
- it('formats for email output with labels on separate lines', () => {
103
- const state = {
104
- locationLL__latitude: 51.51945,
105
- locationLL__longitude: -0.127758
106
- }
107
-
108
- const answer = getAnswer(field, state, { format: 'email' })
109
- expect(answer).toBe('Latitude: 51.51945\nLongitude: -0.127758\n')
110
- })
111
-
112
- it('formats for data output', () => {
113
- const state = {
114
- locationLL__latitude: 51.51945,
115
- locationLL__longitude: -0.127758
116
- }
117
-
118
- const answer = getAnswer(field, state, { format: 'data' })
119
- expect(answer).toBe('Latitude: 51.51945\nLongitude: -0.127758')
120
- })
121
-
122
- it('formats for summary display', () => {
123
- const state = {
124
- locationLL__latitude: 51.51945,
125
- locationLL__longitude: -0.127758
126
- }
127
-
128
- const answer = getAnswer(field, state, { format: 'summary' })
129
- // Should render as HTML from markdown
130
- expect(answer).toContain('Latitude: 51.51945')
131
- expect(answer).toContain('Longitude: -0.127758')
132
- })
133
-
134
- it('returns empty string when no values', () => {
135
- const state = {}
136
-
137
- const answer = getAnswer(field, state, { format: 'email' })
138
- expect(answer).toBe('')
139
- })
140
- })
141
-
142
- describe('OsGridRefField', () => {
143
- let field: OsGridRefField
144
-
145
- beforeEach(() => {
146
- const def: OsGridRefFieldComponent = {
147
- type: ComponentType.OsGridRefField,
148
- name: 'gridRef',
149
- title: 'OS Grid Reference',
150
- options: {}
151
- }
152
- field = new OsGridRefField(def, { model })
153
- })
154
-
155
- it('formats for email output as single value', () => {
156
- const state = {
157
- gridRef: 'TQ123456'
158
- }
159
-
160
- const answer = getAnswer(field, state, { format: 'email' })
161
- expect(answer).toBe('TQ123456\n')
162
- })
163
-
164
- it('formats for data output', () => {
165
- const state = {
166
- gridRef: 'TQ123456'
167
- }
168
-
169
- const answer = getAnswer(field, state, { format: 'data' })
170
- expect(answer).toBe('TQ123456')
171
- })
172
-
173
- it('formats for summary display', () => {
174
- const state = {
175
- gridRef: 'TQ123456'
176
- }
177
-
178
- const answer = getAnswer(field, state, { format: 'summary' })
179
- expect(answer).toBe('TQ123456')
180
- })
181
- })
182
-
183
- describe('NationalGridFieldNumberField', () => {
184
- let field: NationalGridFieldNumberField
185
-
186
- beforeEach(() => {
187
- const def: NationalGridFieldNumberFieldComponent = {
188
- type: ComponentType.NationalGridFieldNumberField,
189
- name: 'ngField',
190
- title: 'National Grid Field Number',
191
- options: {}
192
- }
193
- field = new NationalGridFieldNumberField(def, { model })
194
- })
195
-
196
- it('formats for email output as single value', () => {
197
- const state = {
198
- ngField: 'NG12345678'
199
- }
200
-
201
- const answer = getAnswer(field, state, { format: 'email' })
202
- expect(answer).toBe('NG12345678\n')
203
- })
204
-
205
- it('formats for data output', () => {
206
- const state = {
207
- ngField: 'NG12345678'
208
- }
209
-
210
- const answer = getAnswer(field, state, { format: 'data' })
211
- expect(answer).toBe('NG12345678')
212
- })
213
-
214
- it('formats for summary display', () => {
215
- const state = {
216
- ngField: 'NG12345678'
217
- }
218
-
219
- const answer = getAnswer(field, state, { format: 'summary' })
220
- expect(answer).toBe('NG12345678')
221
- })
222
- })
223
-
224
- describe('GeospatialField', () => {
225
- let field: GeospatialField
226
-
227
- beforeEach(() => {
228
- const def: GeospatialFieldComponent = {
229
- type: ComponentType.GeospatialField,
230
- name: 'geoField',
231
- title: 'Geospatial',
232
- options: {}
233
- }
234
- field = new GeospatialField(def, { model })
235
- })
236
-
237
- it('formats for email output as single value', () => {
238
- const state = {
239
- geoField: validState
240
- }
241
-
242
- const answer = getAnswer(field, state, { format: 'email' })
243
- expect(answer).toBe('Added 4 locations\n')
244
- })
245
-
246
- it('formats for data output', () => {
247
- const state = {
248
- geoField: validState
249
- }
250
-
251
- const answer = getAnswer(field, state, { format: 'data' })
252
- expect(answer).toBe('a,b,c,d')
253
- })
254
-
255
- it('formats for summary display', () => {
256
- const state = {
257
- geoField: validState
258
- }
259
-
260
- const answer = getAnswer(field, state, { format: 'summary' })
261
- expect(answer).toBe('Added 4 locations')
262
- })
263
- })
264
-
265
- describe('DeclarationField', () => {
266
- let field: DeclarationField
267
-
268
- beforeEach(() => {
269
- const def: DeclarationFieldComponent = {
270
- type: ComponentType.DeclarationField,
271
- name: 'declField',
272
- title: 'Declaration title',
273
- content: '# markup heading',
274
- options: {}
275
- }
276
- field = new DeclarationField(def, { model })
277
- })
278
-
279
- it('formats correctly when agreed', () => {
280
- const state = {
281
- declField: true
282
- }
283
-
284
- const answer = getAnswer(field, state, { format: 'email' })
285
- expect(answer).toBe('I understand and agree\n')
286
- })
287
-
288
- it('formats correctly when not agreed', () => {
289
- const state = {
290
- declField: false
291
- }
292
-
293
- const answer = getAnswer(field, state, { format: 'email' })
294
- expect(answer).toBe('Not provided\n')
295
- })
296
-
297
- it('formats for data output when agreed', () => {
298
- const state = {
299
- declField: true
300
- }
301
-
302
- const answer = getAnswer(field, state, { format: 'data' })
303
- expect(answer).toBe('true')
304
- })
305
-
306
- it('formats for data output when not agreed', () => {
307
- const state = {
308
- declField: false
309
- }
310
-
311
- const answer = getAnswer(field, state, { format: 'data' })
312
- expect(answer).toBe('false')
313
- })
314
-
315
- it('formats for data output when no value', () => {
316
- const state = {}
317
-
318
- const answer = getAnswer(field, state, { format: 'data' })
319
- expect(answer).toBe('false')
320
- })
321
-
322
- it('formats for summary display when agreed', () => {
323
- const state = {
324
- declField: true
325
- }
326
-
327
- const answer = getAnswer(field, state, { format: 'summary' })
328
- expect(answer).toBe('I understand and agree')
329
- })
330
-
331
- it('formats for summary display when not agreed', () => {
332
- const state = {
333
- declField: false
334
- }
335
-
336
- const answer = getAnswer(field, state, { format: 'summary' })
337
- expect(answer).toBe('Not provided')
338
- })
339
-
340
- it('formats for summary display when no value', () => {
341
- const state = {}
342
-
343
- const answer = getAnswer(field, state, { format: 'summary' })
344
- expect(answer).toBe('Not provided')
345
- })
346
- })
347
-
348
- describe('getAnswerMarkdown', () => {
349
- it('formats EastingNorthingField correctly', () => {
350
- const def: EastingNorthingFieldComponent = {
351
- type: ComponentType.EastingNorthingField,
352
- name: 'locationEN',
353
- title: 'Location',
354
- options: {}
355
- }
356
- const field = new EastingNorthingField(def, { model })
357
- const state = {
358
- locationEN__easting: 123456,
359
- locationEN__northing: 654321
360
- }
361
-
362
- const answer = getAnswerMarkdown(field, state, { format: 'email' })
363
- expect(answer).toBe('Easting: 123456\nNorthing: 654321\n')
364
- })
365
-
366
- it('formats LatLongField correctly', () => {
367
- const def: LatLongFieldComponent = {
368
- type: ComponentType.LatLongField,
369
- name: 'locationLL',
370
- title: 'Coordinates',
371
- options: {}
372
- }
373
- const field = new LatLongField(def, { model })
374
- const state = {
375
- locationLL__latitude: 51.51945,
376
- locationLL__longitude: -0.127758
377
- }
378
-
379
- const answer = getAnswerMarkdown(field, state, { format: 'email' })
380
- expect(answer).toBe('Latitude: 51.51945\nLongitude: -0.127758\n')
381
- })
382
-
383
- it('formats simple location fields correctly', () => {
384
- const def: OsGridRefFieldComponent = {
385
- type: ComponentType.OsGridRefField,
386
- name: 'gridRef',
387
- title: 'OS Grid Reference',
388
- options: {}
389
- }
390
- const field = new OsGridRefField(def, { model })
391
- const state = {
392
- gridRef: 'TQ123456'
393
- }
394
-
395
- const answer = getAnswerMarkdown(field, state, { format: 'email' })
396
- expect(answer).toBe('TQ123456\n')
397
- })
398
- })
399
- })
@@ -1,55 +0,0 @@
1
- import { validState } from '~/src/server/plugins/engine/components/helpers/__stubs__/geospatial.js'
2
- import { geospatialSchema } from '~/src/server/plugins/engine/components/helpers/geospatial.js'
3
-
4
- describe('Geospatial validation helpers', () => {
5
- test('it should not have errors for valid geojson object', () => {
6
- const result = geospatialSchema.validate(validState)
7
-
8
- expect(result.error).toBeUndefined()
9
- expect(result.value).toBeDefined()
10
- expect(result.value).toHaveLength(4)
11
- })
12
-
13
- test('it should not have errors for valid geojson string', () => {
14
- const result = geospatialSchema.validate(JSON.stringify(validState))
15
-
16
- expect(result.error).toBeUndefined()
17
- expect(result.value).toBeDefined()
18
- expect(result.value).toHaveLength(4)
19
- })
20
-
21
- test('it should have errors for invalid json string', () => {
22
- const result = geospatialSchema.validate('{')
23
-
24
- expect(result.error).toBeDefined()
25
- expect(result.value).toBe('{')
26
- })
27
-
28
- test('it should have errors for invalid geojson string', () => {
29
- const result = geospatialSchema.validate('[')
30
-
31
- expect(result.error).toBeDefined()
32
- expect(result.value).toBe('[')
33
- })
34
-
35
- test('it should validate an empty array', () => {
36
- const result = geospatialSchema.validate('[]')
37
-
38
- expect(result.error).toBeUndefined()
39
- expect(result.value).toEqual([])
40
- })
41
-
42
- test('it should not validate an empty object', () => {
43
- const result = geospatialSchema.validate('{}')
44
-
45
- expect(result.error).toBeDefined()
46
- expect(result.value).toBeUndefined()
47
- })
48
-
49
- test('it should validate an empty string', () => {
50
- const result = geospatialSchema.validate('')
51
-
52
- expect(result.error).toBeDefined()
53
- expect(result.value).toBeUndefined()
54
- })
55
- })