From ab3b582175d65f822d2bab5885fa58d6789f1d34 Mon Sep 17 00:00:00 2001 From: Jez Barnsley Date: Fri, 19 Dec 2025 12:18:12 +0000 Subject: [PATCH 1/5] Reworked to apply invalid state to payload --- src/server/plugins/engine/index.ts | 3 + .../pageControllers/QuestionPageController.ts | 7 +- .../pageControllers/helpers/state.test.ts | 72 ++++++++++++++++++- .../engine/pageControllers/helpers/state.ts | 39 +++++++++- 4 files changed, 117 insertions(+), 4 deletions(-) diff --git a/src/server/plugins/engine/index.ts b/src/server/plugins/engine/index.ts index 3b73bb5d3..ff9f86baf 100644 --- a/src/server/plugins/engine/index.ts +++ b/src/server/plugins/engine/index.ts @@ -31,6 +31,9 @@ const globals = { export const VIEW_PATH = 'src/server/plugins/engine/views' export const PLUGIN_PATH = 'node_modules/@defra/forms-engine-plugin' +export const STATE_POTENTIALLY_INVALID = '__currentPageStatePotentiallyInvalid' +export const CURRENT_PAGE_PATH = '__currentPagePath' + export const prepareNunjucksEnvironment = function ( env: Environment, pluginOptions: PluginOptions diff --git a/src/server/plugins/engine/pageControllers/QuestionPageController.ts b/src/server/plugins/engine/pageControllers/QuestionPageController.ts index ec778d6a1..d4d66ebc4 100644 --- a/src/server/plugins/engine/pageControllers/QuestionPageController.ts +++ b/src/server/plugins/engine/pageControllers/QuestionPageController.ts @@ -28,7 +28,10 @@ import { } from '~/src/server/plugins/engine/helpers.js' import { type FormModel } from '~/src/server/plugins/engine/models/index.js' import { PageController } from '~/src/server/plugins/engine/pageControllers/PageController.js' -import { prefillStateFromQueryParameters } from '~/src/server/plugins/engine/pageControllers/helpers/state.js' +import { + copyPotentiallyInvalidFromState, + prefillStateFromQueryParameters +} from '~/src/server/plugins/engine/pageControllers/helpers/state.js' import { type AnyFormRequest, type FormContext, @@ -410,6 +413,8 @@ export class QuestionPageController extends PageController { return h.redirect(`${request.url.origin}${request.url.pathname}`) } + copyPotentiallyInvalidFromState(request, context) + const viewModel = this.getViewModel(request, context) viewModel.errors = collection.getViewErrors(viewModel.errors) diff --git a/src/server/plugins/engine/pageControllers/helpers/state.test.ts b/src/server/plugins/engine/pageControllers/helpers/state.test.ts index a3d008d78..8bb9715f4 100644 --- a/src/server/plugins/engine/pageControllers/helpers/state.test.ts +++ b/src/server/plugins/engine/pageControllers/helpers/state.test.ts @@ -3,10 +3,15 @@ import { ComponentType, type Page } from '@defra/forms-model' import { type FormModel } from '~/src/server/plugins/engine/models/FormModel.js' import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js' import { + copyPotentiallyInvalidFromState, prefillStateFromQueryParameters, stripParam } from '~/src/server/plugins/engine/pageControllers/helpers/state.js' -import { type AnyFormRequest } from '~/src/server/plugins/engine/types.js' +import { + type AnyFormRequest, + type FormContext +} from '~/src/server/plugins/engine/types.js' +import { type FormRequest } from '~/src/server/routes/types.js' import { type FormsService, type Services } from '~/src/server/types.js' function buildMockPage( @@ -218,4 +223,69 @@ describe('State helpers', () => { expect(stripParam(params, 'anyParam')).toBeUndefined() }) }) + + describe('copyPotentiallyInvalidFromState', () => { + it('should ignore if no invalid state', () => { + const mockRequest = {} as FormRequest + const mockContext = { + state: { abc: '123' }, + payload: {} + } as unknown as FormContext + copyPotentiallyInvalidFromState(mockRequest, mockContext) + expect(mockContext.state).toEqual({ abc: '123' }) + expect(mockContext.payload).toEqual({}) + }) + + it('should ignore if wrong path', () => { + const mockRequest = { + url: { + pathname: '/form-page1' + } + } as unknown as FormRequest + const mockContext = { + state: { + abc: '123', + __currentPageStatePotentiallyInvalid: { + def: '456', + __currentPagePath: '/root' + } + }, + payload: {} + } as unknown as FormContext + copyPotentiallyInvalidFromState(mockRequest, mockContext) + expect(mockContext.state).toEqual({ + abc: '123', + __currentPageStatePotentiallyInvalid: { + def: '456', + __currentPagePath: '/root' + } + }) + expect(mockContext.payload).toEqual({}) + }) + + it('should apply if correct path', () => { + const mockRequest = { + url: { + pathname: '/form-page1' + } + } as unknown as FormRequest + const mockContext = { + state: { + abc: '123', + __currentPageStatePotentiallyInvalid: { + def: '456', + __currentPagePath: '/form-page1' + } + }, + payload: {} + } as unknown as FormContext + copyPotentiallyInvalidFromState(mockRequest, mockContext) + expect(mockContext.state).toEqual({ + abc: '123' + }) + expect(mockContext.payload).toEqual({ + def: '456' + }) + }) + }) }) diff --git a/src/server/plugins/engine/pageControllers/helpers/state.ts b/src/server/plugins/engine/pageControllers/helpers/state.ts index 01357329e..edd2679a4 100644 --- a/src/server/plugins/engine/pageControllers/helpers/state.ts +++ b/src/server/plugins/engine/pageControllers/helpers/state.ts @@ -1,11 +1,17 @@ import { getHiddenFields } from '@defra/forms-model' +import { + CURRENT_PAGE_PATH, + STATE_POTENTIALLY_INVALID +} from '~/src/server/plugins/engine/index.js' import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js' import { type AnyFormRequest, - type FormStateValue + type FormContext, + type FormStateValue, + type FormValue } from '~/src/server/plugins/engine/types.js' -import { type FormQuery } from '~/src/server/routes/types.js' +import { type FormQuery, type FormRequest } from '~/src/server/routes/types.js' import { type Services } from '~/src/server/types.js' /** @@ -91,3 +97,32 @@ export async function prefillStateFromQueryParameters( return true } + +/** + * Copies any potentially invalid state into the payload, and removes those values from state + * NOTE - this method has a side-effect on 'context.state' and 'context.payload' + * @param request - the form request + * @param context - the form context + */ +export function copyPotentiallyInvalidFromState( + request: FormRequest, + context: FormContext +) { + const potentiallyInvalidState = context.state[STATE_POTENTIALLY_INVALID] as + | Record + | undefined + if (!potentiallyInvalidState) { + return + } + + const originalPath = potentiallyInvalidState[CURRENT_PAGE_PATH] + + if (originalPath && originalPath === request.url.pathname) { + potentiallyInvalidState[CURRENT_PAGE_PATH] = undefined + context.payload = { + ...context.payload, + ...potentiallyInvalidState + } + context.state[STATE_POTENTIALLY_INVALID] = undefined + } +} From d4cfa05e5c8f054f5ba4259ca49fdcf1eda14f6a Mon Sep 17 00:00:00 2001 From: Jez Barnsley Date: Fri, 19 Dec 2025 13:00:30 +0000 Subject: [PATCH 2/5] Moved code to FormModel --- src/server/plugins/engine/models/FormModel.ts | 4 ++++ .../pageControllers/QuestionPageController.ts | 7 +------ .../pageControllers/helpers/state.test.ts | 20 +++++++++---------- .../engine/pageControllers/helpers/state.ts | 7 ++++--- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/server/plugins/engine/models/FormModel.ts b/src/server/plugins/engine/models/FormModel.ts index 6050a33b4..9605346ba 100644 --- a/src/server/plugins/engine/models/FormModel.ts +++ b/src/server/plugins/engine/models/FormModel.ts @@ -48,6 +48,7 @@ import { createPage, type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js' +import { copyPotentiallyInvalidState } from '~/src/server/plugins/engine/pageControllers/helpers/state.js' import { validationOptions as opts } from '~/src/server/plugins/engine/pageControllers/validationOptions.js' import * as defaultServices from '~/src/server/plugins/engine/services/index.js' import { @@ -401,6 +402,9 @@ export class FormModel { // Add paths for navigation this.assignPaths(context) + // Handle restoration of payload from say a 'save-and-exit' request + copyPotentiallyInvalidState(request, context) + return context } diff --git a/src/server/plugins/engine/pageControllers/QuestionPageController.ts b/src/server/plugins/engine/pageControllers/QuestionPageController.ts index d4d66ebc4..ec778d6a1 100644 --- a/src/server/plugins/engine/pageControllers/QuestionPageController.ts +++ b/src/server/plugins/engine/pageControllers/QuestionPageController.ts @@ -28,10 +28,7 @@ import { } from '~/src/server/plugins/engine/helpers.js' import { type FormModel } from '~/src/server/plugins/engine/models/index.js' import { PageController } from '~/src/server/plugins/engine/pageControllers/PageController.js' -import { - copyPotentiallyInvalidFromState, - prefillStateFromQueryParameters -} from '~/src/server/plugins/engine/pageControllers/helpers/state.js' +import { prefillStateFromQueryParameters } from '~/src/server/plugins/engine/pageControllers/helpers/state.js' import { type AnyFormRequest, type FormContext, @@ -413,8 +410,6 @@ export class QuestionPageController extends PageController { return h.redirect(`${request.url.origin}${request.url.pathname}`) } - copyPotentiallyInvalidFromState(request, context) - const viewModel = this.getViewModel(request, context) viewModel.errors = collection.getViewErrors(viewModel.errors) diff --git a/src/server/plugins/engine/pageControllers/helpers/state.test.ts b/src/server/plugins/engine/pageControllers/helpers/state.test.ts index 8bb9715f4..0803c7f6f 100644 --- a/src/server/plugins/engine/pageControllers/helpers/state.test.ts +++ b/src/server/plugins/engine/pageControllers/helpers/state.test.ts @@ -3,15 +3,15 @@ import { ComponentType, type Page } from '@defra/forms-model' import { type FormModel } from '~/src/server/plugins/engine/models/FormModel.js' import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js' import { - copyPotentiallyInvalidFromState, + copyPotentiallyInvalidState, prefillStateFromQueryParameters, stripParam } from '~/src/server/plugins/engine/pageControllers/helpers/state.js' import { type AnyFormRequest, - type FormContext + type FormContext, + type FormContextRequest } from '~/src/server/plugins/engine/types.js' -import { type FormRequest } from '~/src/server/routes/types.js' import { type FormsService, type Services } from '~/src/server/types.js' function buildMockPage( @@ -224,14 +224,14 @@ describe('State helpers', () => { }) }) - describe('copyPotentiallyInvalidFromState', () => { + describe('copyPotentiallyInvalidState', () => { it('should ignore if no invalid state', () => { - const mockRequest = {} as FormRequest + const mockRequest = {} as FormContextRequest const mockContext = { state: { abc: '123' }, payload: {} } as unknown as FormContext - copyPotentiallyInvalidFromState(mockRequest, mockContext) + copyPotentiallyInvalidState(mockRequest, mockContext) expect(mockContext.state).toEqual({ abc: '123' }) expect(mockContext.payload).toEqual({}) }) @@ -241,7 +241,7 @@ describe('State helpers', () => { url: { pathname: '/form-page1' } - } as unknown as FormRequest + } as unknown as FormContextRequest const mockContext = { state: { abc: '123', @@ -252,7 +252,7 @@ describe('State helpers', () => { }, payload: {} } as unknown as FormContext - copyPotentiallyInvalidFromState(mockRequest, mockContext) + copyPotentiallyInvalidState(mockRequest, mockContext) expect(mockContext.state).toEqual({ abc: '123', __currentPageStatePotentiallyInvalid: { @@ -268,7 +268,7 @@ describe('State helpers', () => { url: { pathname: '/form-page1' } - } as unknown as FormRequest + } as unknown as FormContextRequest const mockContext = { state: { abc: '123', @@ -279,7 +279,7 @@ describe('State helpers', () => { }, payload: {} } as unknown as FormContext - copyPotentiallyInvalidFromState(mockRequest, mockContext) + copyPotentiallyInvalidState(mockRequest, mockContext) expect(mockContext.state).toEqual({ abc: '123' }) diff --git a/src/server/plugins/engine/pageControllers/helpers/state.ts b/src/server/plugins/engine/pageControllers/helpers/state.ts index edd2679a4..b9fbb5fd7 100644 --- a/src/server/plugins/engine/pageControllers/helpers/state.ts +++ b/src/server/plugins/engine/pageControllers/helpers/state.ts @@ -8,10 +8,11 @@ import { type PageControllerClass } from '~/src/server/plugins/engine/pageContro import { type AnyFormRequest, type FormContext, + type FormContextRequest, type FormStateValue, type FormValue } from '~/src/server/plugins/engine/types.js' -import { type FormQuery, type FormRequest } from '~/src/server/routes/types.js' +import { type FormQuery } from '~/src/server/routes/types.js' import { type Services } from '~/src/server/types.js' /** @@ -104,8 +105,8 @@ export async function prefillStateFromQueryParameters( * @param request - the form request * @param context - the form context */ -export function copyPotentiallyInvalidFromState( - request: FormRequest, +export function copyPotentiallyInvalidState( + request: FormContextRequest, context: FormContext ) { const potentiallyInvalidState = context.state[STATE_POTENTIALLY_INVALID] as From 6c0896b885b47f39c92aca39e6c593a2ebce84cc Mon Sep 17 00:00:00 2001 From: Jez Barnsley Date: Fri, 19 Dec 2025 14:01:24 +0000 Subject: [PATCH 3/5] Renamed properties --- src/server/plugins/engine/index.ts | 2 +- src/server/plugins/engine/models/FormModel.ts | 4 ++-- .../engine/pageControllers/helpers/state.test.ts | 16 ++++++++-------- .../engine/pageControllers/helpers/state.ts | 8 ++++---- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/server/plugins/engine/index.ts b/src/server/plugins/engine/index.ts index ff9f86baf..abb7d9943 100644 --- a/src/server/plugins/engine/index.ts +++ b/src/server/plugins/engine/index.ts @@ -31,7 +31,7 @@ const globals = { export const VIEW_PATH = 'src/server/plugins/engine/views' export const PLUGIN_PATH = 'node_modules/@defra/forms-engine-plugin' -export const STATE_POTENTIALLY_INVALID = '__currentPageStatePotentiallyInvalid' +export const STATE_NOT_YET_VALIDATED = '__stateNotYetValidated' export const CURRENT_PAGE_PATH = '__currentPagePath' export const prepareNunjucksEnvironment = function ( diff --git a/src/server/plugins/engine/models/FormModel.ts b/src/server/plugins/engine/models/FormModel.ts index 9605346ba..c2aff279e 100644 --- a/src/server/plugins/engine/models/FormModel.ts +++ b/src/server/plugins/engine/models/FormModel.ts @@ -48,7 +48,7 @@ import { createPage, type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js' -import { copyPotentiallyInvalidState } from '~/src/server/plugins/engine/pageControllers/helpers/state.js' +import { copyNotYetValidatedState } from '~/src/server/plugins/engine/pageControllers/helpers/state.js' import { validationOptions as opts } from '~/src/server/plugins/engine/pageControllers/validationOptions.js' import * as defaultServices from '~/src/server/plugins/engine/services/index.js' import { @@ -403,7 +403,7 @@ export class FormModel { this.assignPaths(context) // Handle restoration of payload from say a 'save-and-exit' request - copyPotentiallyInvalidState(request, context) + copyNotYetValidatedState(request, context) return context } diff --git a/src/server/plugins/engine/pageControllers/helpers/state.test.ts b/src/server/plugins/engine/pageControllers/helpers/state.test.ts index 0803c7f6f..fc763c24e 100644 --- a/src/server/plugins/engine/pageControllers/helpers/state.test.ts +++ b/src/server/plugins/engine/pageControllers/helpers/state.test.ts @@ -3,7 +3,7 @@ import { ComponentType, type Page } from '@defra/forms-model' import { type FormModel } from '~/src/server/plugins/engine/models/FormModel.js' import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js' import { - copyPotentiallyInvalidState, + copyNotYetValidatedState, prefillStateFromQueryParameters, stripParam } from '~/src/server/plugins/engine/pageControllers/helpers/state.js' @@ -224,14 +224,14 @@ describe('State helpers', () => { }) }) - describe('copyPotentiallyInvalidState', () => { + describe('copyNotYetValidatedState', () => { it('should ignore if no invalid state', () => { const mockRequest = {} as FormContextRequest const mockContext = { state: { abc: '123' }, payload: {} } as unknown as FormContext - copyPotentiallyInvalidState(mockRequest, mockContext) + copyNotYetValidatedState(mockRequest, mockContext) expect(mockContext.state).toEqual({ abc: '123' }) expect(mockContext.payload).toEqual({}) }) @@ -245,17 +245,17 @@ describe('State helpers', () => { const mockContext = { state: { abc: '123', - __currentPageStatePotentiallyInvalid: { + __stateNotYetValidated: { def: '456', __currentPagePath: '/root' } }, payload: {} } as unknown as FormContext - copyPotentiallyInvalidState(mockRequest, mockContext) + copyNotYetValidatedState(mockRequest, mockContext) expect(mockContext.state).toEqual({ abc: '123', - __currentPageStatePotentiallyInvalid: { + __stateNotYetValidated: { def: '456', __currentPagePath: '/root' } @@ -272,14 +272,14 @@ describe('State helpers', () => { const mockContext = { state: { abc: '123', - __currentPageStatePotentiallyInvalid: { + __stateNotYetValidated: { def: '456', __currentPagePath: '/form-page1' } }, payload: {} } as unknown as FormContext - copyPotentiallyInvalidState(mockRequest, mockContext) + copyNotYetValidatedState(mockRequest, mockContext) expect(mockContext.state).toEqual({ abc: '123' }) diff --git a/src/server/plugins/engine/pageControllers/helpers/state.ts b/src/server/plugins/engine/pageControllers/helpers/state.ts index b9fbb5fd7..606b755bd 100644 --- a/src/server/plugins/engine/pageControllers/helpers/state.ts +++ b/src/server/plugins/engine/pageControllers/helpers/state.ts @@ -2,7 +2,7 @@ import { getHiddenFields } from '@defra/forms-model' import { CURRENT_PAGE_PATH, - STATE_POTENTIALLY_INVALID + STATE_NOT_YET_VALIDATED } from '~/src/server/plugins/engine/index.js' import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js' import { @@ -105,11 +105,11 @@ export async function prefillStateFromQueryParameters( * @param request - the form request * @param context - the form context */ -export function copyPotentiallyInvalidState( +export function copyNotYetValidatedState( request: FormContextRequest, context: FormContext ) { - const potentiallyInvalidState = context.state[STATE_POTENTIALLY_INVALID] as + const potentiallyInvalidState = context.state[STATE_NOT_YET_VALIDATED] as | Record | undefined if (!potentiallyInvalidState) { @@ -124,6 +124,6 @@ export function copyPotentiallyInvalidState( ...context.payload, ...potentiallyInvalidState } - context.state[STATE_POTENTIALLY_INVALID] = undefined + context.state[STATE_NOT_YET_VALIDATED] = undefined } } From bffd3e5f6de6206777f370792bf62a4c0ac408f5 Mon Sep 17 00:00:00 2001 From: Jez Barnsley Date: Fri, 19 Dec 2025 15:17:35 +0000 Subject: [PATCH 4/5] Rework --- .../pageControllers/QuestionPageController.ts | 8 ++++++-- .../pageControllers/helpers/state.test.ts | 6 +++++- .../engine/pageControllers/helpers/state.ts | 19 ++++++++++++++++--- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/server/plugins/engine/pageControllers/QuestionPageController.ts b/src/server/plugins/engine/pageControllers/QuestionPageController.ts index ec778d6a1..314c9ce58 100644 --- a/src/server/plugins/engine/pageControllers/QuestionPageController.ts +++ b/src/server/plugins/engine/pageControllers/QuestionPageController.ts @@ -28,7 +28,10 @@ import { } from '~/src/server/plugins/engine/helpers.js' import { type FormModel } from '~/src/server/plugins/engine/models/index.js' import { PageController } from '~/src/server/plugins/engine/pageControllers/PageController.js' -import { prefillStateFromQueryParameters } from '~/src/server/plugins/engine/pageControllers/helpers/state.js' +import { + clearNotYetValidatedState, + prefillStateFromQueryParameters +} from '~/src/server/plugins/engine/pageControllers/helpers/state.js' import { type AnyFormRequest, type FormContext, @@ -324,7 +327,8 @@ export class QuestionPageController extends PageController { const cacheService = getCacheService(request.server) - return cacheService.setState(request, state) + // Clear any 'not yet validated' state before saving to cache + return cacheService.setState(request, clearNotYetValidatedState(state)) } async mergeState( diff --git a/src/server/plugins/engine/pageControllers/helpers/state.test.ts b/src/server/plugins/engine/pageControllers/helpers/state.test.ts index fc763c24e..d833c5c84 100644 --- a/src/server/plugins/engine/pageControllers/helpers/state.test.ts +++ b/src/server/plugins/engine/pageControllers/helpers/state.test.ts @@ -281,7 +281,11 @@ describe('State helpers', () => { } as unknown as FormContext copyNotYetValidatedState(mockRequest, mockContext) expect(mockContext.state).toEqual({ - abc: '123' + abc: '123', + __stateNotYetValidated: { + def: '456', + __currentPagePath: '/form-page1' + } }) expect(mockContext.payload).toEqual({ def: '456' diff --git a/src/server/plugins/engine/pageControllers/helpers/state.ts b/src/server/plugins/engine/pageControllers/helpers/state.ts index 606b755bd..ee71aff28 100644 --- a/src/server/plugins/engine/pageControllers/helpers/state.ts +++ b/src/server/plugins/engine/pageControllers/helpers/state.ts @@ -10,6 +10,7 @@ import { type FormContext, type FormContextRequest, type FormStateValue, + type FormSubmissionState, type FormValue } from '~/src/server/plugins/engine/types.js' import { type FormQuery } from '~/src/server/routes/types.js' @@ -119,11 +120,23 @@ export function copyNotYetValidatedState( const originalPath = potentiallyInvalidState[CURRENT_PAGE_PATH] if (originalPath && originalPath === request.url.pathname) { - potentiallyInvalidState[CURRENT_PAGE_PATH] = undefined context.payload = { ...context.payload, - ...potentiallyInvalidState + ...potentiallyInvalidState, + [CURRENT_PAGE_PATH]: undefined } - context.state[STATE_NOT_YET_VALIDATED] = undefined } } + +/** + * Remove any temporary 'not yet validated' state now that it's been validated + * @param state - the form state + */ +export function clearNotYetValidatedState( + state: FormSubmissionState +): FormSubmissionState { + if (state[STATE_NOT_YET_VALIDATED]) { + state[STATE_NOT_YET_VALIDATED] = undefined + } + return state +} From 79262c27e71334220ab8835369bf2672e4d65562 Mon Sep 17 00:00:00 2001 From: Jez Barnsley Date: Thu, 8 Jan 2026 15:51:34 +0000 Subject: [PATCH 5/5] Changed const var name --- src/server/plugins/engine/index.ts | 2 +- src/server/plugins/engine/pageControllers/helpers/state.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server/plugins/engine/index.ts b/src/server/plugins/engine/index.ts index abb7d9943..4d82a2ab3 100644 --- a/src/server/plugins/engine/index.ts +++ b/src/server/plugins/engine/index.ts @@ -32,7 +32,7 @@ export const VIEW_PATH = 'src/server/plugins/engine/views' export const PLUGIN_PATH = 'node_modules/@defra/forms-engine-plugin' export const STATE_NOT_YET_VALIDATED = '__stateNotYetValidated' -export const CURRENT_PAGE_PATH = '__currentPagePath' +export const CURRENT_PAGE_PATH_KEY = '__currentPagePath' export const prepareNunjucksEnvironment = function ( env: Environment, diff --git a/src/server/plugins/engine/pageControllers/helpers/state.ts b/src/server/plugins/engine/pageControllers/helpers/state.ts index ee71aff28..6d7e2c621 100644 --- a/src/server/plugins/engine/pageControllers/helpers/state.ts +++ b/src/server/plugins/engine/pageControllers/helpers/state.ts @@ -1,7 +1,7 @@ import { getHiddenFields } from '@defra/forms-model' import { - CURRENT_PAGE_PATH, + CURRENT_PAGE_PATH_KEY, STATE_NOT_YET_VALIDATED } from '~/src/server/plugins/engine/index.js' import { type PageControllerClass } from '~/src/server/plugins/engine/pageControllers/helpers/pages.js' @@ -117,13 +117,13 @@ export function copyNotYetValidatedState( return } - const originalPath = potentiallyInvalidState[CURRENT_PAGE_PATH] + const originalPath = potentiallyInvalidState[CURRENT_PAGE_PATH_KEY] if (originalPath && originalPath === request.url.pathname) { context.payload = { ...context.payload, ...potentiallyInvalidState, - [CURRENT_PAGE_PATH]: undefined + [CURRENT_PAGE_PATH_KEY]: undefined } } }