@defra/forms-engine-plugin 0.0.2 → 0.0.4

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 (330) hide show
  1. package/.public/assets/fonts/bold-affa96571d-v2.woff +0 -0
  2. package/.public/assets/fonts/bold-b542beb274-v2.woff2 +0 -0
  3. package/.public/assets/fonts/light-94a07e06a1-v2.woff2 +0 -0
  4. package/.public/assets/fonts/light-f591b13f7d-v2.woff +0 -0
  5. package/.public/assets/images/favicon.ico +0 -0
  6. package/.public/assets/images/favicon.svg +1 -0
  7. package/.public/assets/images/govuk-crest.svg +1 -0
  8. package/.public/assets/images/govuk-icon-180.png +0 -0
  9. package/.public/assets/images/govuk-icon-192.png +0 -0
  10. package/.public/assets/images/govuk-icon-512.png +0 -0
  11. package/.public/assets/images/govuk-icon-mask.svg +1 -0
  12. package/.public/assets/images/govuk-opengraph-image.png +0 -0
  13. package/.public/assets/manifest.json +39 -0
  14. package/.public/assets-manifest.json +24 -0
  15. package/.public/javascripts/application.0fd8c18.min.js +3 -0
  16. package/.public/javascripts/application.0fd8c18.min.js.LICENSE.txt +58 -0
  17. package/.public/javascripts/application.0fd8c18.min.js.map +1 -0
  18. package/.public/javascripts/file-upload.b2f18f5.min.js +2 -0
  19. package/.public/javascripts/file-upload.b2f18f5.min.js.map +1 -0
  20. package/.public/javascripts/vendor/accessible-autocomplete.275d332.min.js +2 -0
  21. package/.public/javascripts/vendor/accessible-autocomplete.275d332.min.js.map +1 -0
  22. package/.public/stylesheets/application.e340021.min.css +14 -0
  23. package/.public/stylesheets/application.e340021.min.css.map +1 -0
  24. package/.server/server/plugins/nunjucks/environment.js +3 -3
  25. package/.server/server/plugins/nunjucks/environment.js.map +1 -1
  26. package/package.json +6 -2
  27. package/.browserslistrc +0 -16
  28. package/.editorconfig +0 -9
  29. package/.eslintrc.cjs +0 -266
  30. package/.github/dependabot.yml +0 -85
  31. package/.github/workflows/check-pull-request.yml +0 -209
  32. package/.github/workflows/pr-notifier.yml +0 -98
  33. package/.github/workflows/publish.yml +0 -111
  34. package/.husky/pre-commit +0 -1
  35. package/.lintstagedrc.js +0 -4
  36. package/.nvmrc +0 -1
  37. package/.prettierignore +0 -8
  38. package/.prettierrc.cjs +0 -26
  39. package/Dockerfile +0 -61
  40. package/Procfile +0 -1
  41. package/babel.config.cjs +0 -55
  42. package/compose/aws.env +0 -4
  43. package/compose/start-localstack.sh +0 -26
  44. package/docker-compose.yaml +0 -86
  45. package/globals.d.ts +0 -1
  46. package/jest.config.cjs +0 -54
  47. package/jest.environment.js +0 -4
  48. package/jest.setup.cjs +0 -14
  49. package/postcss.config.js +0 -26
  50. package/sonar-project.properties +0 -17
  51. package/src/client/javascripts/application.js +0 -87
  52. package/src/client/javascripts/file-upload.js +0 -386
  53. package/src/client/stylesheets/_code.scss +0 -33
  54. package/src/client/stylesheets/_govuk-frontend.scss +0 -4
  55. package/src/client/stylesheets/_prose.scss +0 -56
  56. package/src/client/stylesheets/_service-banner.scss +0 -24
  57. package/src/client/stylesheets/_summary-list.scss +0 -28
  58. package/src/client/stylesheets/_tag-env.scss +0 -24
  59. package/src/client/stylesheets/application.scss +0 -14
  60. package/src/common/cookies.js +0 -58
  61. package/src/common/cookies.test.js +0 -23
  62. package/src/common/types.js +0 -5
  63. package/src/config/index.ts +0 -271
  64. package/src/index.ts +0 -31
  65. package/src/server/common/helpers/logging/logger-options.test.ts +0 -50
  66. package/src/server/common/helpers/logging/logger-options.ts +0 -46
  67. package/src/server/common/helpers/logging/logger.ts +0 -7
  68. package/src/server/common/helpers/logging/request-logger.ts +0 -9
  69. package/src/server/common/helpers/logging/request-tracing.js +0 -10
  70. package/src/server/common/helpers/redis-client.js +0 -70
  71. package/src/server/constants.js +0 -1
  72. package/src/server/forms/README.md +0 -10
  73. package/src/server/forms/components.json +0 -1015
  74. package/src/server/forms/report-a-terrorist.json +0 -270
  75. package/src/server/forms/runner-components-test.json +0 -365
  76. package/src/server/forms/test.json +0 -581
  77. package/src/server/index.test.ts +0 -582
  78. package/src/server/index.ts +0 -140
  79. package/src/server/plugins/blankie.test.ts +0 -73
  80. package/src/server/plugins/blankie.ts +0 -48
  81. package/src/server/plugins/crumb.ts +0 -20
  82. package/src/server/plugins/engine/README.md +0 -87
  83. package/src/server/plugins/engine/components/AutocompleteField.test.ts +0 -294
  84. package/src/server/plugins/engine/components/AutocompleteField.ts +0 -49
  85. package/src/server/plugins/engine/components/CheckboxesField.test.ts +0 -379
  86. package/src/server/plugins/engine/components/CheckboxesField.ts +0 -106
  87. package/src/server/plugins/engine/components/ComponentBase.ts +0 -97
  88. package/src/server/plugins/engine/components/ComponentCollection.ts +0 -278
  89. package/src/server/plugins/engine/components/DatePartsField.test.ts +0 -822
  90. package/src/server/plugins/engine/components/DatePartsField.ts +0 -264
  91. package/src/server/plugins/engine/components/Details.test.ts +0 -49
  92. package/src/server/plugins/engine/components/Details.ts +0 -30
  93. package/src/server/plugins/engine/components/EmailAddressField.test.ts +0 -395
  94. package/src/server/plugins/engine/components/EmailAddressField.ts +0 -55
  95. package/src/server/plugins/engine/components/FileUploadField.test.ts +0 -778
  96. package/src/server/plugins/engine/components/FileUploadField.ts +0 -262
  97. package/src/server/plugins/engine/components/FormComponent.ts +0 -249
  98. package/src/server/plugins/engine/components/Html.test.ts +0 -48
  99. package/src/server/plugins/engine/components/Html.ts +0 -29
  100. package/src/server/plugins/engine/components/InsetText.test.ts +0 -48
  101. package/src/server/plugins/engine/components/InsetText.ts +0 -27
  102. package/src/server/plugins/engine/components/List.test.ts +0 -76
  103. package/src/server/plugins/engine/components/List.ts +0 -72
  104. package/src/server/plugins/engine/components/ListFormComponent.ts +0 -140
  105. package/src/server/plugins/engine/components/MonthYearField.test.ts +0 -567
  106. package/src/server/plugins/engine/components/MonthYearField.ts +0 -222
  107. package/src/server/plugins/engine/components/MultilineTextField.test.ts +0 -558
  108. package/src/server/plugins/engine/components/MultilineTextField.ts +0 -138
  109. package/src/server/plugins/engine/components/NumberField.test.ts +0 -701
  110. package/src/server/plugins/engine/components/NumberField.ts +0 -163
  111. package/src/server/plugins/engine/components/RadiosField.test.ts +0 -288
  112. package/src/server/plugins/engine/components/RadiosField.ts +0 -24
  113. package/src/server/plugins/engine/components/SelectField.test.ts +0 -288
  114. package/src/server/plugins/engine/components/SelectField.ts +0 -47
  115. package/src/server/plugins/engine/components/SelectionControlField.ts +0 -43
  116. package/src/server/plugins/engine/components/TelephoneNumberField.test.ts +0 -356
  117. package/src/server/plugins/engine/components/TelephoneNumberField.ts +0 -67
  118. package/src/server/plugins/engine/components/TextField.test.ts +0 -489
  119. package/src/server/plugins/engine/components/TextField.ts +0 -96
  120. package/src/server/plugins/engine/components/UkAddressField.test.ts +0 -623
  121. package/src/server/plugins/engine/components/UkAddressField.ts +0 -172
  122. package/src/server/plugins/engine/components/YesNoField.test.ts +0 -248
  123. package/src/server/plugins/engine/components/YesNoField.ts +0 -31
  124. package/src/server/plugins/engine/components/constants.ts +0 -1
  125. package/src/server/plugins/engine/components/helpers.ts +0 -330
  126. package/src/server/plugins/engine/components/index.ts +0 -24
  127. package/src/server/plugins/engine/components/types.ts +0 -117
  128. package/src/server/plugins/engine/configureEnginePlugin.ts +0 -47
  129. package/src/server/plugins/engine/helpers.test.ts +0 -791
  130. package/src/server/plugins/engine/helpers.ts +0 -379
  131. package/src/server/plugins/engine/index.ts +0 -7
  132. package/src/server/plugins/engine/models/FormModel.test.ts +0 -42
  133. package/src/server/plugins/engine/models/FormModel.ts +0 -443
  134. package/src/server/plugins/engine/models/RepeatingSummaryViewModel.ts +0 -0
  135. package/src/server/plugins/engine/models/Section.ts +0 -0
  136. package/src/server/plugins/engine/models/SummaryViewModel.test.ts +0 -209
  137. package/src/server/plugins/engine/models/SummaryViewModel.ts +0 -220
  138. package/src/server/plugins/engine/models/index.ts +0 -2
  139. package/src/server/plugins/engine/models/types.ts +0 -114
  140. package/src/server/plugins/engine/outputFormatters/human/v1.test.ts +0 -143
  141. package/src/server/plugins/engine/outputFormatters/human/v1.ts +0 -73
  142. package/src/server/plugins/engine/outputFormatters/index.test.ts +0 -17
  143. package/src/server/plugins/engine/outputFormatters/index.ts +0 -44
  144. package/src/server/plugins/engine/outputFormatters/machine/v1.test.ts +0 -229
  145. package/src/server/plugins/engine/outputFormatters/machine/v1.ts +0 -140
  146. package/src/server/plugins/engine/outputFormatters/machine/v2.test.ts +0 -229
  147. package/src/server/plugins/engine/outputFormatters/machine/v2.ts +0 -153
  148. package/src/server/plugins/engine/pageControllers/FileUploadPageController.test.ts +0 -1108
  149. package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +0 -446
  150. package/src/server/plugins/engine/pageControllers/PageController.test.ts +0 -205
  151. package/src/server/plugins/engine/pageControllers/PageController.ts +0 -176
  152. package/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +0 -1264
  153. package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +0 -561
  154. package/src/server/plugins/engine/pageControllers/README.md +0 -28
  155. package/src/server/plugins/engine/pageControllers/RepeatPageController.test.ts +0 -264
  156. package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +0 -458
  157. package/src/server/plugins/engine/pageControllers/StartPageController.ts +0 -18
  158. package/src/server/plugins/engine/pageControllers/StatusPageController.ts +0 -50
  159. package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +0 -261
  160. package/src/server/plugins/engine/pageControllers/TerminalController.test.ts +0 -28
  161. package/src/server/plugins/engine/pageControllers/TerminalPageController.ts +0 -19
  162. package/src/server/plugins/engine/pageControllers/helpers.test.ts +0 -198
  163. package/src/server/plugins/engine/pageControllers/helpers.ts +0 -101
  164. package/src/server/plugins/engine/pageControllers/index.ts +0 -10
  165. package/src/server/plugins/engine/pageControllers/validationOptions.ts +0 -89
  166. package/src/server/plugins/engine/plugin.ts +0 -673
  167. package/src/server/plugins/engine/services/formSubmissionService.js +0 -46
  168. package/src/server/plugins/engine/services/formsService.js +0 -46
  169. package/src/server/plugins/engine/services/formsService.test.js +0 -90
  170. package/src/server/plugins/engine/services/index.js +0 -3
  171. package/src/server/plugins/engine/services/notifyService.test.ts +0 -132
  172. package/src/server/plugins/engine/services/notifyService.ts +0 -64
  173. package/src/server/plugins/engine/services/uploadService.js +0 -60
  174. package/src/server/plugins/engine/types.ts +0 -315
  175. package/src/server/plugins/engine/views/components/autocompletefield.html +0 -5
  176. package/src/server/plugins/engine/views/components/checkboxesfield.html +0 -5
  177. package/src/server/plugins/engine/views/components/datepartsfield.html +0 -5
  178. package/src/server/plugins/engine/views/components/details.html +0 -6
  179. package/src/server/plugins/engine/views/components/emailaddressfield.html +0 -5
  180. package/src/server/plugins/engine/views/components/fileuploadfield-key.html +0 -8
  181. package/src/server/plugins/engine/views/components/fileuploadfield-value.html +0 -3
  182. package/src/server/plugins/engine/views/components/fileuploadfield.html +0 -24
  183. package/src/server/plugins/engine/views/components/html.html +0 -3
  184. package/src/server/plugins/engine/views/components/insettext.html +0 -7
  185. package/src/server/plugins/engine/views/components/list.html +0 -36
  186. package/src/server/plugins/engine/views/components/monthyearfield.html +0 -5
  187. package/src/server/plugins/engine/views/components/multilinetextfield.html +0 -10
  188. package/src/server/plugins/engine/views/components/numberfield.html +0 -5
  189. package/src/server/plugins/engine/views/components/radiosfield.html +0 -5
  190. package/src/server/plugins/engine/views/components/selectfield.html +0 -5
  191. package/src/server/plugins/engine/views/components/telephonenumberfield.html +0 -5
  192. package/src/server/plugins/engine/views/components/textfield.html +0 -5
  193. package/src/server/plugins/engine/views/components/ukaddressfield.html +0 -25
  194. package/src/server/plugins/engine/views/components/yesnofield.html +0 -5
  195. package/src/server/plugins/engine/views/file-upload.html +0 -45
  196. package/src/server/plugins/engine/views/index.html +0 -39
  197. package/src/server/plugins/engine/views/item-delete.html +0 -56
  198. package/src/server/plugins/engine/views/partials/components.html +0 -6
  199. package/src/server/plugins/engine/views/partials/conditional-components.html +0 -3
  200. package/src/server/plugins/engine/views/partials/debug.html +0 -44
  201. package/src/server/plugins/engine/views/partials/form.html +0 -15
  202. package/src/server/plugins/engine/views/partials/heading.html +0 -16
  203. package/src/server/plugins/engine/views/partials/preview-banner.html +0 -32
  204. package/src/server/plugins/engine/views/partials/preview-banner.test.js +0 -122
  205. package/src/server/plugins/engine/views/partials/warn-missing-notification-email.html +0 -10
  206. package/src/server/plugins/engine/views/repeat-list-summary.html +0 -53
  207. package/src/server/plugins/errorPages.ts +0 -58
  208. package/src/server/plugins/nunjucks/context.js +0 -88
  209. package/src/server/plugins/nunjucks/context.test.js +0 -142
  210. package/src/server/plugins/nunjucks/enviroment.test.js +0 -201
  211. package/src/server/plugins/nunjucks/environment.js +0 -116
  212. package/src/server/plugins/nunjucks/filters/answer.js +0 -27
  213. package/src/server/plugins/nunjucks/filters/answer.test.js +0 -89
  214. package/src/server/plugins/nunjucks/filters/evaluate.js +0 -21
  215. package/src/server/plugins/nunjucks/filters/field.js +0 -28
  216. package/src/server/plugins/nunjucks/filters/field.test.js +0 -75
  217. package/src/server/plugins/nunjucks/filters/highlight.js +0 -11
  218. package/src/server/plugins/nunjucks/filters/href.js +0 -30
  219. package/src/server/plugins/nunjucks/filters/href.test.js +0 -80
  220. package/src/server/plugins/nunjucks/filters/index.js +0 -8
  221. package/src/server/plugins/nunjucks/filters/inspect.js +0 -15
  222. package/src/server/plugins/nunjucks/filters/page.js +0 -24
  223. package/src/server/plugins/nunjucks/filters/page.test.js +0 -65
  224. package/src/server/plugins/nunjucks/index.js +0 -3
  225. package/src/server/plugins/nunjucks/plugin.js +0 -40
  226. package/src/server/plugins/nunjucks/render.js +0 -42
  227. package/src/server/plugins/nunjucks/types.js +0 -40
  228. package/src/server/plugins/pulse.ts +0 -11
  229. package/src/server/plugins/router.ts +0 -201
  230. package/src/server/plugins/session.ts +0 -28
  231. package/src/server/routes/health.js +0 -13
  232. package/src/server/routes/health.test.js +0 -35
  233. package/src/server/routes/index.test.ts +0 -125
  234. package/src/server/routes/index.ts +0 -2
  235. package/src/server/routes/public.ts +0 -47
  236. package/src/server/routes/types.ts +0 -48
  237. package/src/server/schemas/index.ts +0 -34
  238. package/src/server/secure-context.js +0 -43
  239. package/src/server/services/cacheService.test.ts +0 -276
  240. package/src/server/services/cacheService.ts +0 -131
  241. package/src/server/services/httpService.test.js +0 -491
  242. package/src/server/services/httpService.ts +0 -50
  243. package/src/server/services/index.ts +0 -1
  244. package/src/server/types.ts +0 -54
  245. package/src/server/utils/notify.test.ts +0 -37
  246. package/src/server/utils/notify.ts +0 -50
  247. package/src/server/utils/secure-context/get-trust-store-certs.js +0 -11
  248. package/src/server/utils/secure-context/get-trust-store-certs.test.js +0 -19
  249. package/src/server/utils/utils.js +0 -24
  250. package/src/server/utils/utils.test.js +0 -54
  251. package/src/server/views/404.html +0 -16
  252. package/src/server/views/500.html +0 -19
  253. package/src/server/views/components/debug/macro.njk +0 -3
  254. package/src/server/views/components/debug/template.njk +0 -13
  255. package/src/server/views/components/service-banner/macro.njk +0 -3
  256. package/src/server/views/components/service-banner/template.njk +0 -20
  257. package/src/server/views/components/service-banner/template.test.js +0 -43
  258. package/src/server/views/components/tag-env/macro.njk +0 -3
  259. package/src/server/views/components/tag-env/template.njk +0 -30
  260. package/src/server/views/components/tag-env/template.test.js +0 -66
  261. package/src/server/views/confirmation.html +0 -19
  262. package/src/server/views/help/accessibility-statement.html +0 -58
  263. package/src/server/views/help/cookie-preferences.html +0 -57
  264. package/src/server/views/help/cookies.html +0 -71
  265. package/src/server/views/help/get-support.html +0 -37
  266. package/src/server/views/help/privacy-notice.html +0 -68
  267. package/src/server/views/help/terms-and-conditions.html +0 -83
  268. package/src/server/views/layout.html +0 -199
  269. package/src/server/views/summary.html +0 -50
  270. package/src/typings/hapi/index.d.ts +0 -95
  271. package/src/typings/hapi-tracing/index.d.ts +0 -6
  272. package/src/typings/index.d.ts +0 -3
  273. package/src/typings/joi/index.d.ts +0 -22
  274. package/stylelint.config.js +0 -10
  275. package/test/client/javascripts/file-upload.test.js +0 -1197
  276. package/test/condition/checkboxes.test.js +0 -112
  277. package/test/condition/radios.test.js +0 -112
  278. package/test/condition/text.test.js +0 -103
  279. package/test/fixtures/assets-manifest.json +0 -4
  280. package/test/fixtures/form.js +0 -86
  281. package/test/fixtures/index.js +0 -2
  282. package/test/fixtures/list.js +0 -92
  283. package/test/form/cookies.test.js +0 -338
  284. package/test/form/csrf.test.js +0 -87
  285. package/test/form/definitions/basic.js +0 -101
  286. package/test/form/definitions/blank.js +0 -10
  287. package/test/form/definitions/checkboxes.json +0 -88
  288. package/test/form/definitions/components.json +0 -452
  289. package/test/form/definitions/conditional-reveal.js +0 -140
  290. package/test/form/definitions/conditions-basic.js +0 -187
  291. package/test/form/definitions/conditions-complex.js +0 -338
  292. package/test/form/definitions/conditions-dates.js +0 -78
  293. package/test/form/definitions/conditions-escaping.js +0 -143
  294. package/test/form/definitions/demo-cph-number.js +0 -3099
  295. package/test/form/definitions/feedback.json +0 -45
  296. package/test/form/definitions/fields-optional.js +0 -402
  297. package/test/form/definitions/fields-required.js +0 -402
  298. package/test/form/definitions/file-upload-basic.js +0 -44
  299. package/test/form/definitions/file-upload.js +0 -66
  300. package/test/form/definitions/minimal.js +0 -39
  301. package/test/form/definitions/phase-alpha.json +0 -33
  302. package/test/form/definitions/phase-default.json +0 -26
  303. package/test/form/definitions/radios.json +0 -88
  304. package/test/form/definitions/repeat-mixed.js +0 -54
  305. package/test/form/definitions/repeat.js +0 -70
  306. package/test/form/definitions/status.json +0 -126
  307. package/test/form/definitions/templates.js +0 -183
  308. package/test/form/definitions/test.json +0 -581
  309. package/test/form/definitions/text.json +0 -75
  310. package/test/form/definitions/titles.json +0 -170
  311. package/test/form/definitions.test.js +0 -47
  312. package/test/form/exit-page.test.js +0 -210
  313. package/test/form/feedback.test.js +0 -68
  314. package/test/form/fields-optional.test.js +0 -237
  315. package/test/form/fields-required.test.js +0 -294
  316. package/test/form/file-upload.test.js +0 -313
  317. package/test/form/govuk-notify.test.js +0 -449
  318. package/test/form/journey-basic.test.js +0 -444
  319. package/test/form/persist-files.test.js +0 -227
  320. package/test/form/phase-banner.test.js +0 -71
  321. package/test/form/repeat.test.js +0 -628
  322. package/test/form/summary-submission-email.test.js +0 -95
  323. package/test/form/template.test.js +0 -288
  324. package/test/form/titles.test.js +0 -204
  325. package/test/helpers/component-helpers.js +0 -74
  326. package/test/utils/get-cookie.js +0 -42
  327. package/test/utils/get-form-definitions.js +0 -18
  328. package/tmp.pdf +0 -1
  329. package/tsconfig.json +0 -28
  330. package/webpack.config.js +0 -208
@@ -1,112 +0,0 @@
1
- import { resolve } from 'node:path'
2
-
3
- import { StatusCodes } from 'http-status-codes'
4
-
5
- import { createServer } from '~/src/server/index.js'
6
- import { getFormMetadata } from '~/src/server/plugins/engine/services/formsService.js'
7
- import * as fixtures from '~/test/fixtures/index.js'
8
- import { renderResponse } from '~/test/helpers/component-helpers.js'
9
-
10
- const basePath = '/checkboxes'
11
- const key = 'wqJmSf'
12
-
13
- jest.mock('~/src/server/plugins/engine/services/formsService.js')
14
-
15
- describe('Checkboxes based conditions', () => {
16
- /** @type {Server} */
17
- let server
18
-
19
- // Create server before each test
20
- beforeAll(async () => {
21
- server = await createServer({
22
- formFileName: 'checkboxes.json',
23
- formFilePath: resolve(import.meta.dirname, '../form/definitions')
24
- })
25
-
26
- await server.initialize()
27
- })
28
-
29
- beforeEach(() => {
30
- jest.mocked(getFormMetadata).mockResolvedValue(fixtures.form.metadata)
31
- })
32
-
33
- afterAll(async () => {
34
- await server.stop()
35
- })
36
-
37
- test('Checkboxes are rendered', async () => {
38
- const { container } = await renderResponse(server, {
39
- url: `${basePath}/first-page`
40
- })
41
-
42
- for (const example of [
43
- {
44
- name: key,
45
- id: key,
46
- text: 'Shire',
47
- value: 'shire'
48
- },
49
- {
50
- name: key,
51
- id: `${key}-2`,
52
- text: 'Race',
53
- value: 'race'
54
- },
55
- {
56
- name: key,
57
- id: `${key}-3`,
58
- text: 'Pantomime',
59
- value: 'pantomime'
60
- },
61
- {
62
- name: key,
63
- id: `${key}-4`,
64
- text: 'Other',
65
- value: 'other'
66
- }
67
- ]) {
68
- const $checkbox = container.getByRole('checkbox', {
69
- name: example.text
70
- })
71
-
72
- expect($checkbox).toBeInTheDocument()
73
- expect($checkbox).toHaveAttribute('id', example.id)
74
- expect($checkbox).toHaveAttribute('name', example.name)
75
- expect($checkbox).toHaveAttribute('value', example.value)
76
- expect($checkbox).toHaveClass('govuk-checkboxes__input')
77
- expect($checkbox).not.toBeChecked()
78
- }
79
- })
80
-
81
- test('Testing POST /first-page with nothing checked redirects correctly', async () => {
82
- const form = {}
83
-
84
- const res = await server.inject({
85
- url: `${basePath}/first-page`,
86
- method: 'POST',
87
- payload: form
88
- })
89
-
90
- expect(res.statusCode).toBe(StatusCodes.SEE_OTHER)
91
- expect(res.headers.location).toBe(`${basePath}/second-page`)
92
- })
93
-
94
- test('Testing POST /first-page with "other" checked redirects correctly', async () => {
95
- const form = {
96
- [key]: 'other'
97
- }
98
-
99
- const res = await server.inject({
100
- url: `${basePath}/first-page`,
101
- method: 'POST',
102
- payload: form
103
- })
104
-
105
- expect(res.statusCode).toBe(StatusCodes.SEE_OTHER)
106
- expect(res.headers.location).toBe(`${basePath}/third-page`)
107
- })
108
- })
109
-
110
- /**
111
- * @import { Server } from '@hapi/hapi'
112
- */
@@ -1,112 +0,0 @@
1
- import { resolve } from 'node:path'
2
-
3
- import { StatusCodes } from 'http-status-codes'
4
-
5
- import { createServer } from '~/src/server/index.js'
6
- import { getFormMetadata } from '~/src/server/plugins/engine/services/formsService.js'
7
- import * as fixtures from '~/test/fixtures/index.js'
8
- import { renderResponse } from '~/test/helpers/component-helpers.js'
9
-
10
- const basePath = '/radios'
11
- const key = 'wqJmSf'
12
-
13
- jest.mock('~/src/server/plugins/engine/services/formsService.js')
14
-
15
- describe('Radio based conditions', () => {
16
- /** @type {Server} */
17
- let server
18
-
19
- // Create server before each test
20
- beforeAll(async () => {
21
- server = await createServer({
22
- formFileName: 'radios.json',
23
- formFilePath: resolve(import.meta.dirname, '../form/definitions')
24
- })
25
-
26
- await server.initialize()
27
- })
28
-
29
- beforeEach(() => {
30
- jest.mocked(getFormMetadata).mockResolvedValue(fixtures.form.metadata)
31
- })
32
-
33
- afterAll(async () => {
34
- await server.stop()
35
- })
36
-
37
- test('Radio are rendered', async () => {
38
- const { container } = await renderResponse(server, {
39
- url: `${basePath}/first-page`
40
- })
41
-
42
- for (const example of [
43
- {
44
- name: key,
45
- id: key,
46
- text: 'Shire',
47
- value: 'shire'
48
- },
49
- {
50
- name: key,
51
- id: `${key}-2`,
52
- text: 'Race',
53
- value: 'race'
54
- },
55
- {
56
- name: key,
57
- id: `${key}-3`,
58
- text: 'Pantomime',
59
- value: 'pantomime'
60
- },
61
- {
62
- name: key,
63
- id: `${key}-4`,
64
- text: 'Other',
65
- value: 'other'
66
- }
67
- ]) {
68
- const $radio = container.getByRole('radio', {
69
- name: example.text
70
- })
71
-
72
- expect($radio).toBeInTheDocument()
73
- expect($radio).toHaveAttribute('id', example.id)
74
- expect($radio).toHaveAttribute('name', example.name)
75
- expect($radio).toHaveAttribute('value', example.value)
76
- expect($radio).toHaveClass('govuk-radios__input')
77
- expect($radio).not.toBeChecked()
78
- }
79
- })
80
-
81
- test('Testing POST /first-page with nothing checked redirects correctly', async () => {
82
- const form = {}
83
-
84
- const res = await server.inject({
85
- url: `${basePath}/first-page`,
86
- method: 'POST',
87
- payload: form
88
- })
89
-
90
- expect(res.statusCode).toBe(StatusCodes.SEE_OTHER)
91
- expect(res.headers.location).toBe(`${basePath}/second-page`)
92
- })
93
-
94
- test('Testing POST /first-page with "other" checked redirects correctly', async () => {
95
- const form = {
96
- [key]: 'other'
97
- }
98
-
99
- const res = await server.inject({
100
- url: `${basePath}/first-page`,
101
- method: 'POST',
102
- payload: form
103
- })
104
-
105
- expect(res.statusCode).toBe(StatusCodes.SEE_OTHER)
106
- expect(res.headers.location).toBe(`${basePath}/third-page`)
107
- })
108
- })
109
-
110
- /**
111
- * @import { Server } from '@hapi/hapi'
112
- */
@@ -1,103 +0,0 @@
1
- import { resolve } from 'node:path'
2
-
3
- import { StatusCodes } from 'http-status-codes'
4
-
5
- import { createServer } from '~/src/server/index.js'
6
- import { getFormMetadata } from '~/src/server/plugins/engine/services/formsService.js'
7
- import * as fixtures from '~/test/fixtures/index.js'
8
- import { renderResponse } from '~/test/helpers/component-helpers.js'
9
-
10
- const basePath = '/text'
11
- const key = 'wqJmSf'
12
-
13
- jest.mock('~/src/server/plugins/engine/services/formsService.js')
14
-
15
- describe('TextField based conditions', () => {
16
- /** @type {Server} */
17
- let server
18
-
19
- // Create server before each test
20
- beforeAll(async () => {
21
- server = await createServer({
22
- formFileName: 'text.json',
23
- formFilePath: resolve(import.meta.dirname, '../form/definitions')
24
- })
25
-
26
- await server.initialize()
27
- })
28
-
29
- beforeEach(() => {
30
- jest.mocked(getFormMetadata).mockResolvedValue(fixtures.form.metadata)
31
- })
32
-
33
- afterAll(async () => {
34
- await server.stop()
35
- })
36
-
37
- test('TextField is rendered', async () => {
38
- const { container } = await renderResponse(server, {
39
- url: `${basePath}/first-page`
40
- })
41
-
42
- const $input = container.getByRole('textbox', {
43
- name: 'First page (optional)'
44
- })
45
-
46
- const $warning = container.getByRole('link', {
47
- name: 'enter the email address (opens in new tab)'
48
- })
49
-
50
- expect($warning).toBeInTheDocument()
51
- expect($input).toBeInTheDocument()
52
- expect($input).toHaveAttribute('id', key)
53
- expect($input).toHaveAttribute('name', key)
54
- expect($input).toHaveClass('govuk-input')
55
- expect($input).not.toHaveValue()
56
- })
57
-
58
- test('Testing POST /first-page without values does not redirect', async () => {
59
- const form = {}
60
-
61
- const res = await server.inject({
62
- url: `${basePath}/first-page`,
63
- method: 'POST',
64
- payload: form
65
- })
66
-
67
- expect(res.statusCode).toBe(StatusCodes.OK)
68
- })
69
-
70
- test('Testing POST /first-page with an empty string redirects correctly', async () => {
71
- const form = {
72
- [key]: ''
73
- }
74
-
75
- const res = await server.inject({
76
- url: `${basePath}/first-page`,
77
- method: 'POST',
78
- payload: form
79
- })
80
-
81
- expect(res.statusCode).toBe(StatusCodes.SEE_OTHER)
82
- expect(res.headers.location).toBe(`${basePath}/second-page`)
83
- })
84
-
85
- test('Testing POST /first-page with an string "other" redirects correctly', async () => {
86
- const form = {
87
- [key]: 'other'
88
- }
89
-
90
- const res = await server.inject({
91
- url: `${basePath}/first-page`,
92
- method: 'POST',
93
- payload: form
94
- })
95
-
96
- expect(res.statusCode).toBe(StatusCodes.SEE_OTHER)
97
- expect(res.headers.location).toBe(`${basePath}/third-page`)
98
- })
99
- })
100
-
101
- /**
102
- * @import { Server } from '@hapi/hapi'
103
- */
@@ -1,4 +0,0 @@
1
- {
2
- "example.mjs": "javascripts/example.xxxxxxx.min.js",
3
- "example.scss": "stylesheets/example.xxxxxxx.min.css"
4
- }
@@ -1,86 +0,0 @@
1
- import {
2
- ComponentType,
3
- ControllerPath,
4
- ControllerType
5
- } from '@defra/forms-model'
6
-
7
- const now = new Date()
8
-
9
- /**
10
- * @satisfies {FormMetadataAuthor}
11
- */
12
- export const author = {
13
- id: 'J6PlucvwkmNlYxX9HnSEj27AcJAVx_08IvZ-IPNTvAN',
14
- displayName: 'Enrique Chase'
15
- }
16
-
17
- /**
18
- * @satisfies {FormMetadataState}
19
- */
20
- export const state = {
21
- createdAt: now,
22
- createdBy: author,
23
- updatedAt: now,
24
- updatedBy: author
25
- }
26
-
27
- /**
28
- * @satisfies {FormMetadata}
29
- */
30
- export const metadata = {
31
- id: '661e4ca5039739ef2902b214',
32
- slug: 'test-form',
33
- title: 'Test form',
34
- organisation: 'Defra',
35
- teamName: 'Defra Forms',
36
- teamEmail: 'defraforms@defra.gov.uk',
37
- createdAt: now,
38
- createdBy: author,
39
- updatedAt: now,
40
- updatedBy: author
41
- }
42
-
43
- /**
44
- * @satisfies {FormDefinition}
45
- */
46
- export const definition = {
47
- name: '',
48
- startPage: '/page-one',
49
- pages: [
50
- {
51
- path: '/page-one',
52
- title: 'Page one',
53
- section: 'section',
54
- components: [
55
- {
56
- type: ComponentType.TextField,
57
- name: 'textField',
58
- title: 'This is your first field',
59
- hint: 'Help text',
60
- options: {},
61
- schema: {}
62
- }
63
- ],
64
- next: [{ path: ControllerPath.Summary }]
65
- },
66
- {
67
- title: 'Summary',
68
- path: ControllerPath.Summary,
69
- controller: ControllerType.Summary
70
- }
71
- ],
72
- sections: [
73
- {
74
- name: 'section',
75
- title: 'Section title',
76
- hideTitle: false
77
- }
78
- ],
79
- conditions: [],
80
- lists: [],
81
- outputEmail: 'enrique.chase@defra.gov.uk'
82
- }
83
-
84
- /**
85
- * @import { FormDefinition, FormMetadata, FormMetadataAuthor, FormMetadataState } from '@defra/forms-model'
86
- */
@@ -1,2 +0,0 @@
1
- export * as form from '~/test/fixtures/form.js'
2
- export * as list from '~/test/fixtures/list.js'
@@ -1,92 +0,0 @@
1
- /**
2
- * @satisfies {List}
3
- */
4
- export const listNumber = {
5
- title: 'Example number list',
6
- name: 'listNumber',
7
- type: 'number',
8
- items: [
9
- { text: '1 point', value: 1 },
10
- { text: '2 points', value: 2 },
11
- { text: '3 points', value: 3 },
12
- { text: '4 points', value: 4 }
13
- ]
14
- }
15
-
16
- export const listNumberExamples = [
17
- {
18
- text: '1 point',
19
- value: 1,
20
- state: 1
21
- },
22
- {
23
- text: '2 points',
24
- value: 2,
25
- state: 2
26
- },
27
- {
28
- text: '3 points',
29
- value: 3,
30
- state: 3
31
- },
32
- {
33
- text: '4 points',
34
- value: 4,
35
- state: 4
36
- }
37
- ]
38
-
39
- /**
40
- * @satisfies {List}
41
- */
42
- export const listString = {
43
- title: 'Example string list',
44
- name: 'listString',
45
- type: 'string',
46
- items: [
47
- { text: '1 hour', value: '1' },
48
- { text: '2 hours', value: '2' },
49
- { text: '3 hours', value: '3' },
50
- { text: '4 hours', value: '4' }
51
- ]
52
- }
53
-
54
- export const listStringExamples = [
55
- {
56
- text: '1 hour',
57
- value: '1',
58
- state: '1'
59
- },
60
- {
61
- text: '2 hours',
62
- value: '2',
63
- state: '2'
64
- },
65
- {
66
- text: '3 hours',
67
- value: '3',
68
- state: '3'
69
- },
70
- {
71
- text: '4 hours',
72
- value: '4',
73
- state: '4'
74
- }
75
- ]
76
-
77
- export const listYesNoExamples = [
78
- {
79
- text: 'Yes',
80
- value: true,
81
- state: true
82
- },
83
- {
84
- text: 'No',
85
- value: false,
86
- state: false
87
- }
88
- ]
89
-
90
- /**
91
- * @import { List } from '@defra/forms-model'
92
- */