From 9059f8bf31593328cc25e4401aab2266079c1a12 Mon Sep 17 00:00:00 2001 From: David Stone Date: Fri, 12 Sep 2025 14:12:27 +0100 Subject: [PATCH] Save state before save and exit --- .../engine/pageControllers/QuestionPageController.test.ts | 1 + .../engine/pageControllers/QuestionPageController.ts | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts b/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts index 172e2df1b..440eaaadf 100644 --- a/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts +++ b/src/server/plugins/engine/pageControllers/QuestionPageController.test.ts @@ -1409,6 +1409,7 @@ describe('Save and Exit functionality', () => { jest .spyOn(controller1, 'handleSaveAndExit') .mockReturnValue(h.redirect('/custom-save-and-exit')) + jest.spyOn(controller1, 'setState').mockResolvedValue(state) const postHandler = controller1.makePostRouteHandler() await postHandler(request, context, h) diff --git a/src/server/plugins/engine/pageControllers/QuestionPageController.ts b/src/server/plugins/engine/pageControllers/QuestionPageController.ts index 478602d74..b912a6449 100644 --- a/src/server/plugins/engine/pageControllers/QuestionPageController.ts +++ b/src/server/plugins/engine/pageControllers/QuestionPageController.ts @@ -511,14 +511,16 @@ export class QuestionPageController extends PageController { return h.view(viewName, viewModel) } + // Save state + await this.setState(request, state) + // Check if this is a save-and-exit action const { action } = request.payload if (action === FormAction.SaveAndExit) { return this.handleSaveAndExit(request, context, h) } - // Save and proceed - await this.setState(request, state) + // Proceed to the next page return this.proceed(request, h, this.getNextPath(context)) } }