@defra/forms-engine-plugin 4.7.2 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. package/.public/javascripts/shared.min.js +1 -1
  2. package/.public/javascripts/shared.min.js.map +1 -1
  3. package/.server/client/javascripts/geospatial-map.d.ts +6 -6
  4. package/.server/client/javascripts/geospatial-map.js +3 -3
  5. package/.server/client/javascripts/location-map.d.ts +1 -1
  6. package/.server/client/javascripts/location-map.js +1 -1
  7. package/.server/client/javascripts/map.d.ts +5 -1
  8. package/.server/client/javascripts/map.js +10 -2
  9. package/.server/client/javascripts/map.js.map +1 -1
  10. package/.server/client/javascripts/shared.d.ts +7 -7
  11. package/.server/server/index.d.ts +1 -1
  12. package/.server/server/plugins/crumb.d.ts +1 -1
  13. package/.server/server/plugins/engine/beta/form-context.d.ts +6 -6
  14. package/.server/server/plugins/engine/components/AutocompleteField.d.ts +4 -4
  15. package/.server/server/plugins/engine/components/CheckboxesField.d.ts +2 -2
  16. package/.server/server/plugins/engine/components/CheckboxesField.js +2 -2
  17. package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
  18. package/.server/server/plugins/engine/components/ComponentBase.d.ts +5 -5
  19. package/.server/server/plugins/engine/components/ComponentCollection.d.ts +8 -8
  20. package/.server/server/plugins/engine/components/DatePartsField.d.ts +11 -11
  21. package/.server/server/plugins/engine/components/DeclarationField.d.ts +3 -3
  22. package/.server/server/plugins/engine/components/Details.d.ts +1 -1
  23. package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +22 -22
  24. package/.server/server/plugins/engine/components/EmailAddressField.d.ts +4 -4
  25. package/.server/server/plugins/engine/components/FileUploadField.d.ts +3 -3
  26. package/.server/server/plugins/engine/components/FormComponent.d.ts +10 -10
  27. package/.server/server/plugins/engine/components/GeospatialField.d.ts +6 -6
  28. package/.server/server/plugins/engine/components/HiddenField.d.ts +2 -2
  29. package/.server/server/plugins/engine/components/Html.d.ts +1 -1
  30. package/.server/server/plugins/engine/components/InsetText.d.ts +1 -1
  31. package/.server/server/plugins/engine/components/LatLongField.d.ts +22 -22
  32. package/.server/server/plugins/engine/components/List.d.ts +8 -8
  33. package/.server/server/plugins/engine/components/ListFormComponent.d.ts +10 -10
  34. package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +6 -6
  35. package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +14 -14
  36. package/.server/server/plugins/engine/components/Markdown.d.ts +1 -1
  37. package/.server/server/plugins/engine/components/MonthYearField.d.ts +11 -11
  38. package/.server/server/plugins/engine/components/MultilineTextField.d.ts +5 -5
  39. package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +1 -1
  40. package/.server/server/plugins/engine/components/NumberField.d.ts +3 -3
  41. package/.server/server/plugins/engine/components/OsGridRefField.d.ts +1 -1
  42. package/.server/server/plugins/engine/components/PaymentField.d.ts +12 -12
  43. package/.server/server/plugins/engine/components/RadiosField.d.ts +1 -1
  44. package/.server/server/plugins/engine/components/SelectField.d.ts +4 -4
  45. package/.server/server/plugins/engine/components/SelectionControlField.d.ts +10 -10
  46. package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +4 -4
  47. package/.server/server/plugins/engine/components/TextField.d.ts +2 -2
  48. package/.server/server/plugins/engine/components/UkAddressField.d.ts +11 -11
  49. package/.server/server/plugins/engine/components/YesNoField.d.ts +2 -2
  50. package/.server/server/plugins/engine/components/helpers/__stubs__/geospatial.d.ts +1 -1
  51. package/.server/server/plugins/engine/components/helpers/components.d.ts +5 -5
  52. package/.server/server/plugins/engine/components/helpers/geospatial.d.ts +1 -1
  53. package/.server/server/plugins/engine/components/index.d.ts +27 -27
  54. package/.server/server/plugins/engine/components/types.d.ts +1 -1
  55. package/.server/server/plugins/engine/configureEnginePlugin.d.ts +4 -4
  56. package/.server/server/plugins/engine/date-helper.d.ts +1 -1
  57. package/.server/server/plugins/engine/helpers.d.ts +8 -8
  58. package/.server/server/plugins/engine/index.d.ts +5 -5
  59. package/.server/server/plugins/engine/models/FormModel.d.ts +6 -6
  60. package/.server/server/plugins/engine/models/SummaryViewModel.d.ts +6 -6
  61. package/.server/server/plugins/engine/models/index.d.ts +2 -2
  62. package/.server/server/plugins/engine/models/types.d.ts +4 -4
  63. package/.server/server/plugins/engine/options.d.ts +1 -1
  64. package/.server/server/plugins/engine/options.js +1 -1
  65. package/.server/server/plugins/engine/options.test.js +1 -1
  66. package/.server/server/plugins/engine/outputFormatters/adapter/v1.d.ts +4 -4
  67. package/.server/server/plugins/engine/outputFormatters/human/v1.d.ts +4 -4
  68. package/.server/server/plugins/engine/outputFormatters/index.d.ts +5 -5
  69. package/.server/server/plugins/engine/outputFormatters/machine/v1.d.ts +4 -4
  70. package/.server/server/plugins/engine/outputFormatters/machine/v2.d.ts +4 -4
  71. package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +8 -8
  72. package/.server/server/plugins/engine/pageControllers/PageController.d.ts +6 -6
  73. package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +8 -8
  74. package/.server/server/plugins/engine/pageControllers/RepeatPageController.d.ts +5 -5
  75. package/.server/server/plugins/engine/pageControllers/StartPageController.d.ts +4 -4
  76. package/.server/server/plugins/engine/pageControllers/StatusPageController.d.ts +4 -4
  77. package/.server/server/plugins/engine/pageControllers/SummaryPageController.d.ts +5 -5
  78. package/.server/server/plugins/engine/pageControllers/TerminalPageController.d.ts +3 -3
  79. package/.server/server/plugins/engine/pageControllers/__stubs__/request.d.ts +2 -2
  80. package/.server/server/plugins/engine/pageControllers/errors.d.ts +1 -1
  81. package/.server/server/plugins/engine/pageControllers/helpers/pages.d.ts +2 -2
  82. package/.server/server/plugins/engine/pageControllers/helpers/state.d.ts +5 -5
  83. package/.server/server/plugins/engine/pageControllers/helpers/state.js +1 -1
  84. package/.server/server/plugins/engine/pageControllers/helpers/state.js.map +1 -1
  85. package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +1 -1
  86. package/.server/server/plugins/engine/pageControllers/index.d.ts +7 -7
  87. package/.server/server/plugins/engine/plugin.d.ts +1 -1
  88. package/.server/server/plugins/engine/routes/file-upload.d.ts +1 -1
  89. package/.server/server/plugins/engine/routes/index.d.ts +3 -3
  90. package/.server/server/plugins/engine/routes/payment-helper.d.ts +3 -3
  91. package/.server/server/plugins/engine/routes/payment-helper.js +2 -2
  92. package/.server/server/plugins/engine/routes/payment.js +5 -5
  93. package/.server/server/plugins/engine/routes/payment.test.js +1 -1
  94. package/.server/server/plugins/engine/routes/questions.d.ts +2 -2
  95. package/.server/server/plugins/engine/routes/repeaters/item-delete.d.ts +2 -2
  96. package/.server/server/plugins/engine/routes/repeaters/summary.d.ts +2 -2
  97. package/.server/server/plugins/engine/services/index.d.ts +3 -3
  98. package/.server/server/plugins/engine/services/notifyService.d.ts +4 -4
  99. package/.server/server/plugins/engine/services/uploadService.d.ts +2 -2
  100. package/.server/server/plugins/engine/services/uploadService.js +1 -1
  101. package/.server/server/plugins/engine/types/index.d.ts +10 -10
  102. package/.server/server/plugins/engine/types/schema.d.ts +1 -1
  103. package/.server/server/plugins/engine/types.d.ts +25 -16
  104. package/.server/server/plugins/engine/types.js.map +1 -1
  105. package/.server/server/plugins/engine/validationHelpers.d.ts +2 -2
  106. package/.server/server/plugins/engine/vision.d.ts +1 -1
  107. package/.server/server/plugins/map/index.d.ts +1 -1
  108. package/.server/server/plugins/map/index.js +1 -1
  109. package/.server/server/plugins/map/routes/get-os-token.d.ts +11 -1
  110. package/.server/server/plugins/map/routes/get-os-token.js +12 -2
  111. package/.server/server/plugins/map/routes/get-os-token.js.map +1 -1
  112. package/.server/server/plugins/map/routes/index.d.ts +4 -4
  113. package/.server/server/plugins/map/routes/index.js +3 -2
  114. package/.server/server/plugins/map/routes/index.js.map +1 -1
  115. package/.server/server/plugins/map/routes/vts/esri-aerial.json +23 -0
  116. package/.server/server/plugins/map/service.d.ts +1 -1
  117. package/.server/server/plugins/map/service.js +5 -2
  118. package/.server/server/plugins/map/service.js.map +1 -1
  119. package/.server/server/plugins/map/test/__stubs__/find.d.ts +1 -1
  120. package/.server/server/plugins/map/test/__stubs__/find.js +1 -1
  121. package/.server/server/plugins/nunjucks/context.d.ts +2 -2
  122. package/.server/server/plugins/nunjucks/context.js +2 -2
  123. package/.server/server/plugins/nunjucks/context.test.js +1 -1
  124. package/.server/server/plugins/nunjucks/enviroment.test.js +1 -1
  125. package/.server/server/plugins/nunjucks/environment.d.ts +3 -3
  126. package/.server/server/plugins/nunjucks/environment.js +3 -3
  127. package/.server/server/plugins/nunjucks/filters/answer.d.ts +1 -1
  128. package/.server/server/plugins/nunjucks/filters/answer.js +2 -2
  129. package/.server/server/plugins/nunjucks/filters/answer.test.js +1 -1
  130. package/.server/server/plugins/nunjucks/filters/evaluate.d.ts +1 -1
  131. package/.server/server/plugins/nunjucks/filters/evaluate.js +1 -1
  132. package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
  133. package/.server/server/plugins/nunjucks/filters/field.js +1 -1
  134. package/.server/server/plugins/nunjucks/filters/field.test.js +1 -1
  135. package/.server/server/plugins/nunjucks/filters/href.d.ts +1 -1
  136. package/.server/server/plugins/nunjucks/filters/href.js +1 -1
  137. package/.server/server/plugins/nunjucks/filters/href.test.js +1 -1
  138. package/.server/server/plugins/nunjucks/filters/index.d.ts +8 -8
  139. package/.server/server/plugins/nunjucks/filters/page.d.ts +1 -1
  140. package/.server/server/plugins/nunjucks/filters/page.js +1 -1
  141. package/.server/server/plugins/nunjucks/filters/page.test.js +1 -1
  142. package/.server/server/plugins/nunjucks/index.d.ts +3 -3
  143. package/.server/server/plugins/nunjucks/render.d.ts +2 -2
  144. package/.server/server/plugins/nunjucks/render.js +1 -1
  145. package/.server/server/plugins/nunjucks/types.d.ts +1 -1
  146. package/.server/server/plugins/nunjucks/types.js +1 -1
  147. package/.server/server/plugins/payment/helper.d.ts +2 -2
  148. package/.server/server/plugins/payment/helper.js +1 -1
  149. package/.server/server/plugins/payment/service.d.ts +3 -3
  150. package/.server/server/plugins/payment/service.js +1 -1
  151. package/.server/server/plugins/postcode-lookup/index.d.ts +1 -1
  152. package/.server/server/plugins/postcode-lookup/index.js +1 -1
  153. package/.server/server/plugins/postcode-lookup/models/index.d.ts +6 -6
  154. package/.server/server/plugins/postcode-lookup/models/index.js +1 -1
  155. package/.server/server/plugins/postcode-lookup/routes/index.d.ts +6 -6
  156. package/.server/server/plugins/postcode-lookup/routes/index.js +15 -15
  157. package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
  158. package/.server/server/plugins/postcode-lookup/service.d.ts +1 -1
  159. package/.server/server/plugins/postcode-lookup/service.js +5 -2
  160. package/.server/server/plugins/postcode-lookup/service.js.map +1 -1
  161. package/.server/server/plugins/postcode-lookup/types.js +1 -1
  162. package/.server/server/routes/index.d.ts +2 -2
  163. package/.server/server/routes/types.d.ts +1 -1
  164. package/.server/server/schemas/index.d.ts +2 -2
  165. package/.server/server/services/cacheService.d.ts +8 -8
  166. package/.server/server/services/cacheService.js +2 -5
  167. package/.server/server/services/cacheService.js.map +1 -1
  168. package/.server/server/services/httpService.test.js +1 -1
  169. package/.server/server/services/index.d.ts +1 -1
  170. package/.server/server/types.d.ts +7 -7
  171. package/.server/server/utils/file-form-service.d.ts +2 -2
  172. package/.server/server/utils/file-form-service.js +1 -1
  173. package/package.json +8 -4
  174. package/src/client/javascripts/application.js +1 -1
  175. package/src/client/javascripts/geospatial-map.js +4 -4
  176. package/src/client/javascripts/location-map.js +2 -2
  177. package/src/client/javascripts/map.js +13 -4
  178. package/src/client/javascripts/shared.js +7 -7
  179. package/src/index.ts +3 -3
  180. package/src/server/common/helpers/logging/logger-options.ts +1 -1
  181. package/src/server/common/helpers/logging/logger.ts +1 -1
  182. package/src/server/common/helpers/logging/request-logger.ts +1 -1
  183. package/src/server/common/helpers/logging/request-tracing.js +1 -1
  184. package/src/server/common/helpers/redis-client.js +2 -2
  185. package/src/server/index.ts +13 -13
  186. package/src/server/plugins/crumb.ts +2 -2
  187. package/src/server/plugins/engine/beta/form-context.ts +9 -9
  188. package/src/server/plugins/engine/components/AutocompleteField.ts +3 -3
  189. package/src/server/plugins/engine/components/CheckboxesField.ts +7 -8
  190. package/src/server/plugins/engine/components/ComponentBase.ts +5 -5
  191. package/src/server/plugins/engine/components/ComponentCollection.ts +9 -9
  192. package/src/server/plugins/engine/components/DatePartsField.ts +8 -8
  193. package/src/server/plugins/engine/components/DeclarationField.ts +3 -3
  194. package/src/server/plugins/engine/components/Details.ts +1 -1
  195. package/src/server/plugins/engine/components/EastingNorthingField.ts +9 -9
  196. package/src/server/plugins/engine/components/EmailAddressField.ts +3 -3
  197. package/src/server/plugins/engine/components/FileUploadField.ts +6 -6
  198. package/src/server/plugins/engine/components/FormComponent.ts +4 -4
  199. package/src/server/plugins/engine/components/GeospatialField.ts +5 -5
  200. package/src/server/plugins/engine/components/HiddenField.ts +4 -4
  201. package/src/server/plugins/engine/components/Html.ts +1 -1
  202. package/src/server/plugins/engine/components/InsetText.ts +1 -1
  203. package/src/server/plugins/engine/components/LatLongField.ts +9 -9
  204. package/src/server/plugins/engine/components/List.ts +2 -2
  205. package/src/server/plugins/engine/components/ListFormComponent.ts +4 -4
  206. package/src/server/plugins/engine/components/LocationFieldBase.ts +5 -5
  207. package/src/server/plugins/engine/components/LocationFieldHelpers.ts +5 -5
  208. package/src/server/plugins/engine/components/Markdown.ts +1 -1
  209. package/src/server/plugins/engine/components/MonthYearField.ts +8 -8
  210. package/src/server/plugins/engine/components/MultilineTextField.ts +4 -4
  211. package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +2 -2
  212. package/src/server/plugins/engine/components/NumberField.ts +3 -3
  213. package/src/server/plugins/engine/components/OsGridRefField.ts +2 -2
  214. package/src/server/plugins/engine/components/PaymentField.ts +8 -8
  215. package/src/server/plugins/engine/components/RadiosField.ts +1 -1
  216. package/src/server/plugins/engine/components/SelectField.ts +2 -2
  217. package/src/server/plugins/engine/components/SelectionControlField.ts +4 -4
  218. package/src/server/plugins/engine/components/TelephoneNumberField.ts +4 -4
  219. package/src/server/plugins/engine/components/TextField.ts +3 -3
  220. package/src/server/plugins/engine/components/UkAddressField.ts +7 -7
  221. package/src/server/plugins/engine/components/YesNoField.ts +5 -5
  222. package/src/server/plugins/engine/components/helpers/__stubs__/geospatial.ts +1 -1
  223. package/src/server/plugins/engine/components/helpers/components.ts +8 -8
  224. package/src/server/plugins/engine/components/helpers/geospatial.ts +1 -1
  225. package/src/server/plugins/engine/components/index.ts +27 -27
  226. package/src/server/plugins/engine/components/types.ts +1 -1
  227. package/src/server/plugins/engine/configureEnginePlugin.ts +10 -10
  228. package/src/server/plugins/engine/date-helper.ts +1 -1
  229. package/src/server/plugins/engine/helpers.ts +8 -8
  230. package/src/server/plugins/engine/index.ts +8 -8
  231. package/src/server/plugins/engine/models/FormModel.ts +15 -15
  232. package/src/server/plugins/engine/models/SummaryViewModel.ts +10 -10
  233. package/src/server/plugins/engine/models/index.ts +2 -2
  234. package/src/server/plugins/engine/models/types.ts +4 -4
  235. package/src/server/plugins/engine/options.js +3 -3
  236. package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +6 -6
  237. package/src/server/plugins/engine/outputFormatters/human/v1.ts +9 -9
  238. package/src/server/plugins/engine/outputFormatters/index.ts +8 -8
  239. package/src/server/plugins/engine/outputFormatters/machine/v1.ts +7 -7
  240. package/src/server/plugins/engine/outputFormatters/machine/v2.ts +6 -6
  241. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +9 -9
  242. package/src/server/plugins/engine/pageControllers/PageController.ts +7 -7
  243. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +13 -13
  244. package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +6 -6
  245. package/src/server/plugins/engine/pageControllers/StartPageController.ts +3 -3
  246. package/src/server/plugins/engine/pageControllers/StatusPageController.ts +5 -5
  247. package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +12 -12
  248. package/src/server/plugins/engine/pageControllers/TerminalPageController.ts +3 -3
  249. package/src/server/plugins/engine/pageControllers/__stubs__/request.ts +3 -3
  250. package/src/server/plugins/engine/pageControllers/__stubs__/server.ts +2 -2
  251. package/src/server/plugins/engine/pageControllers/errors.ts +1 -1
  252. package/src/server/plugins/engine/pageControllers/helpers/pages.ts +2 -2
  253. package/src/server/plugins/engine/pageControllers/helpers/state.ts +9 -9
  254. package/src/server/plugins/engine/pageControllers/helpers/submission.ts +5 -5
  255. package/src/server/plugins/engine/pageControllers/index.ts +7 -7
  256. package/src/server/plugins/engine/pageControllers/validationOptions.ts +1 -1
  257. package/src/server/plugins/engine/plugin.ts +14 -14
  258. package/src/server/plugins/engine/routes/file-upload.ts +2 -2
  259. package/src/server/plugins/engine/routes/index.ts +10 -10
  260. package/src/server/plugins/engine/routes/payment-helper.js +4 -4
  261. package/src/server/plugins/engine/routes/payment.js +9 -9
  262. package/src/server/plugins/engine/routes/questions.ts +10 -10
  263. package/src/server/plugins/engine/routes/repeaters/item-delete.ts +6 -6
  264. package/src/server/plugins/engine/routes/repeaters/summary.ts +5 -5
  265. package/src/server/plugins/engine/services/formSubmissionService.js +2 -2
  266. package/src/server/plugins/engine/services/index.js +3 -3
  267. package/src/server/plugins/engine/services/localFormsService.js +2 -2
  268. package/src/server/plugins/engine/services/notifyService.ts +9 -9
  269. package/src/server/plugins/engine/services/uploadService.js +3 -3
  270. package/src/server/plugins/engine/types/index.ts +10 -10
  271. package/src/server/plugins/engine/types/schema.ts +2 -2
  272. package/src/server/plugins/engine/types.ts +22 -17
  273. package/src/server/plugins/engine/validationHelpers.ts +3 -3
  274. package/src/server/plugins/engine/vision.ts +3 -3
  275. package/src/server/plugins/map/index.js +2 -2
  276. package/src/server/plugins/map/routes/get-os-token.js +15 -3
  277. package/src/server/plugins/map/routes/index.js +7 -5
  278. package/src/server/plugins/map/routes/vts/esri-aerial.json +23 -0
  279. package/src/server/plugins/map/service.js +7 -4
  280. package/src/server/plugins/map/test/__stubs__/find.js +1 -1
  281. package/src/server/plugins/nunjucks/context.js +5 -5
  282. package/src/server/plugins/nunjucks/environment.js +6 -6
  283. package/src/server/plugins/nunjucks/filters/answer.js +3 -3
  284. package/src/server/plugins/nunjucks/filters/evaluate.js +2 -2
  285. package/src/server/plugins/nunjucks/filters/field.js +1 -1
  286. package/src/server/plugins/nunjucks/filters/href.js +2 -2
  287. package/src/server/plugins/nunjucks/filters/index.js +8 -8
  288. package/src/server/plugins/nunjucks/filters/page.js +1 -1
  289. package/src/server/plugins/nunjucks/index.js +3 -3
  290. package/src/server/plugins/nunjucks/plugin.js +3 -3
  291. package/src/server/plugins/nunjucks/render.js +2 -2
  292. package/src/server/plugins/nunjucks/types.js +1 -1
  293. package/src/server/plugins/payment/helper.js +2 -2
  294. package/src/server/plugins/payment/service.js +4 -4
  295. package/src/server/plugins/postcode-lookup/index.js +2 -2
  296. package/src/server/plugins/postcode-lookup/models/index.js +3 -3
  297. package/src/server/plugins/postcode-lookup/routes/index.js +24 -14
  298. package/src/server/plugins/postcode-lookup/service.js +7 -4
  299. package/src/server/plugins/postcode-lookup/types.js +1 -1
  300. package/src/server/plugins/session.ts +1 -1
  301. package/src/server/routes/index.ts +2 -2
  302. package/src/server/routes/public.ts +1 -1
  303. package/src/server/routes/types.ts +1 -1
  304. package/src/server/schemas/index.ts +2 -2
  305. package/src/server/secure-context.js +1 -1
  306. package/src/server/services/cacheService.ts +13 -18
  307. package/src/server/services/httpService.ts +1 -1
  308. package/src/server/services/index.ts +1 -1
  309. package/src/server/types.ts +7 -7
  310. package/src/server/utils/notify.ts +2 -2
  311. package/src/server/utils/utils.js +1 -1
  312. package/src/typings/hapi/index.d.ts +4 -4
  313. package/src/typings/joi/index.d.ts +1 -1
  314. package/src/server/common/helpers/logging/logger-options.test.ts +0 -50
  315. package/src/server/index.test.ts +0 -644
  316. package/src/server/plugins/engine/beta/form-context.test.ts +0 -373
  317. package/src/server/plugins/engine/components/AutocompleteField.test.ts +0 -362
  318. package/src/server/plugins/engine/components/CheckboxesField.test.ts +0 -486
  319. package/src/server/plugins/engine/components/DatePartsField.test.ts +0 -927
  320. package/src/server/plugins/engine/components/DeclarationField.test.ts +0 -560
  321. package/src/server/plugins/engine/components/Details.test.ts +0 -49
  322. package/src/server/plugins/engine/components/EastingNorthingField.test.ts +0 -727
  323. package/src/server/plugins/engine/components/EmailAddressField.test.ts +0 -445
  324. package/src/server/plugins/engine/components/FileUploadField.test.ts +0 -1079
  325. package/src/server/plugins/engine/components/GeospatialField.test.ts +0 -380
  326. package/src/server/plugins/engine/components/HiddenField.test.ts +0 -188
  327. package/src/server/plugins/engine/components/Html.test.ts +0 -48
  328. package/src/server/plugins/engine/components/InsetText.test.ts +0 -48
  329. package/src/server/plugins/engine/components/LatLongField.test.ts +0 -898
  330. package/src/server/plugins/engine/components/List.test.ts +0 -79
  331. package/src/server/plugins/engine/components/LocationFieldBase.test.ts +0 -253
  332. package/src/server/plugins/engine/components/LocationFieldHelpers.test.ts +0 -743
  333. package/src/server/plugins/engine/components/Markdown.test.ts +0 -48
  334. package/src/server/plugins/engine/components/MonthYearField.test.ts +0 -617
  335. package/src/server/plugins/engine/components/MultilineTextField.test.ts +0 -647
  336. package/src/server/plugins/engine/components/NationalGridFieldNumberField.test.ts +0 -449
  337. package/src/server/plugins/engine/components/NumberField.test.ts +0 -723
  338. package/src/server/plugins/engine/components/OsGridRefField.test.ts +0 -460
  339. package/src/server/plugins/engine/components/PaymentField.test.ts +0 -745
  340. package/src/server/plugins/engine/components/RadiosField.test.ts +0 -297
  341. package/src/server/plugins/engine/components/SelectField.test.ts +0 -289
  342. package/src/server/plugins/engine/components/TelephoneNumberField.test.ts +0 -384
  343. package/src/server/plugins/engine/components/TextField.test.ts +0 -521
  344. package/src/server/plugins/engine/components/UkAddressField.test.ts +0 -806
  345. package/src/server/plugins/engine/components/YesNoField.test.ts +0 -256
  346. package/src/server/plugins/engine/components/helpers/components.test.ts +0 -399
  347. package/src/server/plugins/engine/components/helpers/geospatial.test.js +0 -55
  348. package/src/server/plugins/engine/components/helpers/helpers.test.ts +0 -219
  349. package/src/server/plugins/engine/date-helper.test.ts +0 -47
  350. package/src/server/plugins/engine/helpers.test.ts +0 -868
  351. package/src/server/plugins/engine/models/FormModel.test.ts +0 -725
  352. package/src/server/plugins/engine/models/SummaryViewModel.test.ts +0 -472
  353. package/src/server/plugins/engine/options.test.js +0 -63
  354. package/src/server/plugins/engine/outputFormatters/adapter/v1.location.test.ts +0 -356
  355. package/src/server/plugins/engine/outputFormatters/adapter/v1.test.ts +0 -871
  356. package/src/server/plugins/engine/outputFormatters/human/v1.payment.test.ts +0 -147
  357. package/src/server/plugins/engine/outputFormatters/human/v1.test.ts +0 -145
  358. package/src/server/plugins/engine/outputFormatters/index.test.ts +0 -17
  359. package/src/server/plugins/engine/outputFormatters/machine/v1.test.ts +0 -268
  360. package/src/server/plugins/engine/outputFormatters/machine/v2.location.test.ts +0 -341
  361. package/src/server/plugins/engine/outputFormatters/machine/v2.payment.test.ts +0 -115
  362. package/src/server/plugins/engine/outputFormatters/machine/v2.test.ts +0 -311
  363. package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +0 -1372
  364. package/src/server/plugins/engine/pageControllers/PageController.test.ts +0 -246
  365. package/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +0 -1686
  366. package/src/server/plugins/engine/pageControllers/RepeatPageController.test.ts +0 -279
  367. package/src/server/plugins/engine/pageControllers/StartPageController.test.ts +0 -32
  368. package/src/server/plugins/engine/pageControllers/StatusPageController.test.ts +0 -32
  369. package/src/server/plugins/engine/pageControllers/SummaryPageController.test.ts +0 -89
  370. package/src/server/plugins/engine/pageControllers/TerminalController.test.ts +0 -37
  371. package/src/server/plugins/engine/pageControllers/errors.test.ts +0 -78
  372. package/src/server/plugins/engine/pageControllers/helpers/helpers.test.ts +0 -182
  373. package/src/server/plugins/engine/pageControllers/helpers/state.test.ts +0 -359
  374. package/src/server/plugins/engine/pageControllers/helpers/submission.test.ts +0 -373
  375. package/src/server/plugins/engine/referenceNumbers.test.ts +0 -74
  376. package/src/server/plugins/engine/routes/index.test.ts +0 -332
  377. package/src/server/plugins/engine/routes/payment-helper.test.js +0 -136
  378. package/src/server/plugins/engine/routes/payment.test.js +0 -180
  379. package/src/server/plugins/engine/routes/questions.test.ts +0 -502
  380. package/src/server/plugins/engine/routes/repeaters/item-delete.test.ts +0 -83
  381. package/src/server/plugins/engine/routes/repeaters/summary.test.ts +0 -75
  382. package/src/server/plugins/engine/services/formsService.test.js +0 -26
  383. package/src/server/plugins/engine/services/notifyService.test.ts +0 -310
  384. package/src/server/plugins/engine/types/schema.test.ts +0 -234
  385. package/src/server/plugins/engine/views/components/service-banner/template.test.js +0 -43
  386. package/src/server/plugins/engine/views/components/tag-env/template.test.js +0 -28
  387. package/src/server/plugins/engine/views/partials/preview-banner.test.js +0 -122
  388. package/src/server/plugins/map/routes/get-os-token.test.js +0 -55
  389. package/src/server/plugins/map/service.test.js +0 -144
  390. package/src/server/plugins/nunjucks/context.test.js +0 -109
  391. package/src/server/plugins/nunjucks/enviroment.test.js +0 -207
  392. package/src/server/plugins/nunjucks/filters/answer.test.js +0 -92
  393. package/src/server/plugins/nunjucks/filters/field.test.js +0 -75
  394. package/src/server/plugins/nunjucks/filters/href.test.js +0 -80
  395. package/src/server/plugins/nunjucks/filters/merge.test.js +0 -15
  396. package/src/server/plugins/nunjucks/filters/page.test.js +0 -65
  397. package/src/server/plugins/payment/helper.test.js +0 -29
  398. package/src/server/plugins/payment/service.test.js +0 -218
  399. package/src/server/plugins/postcode-lookup/service.test.js +0 -177
  400. package/src/server/postcode-lookup.test.ts +0 -64
  401. package/src/server/routes/dummy-api.test.ts +0 -97
  402. package/src/server/services/cacheService.test.ts +0 -308
  403. package/src/server/services/httpService.test.js +0 -491
  404. package/src/server/utils/file-form-service.test.js +0 -127
  405. package/src/server/utils/notify.test.ts +0 -37
  406. package/src/server/utils/secure-context/get-trust-store-certs.test.js +0 -19
  407. package/src/server/utils/utils.test.js +0 -69
@@ -1,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
- })