From 36788dad40f6922bc7c729cd427e65e0d842cede Mon Sep 17 00:00:00 2001 From: Albert Artur Kolozsvari Date: Wed, 5 Feb 2025 23:40:25 +0000 Subject: [PATCH] Edit start page when Change Reqeusts exist --- .../page-controllers/PageControllerBase.ts | 28 +++++++++++++++++ .../StartPageController.test.ts | 30 +++++++++++++++++++ 2 files changed, 58 insertions(+) diff --git a/runner/src/server/plugins/engine/page-controllers/PageControllerBase.ts b/runner/src/server/plugins/engine/page-controllers/PageControllerBase.ts index 59307e5f..0dce6927 100644 --- a/runner/src/server/plugins/engine/page-controllers/PageControllerBase.ts +++ b/runner/src/server/plugins/engine/page-controllers/PageControllerBase.ts @@ -707,6 +707,34 @@ export class PageControllerBase { } } } + + // if page is start page and we have change requests for the form + if (isStartPage && state["metadata"] && state["metadata"]["change_requests"]) { + // make sure all components on the start page are HTML components + let allComponentsArePara = true; + for (let component of viewModel.components) { + if (component.type !== "Para") { + allComponentsArePara = false; + break; + } + } + + // if all components are HTML components, replace them with a change request message + if (allComponentsArePara) { + const title = "

Change requested

"; + const paragraph = "

We need you to make some changes to parts of this section. You will need to go through the section to:

"; + const list = ""; + const changeRequestMessage = title + paragraph + list + console.log(viewModel.components[0]) + viewModel.components = [{ + type: "Para", + model: { + content: changeRequestMessage + } + }]; + } + } + return h.view(this.viewName, viewModel); }; } diff --git a/runner/test/cases/server/plugins/engine/page-controllers/StartPageController.test.ts b/runner/test/cases/server/plugins/engine/page-controllers/StartPageController.test.ts index c6c3fd96..56cd89ec 100644 --- a/runner/test/cases/server/plugins/engine/page-controllers/StartPageController.test.ts +++ b/runner/test/cases/server/plugins/engine/page-controllers/StartPageController.test.ts @@ -22,6 +22,7 @@ const {suite, test, before, after, beforeEach, afterEach} = lab; suite("StartPageController", () => { let server; let response; + let adapterCacheService; let $; let sandbox; @@ -86,4 +87,33 @@ suite("StartPageController", () => { expect(viewModel.isStartPage).to.be.true(); expect(viewModel.skipTimeoutWarning).to.be.true(); }); + + test("start page show change request message", async () => { + // Define the mock state with metadata + const mockState = { + metadata: { + change_requests: { + "aBcDeFg": ["Change request message"], + } + } + // Add any other necessary metadata here + }; + + // Stub getState to return the mock state + adapterCacheService.getState.resolves(mockState); + + const pages = [...form.pages]; + const firstPage = pages.shift(); + const formDef = {...form, pages: [firstPage, ...pages]}; + let formModel = new AdapterFormModel(formDef, {}); + const pageController = new StartPageController(formModel, firstPage); + const vm = pageController.getViewModel({}, formModel); + vm.i18n = { + __: mockI18n + }; + response = await server.render("summary", vm); + + $ = cheerio.load(response); + expect($(".govuk-heading-m").text()).to.contain("Change requested"); + }); });