From 04dd3598e615686689d6bd7f153dce4f98fca4b6 Mon Sep 17 00:00:00 2001 From: Michael Harrison Date: Fri, 19 Dec 2025 17:12:03 +0000 Subject: [PATCH 1/6] CCM-11473: display locked status on submitted templates --- .../molecules/MessageTemplates.test.tsx | 13 +- .../PreviewSubmittedTemplate.test.tsx | 279 +++++------ .../MessageTemplates.test.tsx.snap | 23 +- .../PreviewSubmittedTemplate.test.tsx.snap | 466 +++++++++++++++++- .../MessageTemplates/MessageTemplates.tsx | 4 +- .../PreviewTemplateDetails/common.tsx | 4 +- package-lock.json | 2 +- ...t-message-templates-page.component.spec.ts | 6 +- .../__tests__/__snapshots__/enum.test.ts.snap | 161 ++++++ utils/utils/src/__tests__/enum.test.ts | 52 +- utils/utils/src/enum.ts | 47 +- 11 files changed, 800 insertions(+), 257 deletions(-) create mode 100644 utils/utils/src/__tests__/__snapshots__/enum.test.ts.snap diff --git a/frontend/src/__tests__/components/molecules/MessageTemplates.test.tsx b/frontend/src/__tests__/components/molecules/MessageTemplates.test.tsx index a7dd1b992..5752f42fe 100644 --- a/frontend/src/__tests__/components/molecules/MessageTemplates.test.tsx +++ b/frontend/src/__tests__/components/molecules/MessageTemplates.test.tsx @@ -2,6 +2,14 @@ import { render, screen } from '@testing-library/react'; import { MessageTemplates } from '@molecules/MessageTemplates/MessageTemplates'; import content from '@content/content'; import { TemplateDto } from 'nhs-notify-backend-client'; +import { useFeatureFlags } from '@providers/client-config-provider'; + +jest.mock('@providers/client-config-provider'); + +beforeEach(() => { + jest.resetAllMocks(); + jest.mocked(useFeatureFlags).mockReturnValue({ routing: false }); +}); const messageTemplatesContent = content.pages.messageTemplates; @@ -75,8 +83,9 @@ describe('MessageTemplates component', () => { expect(container.asFragment()).toMatchSnapshot(); }); - it('matches snapshot with submitted status', () => { - messageTemplatesProps.templateList[0].templateStatus = 'SUBMITTED'; + it('matches snapshot with routing flag enabled', () => { + jest.mocked(useFeatureFlags).mockReturnValue({ routing: true }); + const container = render(); expect(container.asFragment()).toMatchSnapshot(); diff --git a/frontend/src/__tests__/components/molecules/PreviewSubmittedTemplate.test.tsx b/frontend/src/__tests__/components/molecules/PreviewSubmittedTemplate.test.tsx index e8789b3c9..5ac02b0d5 100644 --- a/frontend/src/__tests__/components/molecules/PreviewSubmittedTemplate.test.tsx +++ b/frontend/src/__tests__/components/molecules/PreviewSubmittedTemplate.test.tsx @@ -3,181 +3,128 @@ import PreviewTemplateDetailsEmail from '@molecules/PreviewTemplateDetails/Previ import PreviewTemplateDetailsLetter from '@molecules/PreviewTemplateDetails/PreviewTemplateDetailsLetter'; import PreviewTemplateDetailsNhsApp from '@molecules/PreviewTemplateDetails/PreviewTemplateDetailsNhsApp'; import PreviewTemplateDetailsSms from '@molecules/PreviewTemplateDetails/PreviewTemplateDetailsSms'; +import { useFeatureFlags } from '@providers/client-config-provider'; import { render } from '@testing-library/react'; -import { ReadonlyURLSearchParams, useSearchParams } from 'next/navigation'; -jest.mock('next/navigation', () => ({ - ...jest.requireActual('next/navigation'), - useSearchParams: jest.fn(), -})); - -const useSearchParamsMock = jest.mocked(useSearchParams); - -useSearchParamsMock.mockReturnValue(new ReadonlyURLSearchParams()); +jest.mock('@providers/client-config-provider'); describe('PreviewSubmittedTemplate component', () => { - it('should render app message', () => { - const container = render( - - ); - - expect(container.asFragment()).toMatchSnapshot(); - }); - - it('should render email', () => { - const container = render( - - ); - - expect(container.asFragment()).toMatchSnapshot(); - }); - - it('should render sms', () => { - const container = render( - - ); - - expect(container.asFragment()).toMatchSnapshot(); - }); - - it('should render letter', () => { - const container = render( - { + beforeEach(() => { + jest.resetAllMocks(); + jest.mocked(useFeatureFlags).mockReturnValue({ routing }); + }); + + it('should render app message', () => { + const container = render( + + ); + + expect(container.asFragment()).toMatchSnapshot(); + }); + + it('should render email', () => { + const container = render( + + ); + + expect(container.asFragment()).toMatchSnapshot(); + }); + + it('should render sms', () => { + const container = render( + + ); + + expect(container.asFragment()).toMatchSnapshot(); + }); + + it('should render letter', () => { + const container = render( + - ); - - expect(container.asFragment()).toMatchSnapshot(); - }); - - it('should provide back buttons based on source page', () => { - useSearchParamsMock.mockReturnValueOnce( - new ReadonlyURLSearchParams({ - sourcePage: '/source', - }) - ); - - const container = render( - - ); - - expect(container.asFragment()).toMatchSnapshot(); - }); - - it('should omit status when coming from message plans', () => { - useSearchParamsMock.mockReturnValueOnce( - new ReadonlyURLSearchParams({ - sourcePage: - '/message-plans/choose-nhs-app-template/93b92d43-a8e0-4d90-8e75-924c8a0c8e0d', - }) - ); - - const container = render( - - ); - - expect(container.asFragment()).toMatchSnapshot(); + createdAt: '2025-01-13T10:19:25.579Z', + updatedAt: '2025-01-13T10:19:25.579Z', + lockNumber: 1, + }} + previewComponent={PreviewTemplateDetailsLetter} + /> + ); + + expect(container.asFragment()).toMatchSnapshot(); + }); }); }); diff --git a/frontend/src/__tests__/components/molecules/__snapshots__/MessageTemplates.test.tsx.snap b/frontend/src/__tests__/components/molecules/__snapshots__/MessageTemplates.test.tsx.snap index f58f008d7..b67797aae 100644 --- a/frontend/src/__tests__/components/molecules/__snapshots__/MessageTemplates.test.tsx.snap +++ b/frontend/src/__tests__/components/molecules/__snapshots__/MessageTemplates.test.tsx.snap @@ -960,7 +960,7 @@ exports[`MessageTemplates component matches snapshot with pending proof request `; -exports[`MessageTemplates component matches snapshot with submitted status 1`] = ` +exports[`MessageTemplates component matches snapshot with routing flag enabled 1`] = `
Template 1 @@ -1086,9 +1086,9 @@ exports[`MessageTemplates component matches snapshot with submitted status 1`] = Status - Submitted + Draft

+

+ + Delete + +

@@ -1189,7 +1200,7 @@ exports[`MessageTemplates component matches snapshot with submitted status 1`] = - Submitted + Locked - Submitted + Locked - Draft + Submitted @@ -141,7 +141,7 @@ exports[`PreviewSubmittedTemplate component should omit status when coming from
`; -exports[`PreviewSubmittedTemplate component should provide back buttons based on source page 1`] = ` +exports[`PreviewSubmittedTemplate component routing = false should render email 1`] = ` - Example template + Example Email template
- NHS App message + Email + +
+
+
+ Status +
+
+ + Submitted + +
+
+ +
+
+
+
+ Subject +
+
+
+
+ email subject +
+
+
+
+
+
+ Message +
+
+
+
+

+ email content +

+ + +
+
+
+
+ +

+ This template cannot be edited because it has been submitted. +

+

+ If you want to change a submitted or live template, you must create a new template to replace it. +

+

+ + Back to all templates + +

+ + + + +`; + +exports[`PreviewSubmittedTemplate component routing = false should render letter 1`] = ` + + + Back to all templates + +
+
+
+
+ + Template + +

+ Example letter +

+
+
+
+
+
+ Template ID +
+
+ template-id +
+
+
+
+ Type +
+
+ Standard letter +
+
+
+
+ Status +
+
+ + Submitted + +
+
+
+
+ Template file +
+
+
+ +

+ file.pdf +

+
+
+
+
+
+ Example personalisation file +
+
+
+ +

+ file.csv +

+
+
+
+
+
+
+
+ Template proof files +
+
+ +
+
+
+
+

+ If you want to change a submitted or live template, you must create a new template to replace it. +

+

+ + Back to all templates + +

+
+
+
+
+`; + +exports[`PreviewSubmittedTemplate component routing = false should render sms 1`] = ` + + + Back to all templates + +
+
+
+
+ + Template + +

+ SMS template +

+
+
+
+
+
+ Template ID +
+
+ template-id +
+
+
+
+ Type +
+
+ Text message (SMS)
- Draft + Submitted
@@ -254,7 +682,7 @@ exports[`PreviewSubmittedTemplate component should provide back buttons based on id="preview-content-message" >

- app content + SMS content

@@ -282,7 +710,7 @@ exports[`PreviewSubmittedTemplate component should provide back buttons based on `; -exports[`PreviewSubmittedTemplate component should render app message 1`] = ` +exports[`PreviewSubmittedTemplate component routing = true should render app message 1`] = ` - Submitted + Locked
@@ -423,7 +851,7 @@ exports[`PreviewSubmittedTemplate component should render app message 1`] = ` `; -exports[`PreviewSubmittedTemplate component should render email 1`] = ` +exports[`PreviewSubmittedTemplate component routing = true should render email 1`] = ` - Submitted + Locked
@@ -589,7 +1017,7 @@ exports[`PreviewSubmittedTemplate component should render email 1`] = ` `; -exports[`PreviewSubmittedTemplate component should render letter 1`] = ` +exports[`PreviewSubmittedTemplate component routing = true should render letter 1`] = ` - Submitted + Locked
@@ -851,7 +1279,7 @@ exports[`PreviewSubmittedTemplate component should render letter 1`] = ` `; -exports[`PreviewSubmittedTemplate component should render sms 1`] = ` +exports[`PreviewSubmittedTemplate component routing = true should render sms 1`] = ` - Submitted + Locked diff --git a/frontend/src/components/molecules/MessageTemplates/MessageTemplates.tsx b/frontend/src/components/molecules/MessageTemplates/MessageTemplates.tsx index f1136e962..c507c467d 100644 --- a/frontend/src/components/molecules/MessageTemplates/MessageTemplates.tsx +++ b/frontend/src/components/molecules/MessageTemplates/MessageTemplates.tsx @@ -18,6 +18,7 @@ import { } from 'nhs-notify-web-template-management-utils'; import { TemplateDto } from 'nhs-notify-backend-client'; import style from './MessageTemplates.module.scss'; +import { useFeatureFlags } from '@providers/client-config-provider'; const messageTemplatesContent = content.pages.messageTemplates; @@ -43,6 +44,7 @@ export function MessageTemplates({ }: { templateList: TemplateDto[]; }) { + const features = useFeatureFlags(); return (
@@ -86,7 +88,7 @@ export function MessageTemplates({ {typeDisplayMappings(template)} - {statusToDisplayMapping(template)} + {statusToDisplayMapping(template, features)} diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx index 1d8bcad99..5e2b52897 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx @@ -10,6 +10,7 @@ import content from '@content/content'; import { TemplateDto } from 'nhs-notify-backend-client'; import classNames from 'classnames'; import { toKebabCase } from '@utils/kebab-case'; +import { useFeatureFlags } from '@providers/client-config-provider'; export type PreviewTemplateComponent = ({ template, @@ -75,6 +76,7 @@ export function StandardDetailRows({ campaignId?: string; hideStatus?: boolean; }>): JSX.Element { + const features = useFeatureFlags(); return ( <> @@ -99,7 +101,7 @@ export function StandardDetailRows({ data-test-id={`status-tag-${toKebabCase(template.templateStatus)}`} color={statusToColourMapping(template)} > - {statusToDisplayMapping(template)} + {statusToDisplayMapping(template, features)} {previewTemplateStatusFootnote[template.templateStatus] && ( { const email = page.locator( 'tr:has-text("email-submitted_message-templates-page")' ); - await expect(email.getByText('Submitted', { exact: true })).toBeVisible(); + await expect(email.getByText('Locked', { exact: true })).toBeVisible(); const sms = page.locator( 'tr:has-text("sms-submitted_message-templates-page")' ); - await expect(sms.getByText('Submitted', { exact: true })).toBeVisible(); + await expect(sms.getByText('Locked', { exact: true })).toBeVisible(); const nhsapp = page.locator( 'tr:has-text("nhs-app-submitted_message-templates-page")' ); - await expect(nhsapp.getByText('Submitted', { exact: true })).toBeVisible(); + await expect(nhsapp.getByText('Locked', { exact: true })).toBeVisible(); }); test('Not Yet Submitted template items have correct status indicator', async ({ diff --git a/utils/utils/src/__tests__/__snapshots__/enum.test.ts.snap b/utils/utils/src/__tests__/__snapshots__/enum.test.ts.snap new file mode 100644 index 000000000..436e4388c --- /dev/null +++ b/utils/utils/src/__tests__/__snapshots__/enum.test.ts.snap @@ -0,0 +1,161 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`statusToDisplayMapping status=DELETED type=EMAIL routing=false 1`] = `""`; + +exports[`statusToDisplayMapping status=DELETED type=EMAIL routing=true 1`] = `""`; + +exports[`statusToDisplayMapping status=DELETED type=LETTER routing=false 1`] = `""`; + +exports[`statusToDisplayMapping status=DELETED type=LETTER routing=true 1`] = `""`; + +exports[`statusToDisplayMapping status=DELETED type=NHS_APP routing=false 1`] = `""`; + +exports[`statusToDisplayMapping status=DELETED type=NHS_APP routing=true 1`] = `""`; + +exports[`statusToDisplayMapping status=DELETED type=SMS routing=false 1`] = `""`; + +exports[`statusToDisplayMapping status=DELETED type=SMS routing=true 1`] = `""`; + +exports[`statusToDisplayMapping status=NOT_YET_SUBMITTED type=EMAIL routing=false 1`] = `"Draft"`; + +exports[`statusToDisplayMapping status=NOT_YET_SUBMITTED type=EMAIL routing=true 1`] = `"Draft"`; + +exports[`statusToDisplayMapping status=NOT_YET_SUBMITTED type=LETTER routing=false 1`] = `"Not yet submitted"`; + +exports[`statusToDisplayMapping status=NOT_YET_SUBMITTED type=LETTER routing=true 1`] = `"Not yet submitted"`; + +exports[`statusToDisplayMapping status=NOT_YET_SUBMITTED type=NHS_APP routing=false 1`] = `"Draft"`; + +exports[`statusToDisplayMapping status=NOT_YET_SUBMITTED type=NHS_APP routing=true 1`] = `"Draft"`; + +exports[`statusToDisplayMapping status=NOT_YET_SUBMITTED type=SMS routing=false 1`] = `"Draft"`; + +exports[`statusToDisplayMapping status=NOT_YET_SUBMITTED type=SMS routing=true 1`] = `"Draft"`; + +exports[`statusToDisplayMapping status=PENDING_PROOF_REQUEST type=EMAIL routing=false 1`] = `"Files uploaded"`; + +exports[`statusToDisplayMapping status=PENDING_PROOF_REQUEST type=EMAIL routing=true 1`] = `"Files uploaded"`; + +exports[`statusToDisplayMapping status=PENDING_PROOF_REQUEST type=LETTER routing=false 1`] = `"Files uploaded"`; + +exports[`statusToDisplayMapping status=PENDING_PROOF_REQUEST type=LETTER routing=true 1`] = `"Files uploaded"`; + +exports[`statusToDisplayMapping status=PENDING_PROOF_REQUEST type=NHS_APP routing=false 1`] = `"Files uploaded"`; + +exports[`statusToDisplayMapping status=PENDING_PROOF_REQUEST type=NHS_APP routing=true 1`] = `"Files uploaded"`; + +exports[`statusToDisplayMapping status=PENDING_PROOF_REQUEST type=SMS routing=false 1`] = `"Files uploaded"`; + +exports[`statusToDisplayMapping status=PENDING_PROOF_REQUEST type=SMS routing=true 1`] = `"Files uploaded"`; + +exports[`statusToDisplayMapping status=PENDING_UPLOAD type=EMAIL routing=false 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_UPLOAD type=EMAIL routing=true 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_UPLOAD type=LETTER routing=false 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_UPLOAD type=LETTER routing=true 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_UPLOAD type=NHS_APP routing=false 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_UPLOAD type=NHS_APP routing=true 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_UPLOAD type=SMS routing=false 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_UPLOAD type=SMS routing=true 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_VALIDATION type=EMAIL routing=false 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_VALIDATION type=EMAIL routing=true 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_VALIDATION type=LETTER routing=false 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_VALIDATION type=LETTER routing=true 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_VALIDATION type=NHS_APP routing=false 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_VALIDATION type=NHS_APP routing=true 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_VALIDATION type=SMS routing=false 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PENDING_VALIDATION type=SMS routing=true 1`] = `"Checking files"`; + +exports[`statusToDisplayMapping status=PROOF_AVAILABLE type=EMAIL routing=false 1`] = `"Proof available"`; + +exports[`statusToDisplayMapping status=PROOF_AVAILABLE type=EMAIL routing=true 1`] = `"Proof available"`; + +exports[`statusToDisplayMapping status=PROOF_AVAILABLE type=LETTER routing=false 1`] = `"Proof available"`; + +exports[`statusToDisplayMapping status=PROOF_AVAILABLE type=LETTER routing=true 1`] = `"Proof available"`; + +exports[`statusToDisplayMapping status=PROOF_AVAILABLE type=NHS_APP routing=false 1`] = `"Proof available"`; + +exports[`statusToDisplayMapping status=PROOF_AVAILABLE type=NHS_APP routing=true 1`] = `"Proof available"`; + +exports[`statusToDisplayMapping status=PROOF_AVAILABLE type=SMS routing=false 1`] = `"Proof available"`; + +exports[`statusToDisplayMapping status=PROOF_AVAILABLE type=SMS routing=true 1`] = `"Proof available"`; + +exports[`statusToDisplayMapping status=SUBMITTED type=EMAIL routing=false 1`] = `"Submitted"`; + +exports[`statusToDisplayMapping status=SUBMITTED type=EMAIL routing=true 1`] = `"Locked"`; + +exports[`statusToDisplayMapping status=SUBMITTED type=LETTER routing=false 1`] = `"Submitted"`; + +exports[`statusToDisplayMapping status=SUBMITTED type=LETTER routing=true 1`] = `"Locked"`; + +exports[`statusToDisplayMapping status=SUBMITTED type=NHS_APP routing=false 1`] = `"Submitted"`; + +exports[`statusToDisplayMapping status=SUBMITTED type=NHS_APP routing=true 1`] = `"Locked"`; + +exports[`statusToDisplayMapping status=SUBMITTED type=SMS routing=false 1`] = `"Submitted"`; + +exports[`statusToDisplayMapping status=SUBMITTED type=SMS routing=true 1`] = `"Locked"`; + +exports[`statusToDisplayMapping status=VALIDATION_FAILED type=EMAIL routing=false 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VALIDATION_FAILED type=EMAIL routing=true 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VALIDATION_FAILED type=LETTER routing=false 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VALIDATION_FAILED type=LETTER routing=true 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VALIDATION_FAILED type=NHS_APP routing=false 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VALIDATION_FAILED type=NHS_APP routing=true 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VALIDATION_FAILED type=SMS routing=false 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VALIDATION_FAILED type=SMS routing=true 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VIRUS_SCAN_FAILED type=EMAIL routing=false 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VIRUS_SCAN_FAILED type=EMAIL routing=true 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VIRUS_SCAN_FAILED type=LETTER routing=false 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VIRUS_SCAN_FAILED type=LETTER routing=true 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VIRUS_SCAN_FAILED type=NHS_APP routing=false 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VIRUS_SCAN_FAILED type=NHS_APP routing=true 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VIRUS_SCAN_FAILED type=SMS routing=false 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=VIRUS_SCAN_FAILED type=SMS routing=true 1`] = `"Checks failed"`; + +exports[`statusToDisplayMapping status=WAITING_FOR_PROOF type=EMAIL routing=false 1`] = `"Waiting for proof"`; + +exports[`statusToDisplayMapping status=WAITING_FOR_PROOF type=EMAIL routing=true 1`] = `"Waiting for proof"`; + +exports[`statusToDisplayMapping status=WAITING_FOR_PROOF type=LETTER routing=false 1`] = `"Waiting for proof"`; + +exports[`statusToDisplayMapping status=WAITING_FOR_PROOF type=LETTER routing=true 1`] = `"Waiting for proof"`; + +exports[`statusToDisplayMapping status=WAITING_FOR_PROOF type=NHS_APP routing=false 1`] = `"Waiting for proof"`; + +exports[`statusToDisplayMapping status=WAITING_FOR_PROOF type=NHS_APP routing=true 1`] = `"Waiting for proof"`; + +exports[`statusToDisplayMapping status=WAITING_FOR_PROOF type=SMS routing=false 1`] = `"Waiting for proof"`; + +exports[`statusToDisplayMapping status=WAITING_FOR_PROOF type=SMS routing=true 1`] = `"Waiting for proof"`; diff --git a/utils/utils/src/__tests__/enum.test.ts b/utils/utils/src/__tests__/enum.test.ts index 36c4f92d9..1e09099a1 100644 --- a/utils/utils/src/__tests__/enum.test.ts +++ b/utils/utils/src/__tests__/enum.test.ts @@ -2,6 +2,8 @@ import { Language, LetterType, + TEMPLATE_TYPE_LIST, + TEMPLATE_STATUS_LIST, TemplateStatus, TemplateType, } from 'nhs-notify-backend-client'; @@ -29,7 +31,6 @@ import { templateTypeToUrlTextMappings, cascadeTemplateTypeToUrlTextMappings, } from '../enum'; -import { TEMPLATE_STATUS_LIST } from 'nhs-notify-backend-client'; describe('templateTypeDisplayMappings', () => { test('NHS_APP', () => { @@ -115,39 +116,28 @@ describe('alphabeticalLanguageList', () => { }); describe('statusToDisplayMapping', () => { - test.each([ - { type: 'LETTER' as TemplateType, expected: 'Not yet submitted' }, - { type: 'NHS_APP' as TemplateType, expected: 'Draft' }, - { type: 'SMS' as TemplateType, expected: 'Draft' }, - { type: 'EMAIl' as TemplateType, expected: 'Draft' }, - ])( - 'When templateType is %type NOT_YET_SUBMITTED should be %expected', - ({ type, expected }) => { - expect( - statusToDisplayMapping({ - templateType: type, - templateStatus: 'NOT_YET_SUBMITTED', - }) - ).toEqual(expected); - } + const cases = TEMPLATE_STATUS_LIST.flatMap((status) => + TEMPLATE_TYPE_LIST.flatMap((type) => + [true, false].map( + (routingFlag): [TemplateStatus, TemplateType, boolean] => [ + status, + type, + routingFlag, + ] + ) + ) ); - test('SUBMITTED', () => { + test.each(cases)('status=%s type=%s routing=%s', (status, type, routing) => { expect( - statusToDisplayMapping({ - templateType: 'SMS', - templateStatus: 'SUBMITTED', - }) - ).toEqual('Submitted'); - }); - - test('DELETED', () => { - expect( - statusToDisplayMapping({ - templateType: 'SMS', - templateStatus: 'DELETED', - }) - ).toEqual(''); + statusToDisplayMapping( + { + templateType: type, + templateStatus: status, + }, + { routing } + ) + ).toMatchSnapshot(); }); }); diff --git a/utils/utils/src/enum.ts b/utils/utils/src/enum.ts index b182c6e96..41c69fd3e 100644 --- a/utils/utils/src/enum.ts +++ b/utils/utils/src/enum.ts @@ -6,6 +6,7 @@ import type { TemplateDto, Channel, RoutingConfigStatus, + ClientFeatures, } from 'nhs-notify-backend-client'; /** @@ -92,34 +93,26 @@ export const templateTypeDisplayMappings = (type: TemplateType) => LETTER: 'Letter', })[type]; -const statusToDisplayMappings: Record = { - NOT_YET_SUBMITTED: 'Not yet submitted', - SUBMITTED: 'Submitted', - DELETED: '', // will not be shown in the UI - PENDING_PROOF_REQUEST: 'Files uploaded', - PENDING_UPLOAD: 'Checking files', - PENDING_VALIDATION: 'Checking files', - VALIDATION_FAILED: 'Checks failed', - VIRUS_SCAN_FAILED: 'Checks failed', - WAITING_FOR_PROOF: 'Waiting for proof', - PROOF_AVAILABLE: 'Proof available', -} as const; - -const templateStatusToDisplayMappingsLetter = (status: TemplateStatus) => - statusToDisplayMappings[status]; - -const templateStatusToDisplayMappingsDigital = (status: TemplateStatus) => - ({ - ...statusToDisplayMappings, - NOT_YET_SUBMITTED: 'Draft', - })[status]; - export const statusToDisplayMapping = ( - template: Pick -): string => - template.templateType === 'LETTER' - ? templateStatusToDisplayMappingsLetter(template.templateStatus) - : templateStatusToDisplayMappingsDigital(template.templateStatus); + template: Pick, + featureFlags: Pick +): string => { + const statusToDisplayMappings: Record = { + NOT_YET_SUBMITTED: + template.templateType === 'LETTER' ? 'Not yet submitted' : 'Draft', + SUBMITTED: featureFlags.routing ? 'Locked' : 'Submitted', + DELETED: '', // will not be shown in the UI + PENDING_PROOF_REQUEST: 'Files uploaded', + PENDING_UPLOAD: 'Checking files', + PENDING_VALIDATION: 'Checking files', + VALIDATION_FAILED: 'Checks failed', + VIRUS_SCAN_FAILED: 'Checks failed', + WAITING_FOR_PROOF: 'Waiting for proof', + PROOF_AVAILABLE: 'Proof available', + }; + + return statusToDisplayMappings[template.templateStatus]; +}; type Colour = | 'white' From 16e75fb0f2798cdfa6bdac94661d769bf33d35ca Mon Sep 17 00:00:00 2001 From: Michael Harrison Date: Mon, 22 Dec 2025 13:31:16 +0000 Subject: [PATCH 2/6] CCM-11473: warning callout --- .../PreviewEmailTemplate.test.tsx.snap | 40 +++++ .../PreviewNHSAppTemplate.test.tsx.snap | 40 +++++ .../PreviewSMSTemplate.test.tsx.snap | 40 +++++ .../MessageTemplates.test.tsx.snap | 4 +- .../PreviewSubmittedTemplate.test.tsx.snap | 101 ++++++++--- .../PreviewLetterTemplate.test.tsx.snap | 10 ++ .../MessageTemplates/MessageTemplates.tsx | 2 +- .../PreviewSubmittedTemplate.tsx | 13 +- .../PreviewTemplateDetails.module.scss | 8 + .../PreviewTemplateDetailsEmail.tsx | 4 + .../PreviewTemplateDetailsLetter.tsx | 11 +- .../PreviewTemplateDetailsNhsApp.tsx | 4 + .../PreviewTemplateDetailsSms.tsx | 4 + .../PreviewTemplateDetails/common.tsx | 45 ++++- frontend/src/content/content.ts | 14 ++ .../__tests__/__snapshots__/enum.test.ts.snap | 160 ++++++++++++++++++ utils/utils/src/__tests__/enum.test.ts | 100 ++++------- utils/utils/src/enum.ts | 50 ++---- 18 files changed, 520 insertions(+), 130 deletions(-) diff --git a/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap b/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap index 002988178..01ef6bc55 100644 --- a/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap @@ -843,6 +843,26 @@ exports[`Preview email form renders matches snapshot when navigating from edit s test-template-email
+
@@ -1249,6 +1269,26 @@ exports[`Preview email form renders matches snapshot when navigating from manage test-template-email
+
+ + Draft + +

+ You cannot edit or delete this template because it's used in a message plan that's in production. +

+

+ + Copy this template + + to create a draft with the same content. +

+
diff --git a/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap b/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap index 65569faf0..3f1184d1d 100644 --- a/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap @@ -771,6 +771,26 @@ exports[`Preview nhs app form renders matches snapshot when navigating from edit test-template-nhs app
+
+ + Draft + +

+ You cannot edit or delete this template because it's used in a message plan that's in production. +

+

+ + Copy this template + + to create a draft with the same content. +

+
@@ -1129,6 +1149,26 @@ exports[`Preview nhs app form renders matches snapshot when navigating from mana test-template-nhs app
+
+ + Draft + +

+ You cannot edit or delete this template because it's used in a message plan that's in production. +

+

+ + Copy this template + + to create a draft with the same content. +

+
diff --git a/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap b/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap index 738a78982..f4e9fa4f8 100644 --- a/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap @@ -768,6 +768,26 @@ exports[`Review sms form renders matches snapshot when navigating from edit scre test-template-sms
+
+ + Draft + +

+ You cannot edit or delete this template because it's used in a message plan that's in production. +

+

+ + Copy this template + + to create a draft with the same content. +

+
@@ -1124,6 +1144,26 @@ exports[`Review sms form renders matches snapshot when navigating from manage te test-template-sms
+
+ + Draft + +

+ You cannot edit or delete this template because it's used in a message plan that's in production. +

+

+ + Copy this template + + to create a draft with the same content. +

+
diff --git a/frontend/src/__tests__/components/molecules/__snapshots__/MessageTemplates.test.tsx.snap b/frontend/src/__tests__/components/molecules/__snapshots__/MessageTemplates.test.tsx.snap index b67797aae..3b98fb2f7 100644 --- a/frontend/src/__tests__/components/molecules/__snapshots__/MessageTemplates.test.tsx.snap +++ b/frontend/src/__tests__/components/molecules/__snapshots__/MessageTemplates.test.tsx.snap @@ -1198,7 +1198,7 @@ exports[`MessageTemplates component matches snapshot with routing flag enabled 1 Status Locked @@ -1299,7 +1299,7 @@ exports[`MessageTemplates component matches snapshot with routing flag enabled 1 Status Locked diff --git a/frontend/src/__tests__/components/molecules/__snapshots__/PreviewSubmittedTemplate.test.tsx.snap b/frontend/src/__tests__/components/molecules/__snapshots__/PreviewSubmittedTemplate.test.tsx.snap index 92cf8d41d..e6b47a052 100644 --- a/frontend/src/__tests__/components/molecules/__snapshots__/PreviewSubmittedTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/molecules/__snapshots__/PreviewSubmittedTemplate.test.tsx.snap @@ -744,6 +744,26 @@ exports[`PreviewSubmittedTemplate component routing = true should render app mes Example template
+
+ + Locked + +

+ You cannot edit or delete this template because it's used in a message plan that's in production. +

+

+ + Copy this template + + to create a draft with the same content. +

+
@@ -790,7 +810,7 @@ exports[`PreviewSubmittedTemplate component routing = true should render app mes class="nhsuk-summary-list__value" > Locked @@ -832,12 +852,6 @@ exports[`PreviewSubmittedTemplate component routing = true should render app mes
-

- This template cannot be edited because it has been submitted. -

-

- If you want to change a submitted or live template, you must create a new template to replace it. -

+

@@ -931,7 +965,7 @@ exports[`PreviewSubmittedTemplate component routing = true should render email 1 class="nhsuk-summary-list__value" > Locked @@ -998,12 +1032,6 @@ exports[`PreviewSubmittedTemplate component routing = true should render email 1
-

- This template cannot be edited because it has been submitted. -

-

- If you want to change a submitted or live template, you must create a new template to replace it. -

+

@@ -1097,7 +1137,7 @@ exports[`PreviewSubmittedTemplate component routing = true should render letter class="nhsuk-summary-list__value" > Locked @@ -1263,9 +1303,6 @@ exports[`PreviewSubmittedTemplate component routing = true should render letter
-

- If you want to change a submitted or live template, you must create a new template to replace it. -

+

@@ -1359,7 +1416,7 @@ exports[`PreviewSubmittedTemplate component routing = true should render sms 1`] class="nhsuk-summary-list__value" > Locked @@ -1401,12 +1458,6 @@ exports[`PreviewSubmittedTemplate component routing = true should render sms 1`]
-

- This template cannot be edited because it has been submitted. -

-

- If you want to change a submitted or live template, you must create a new template to replace it. -

+

diff --git a/frontend/src/components/molecules/MessageTemplates/MessageTemplates.tsx b/frontend/src/components/molecules/MessageTemplates/MessageTemplates.tsx index c507c467d..b1d478404 100644 --- a/frontend/src/components/molecules/MessageTemplates/MessageTemplates.tsx +++ b/frontend/src/components/molecules/MessageTemplates/MessageTemplates.tsx @@ -87,7 +87,7 @@ export function MessageTemplates({ {template.id} {typeDisplayMappings(template)} - + {statusToDisplayMapping(template, features)} diff --git a/frontend/src/components/molecules/PreviewSubmittedTemplate/PreviewSubmittedTemplate.tsx b/frontend/src/components/molecules/PreviewSubmittedTemplate/PreviewSubmittedTemplate.tsx index b8c030831..714a1fcfb 100644 --- a/frontend/src/components/molecules/PreviewSubmittedTemplate/PreviewSubmittedTemplate.tsx +++ b/frontend/src/components/molecules/PreviewSubmittedTemplate/PreviewSubmittedTemplate.tsx @@ -7,6 +7,7 @@ import { NHSNotifyMain } from '@atoms/NHSNotifyMain/NHSNotifyMain'; import NotifyBackLink from '@atoms/NHSNotifyBackLink/NHSNotifyBackLink'; import { TemplateDto } from 'nhs-notify-backend-client'; import { PreviewTemplateComponent } from '@molecules/PreviewTemplateDetails/common'; +import { useFeatureFlags } from '@providers/client-config-provider'; export type PreviewSubmittedTemplateProps = PageComponentProps & { @@ -19,6 +20,8 @@ export function PreviewSubmittedTemplate({ }: Readonly>) { const content = baseContent.components.viewSubmittedTemplate; + const { routing } = useFeatureFlags(); + return ( <> @@ -32,10 +35,14 @@ export function PreviewSubmittedTemplate({ template: initialState, })} - {initialState.templateType !== 'LETTER' && ( -

{content.cannotEdit}

+ {!routing && ( + <> + {initialState.templateType !== 'LETTER' && ( +

{content.cannotEdit}

+ )} +

{content.createNewTemplate}

+ )} -

{content.createNewTemplate}

{content.backLink.text} diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetails.module.scss b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetails.module.scss index a8081d0d8..10f12b5de 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetails.module.scss +++ b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetails.module.scss @@ -15,3 +15,11 @@ flex-direction: column; gap: 6px; } + +.warning_callout { + padding-top: 16px !important; + + @media (min-width: 40.0625em) { + padding-top: 24px !important; + } +} diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsEmail.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsEmail.tsx index 8acd66849..5eefdfa39 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsEmail.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsEmail.tsx @@ -8,11 +8,13 @@ import { ContentPreview, DetailSection, DetailsHeader, + LockedTemplateWarning, StandardDetailRows, } from './common'; import { Container } from 'nhsuk-react-components'; import concatClassNames from '@utils/concat-class-names'; import { renderEmailMarkdown } from '@utils/markdownit'; +import { useFeatureFlags } from '@providers/client-config-provider'; export default function PreviewTemplateDetailsEmail({ template, @@ -21,12 +23,14 @@ export default function PreviewTemplateDetailsEmail({ template: EmailTemplate; hideStatus?: boolean; }) { + const features = useFeatureFlags(); const subject = template.subject; const message = renderEmailMarkdown(template.message); return ( <> + {features.routing && } diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsLetter.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsLetter.tsx index 236dfe20b..cfeb0ae71 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsLetter.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsLetter.tsx @@ -7,10 +7,16 @@ import { } from 'nhs-notify-web-template-management-utils'; import { Filename } from '@atoms/Filename/Filename'; import content from '@content/content'; -import { DetailSection, DetailsHeader, StandardDetailRows } from './common'; +import { + DetailSection, + DetailsHeader, + LockedTemplateWarning, + StandardDetailRows, +} from './common'; import styles from './PreviewTemplateDetails.module.scss'; import { getBasePath } from '@utils/get-base-path'; import concatClassNames from '@utils/concat-class-names'; +import { useFeatureFlags } from '@providers/client-config-provider'; const { rowHeadings } = content.components.previewTemplateDetails; @@ -21,6 +27,8 @@ export default function PreviewTemplateDetailsLetter({ template: LetterTemplate; hideStatus?: boolean; }) { + const features = useFeatureFlags(); + const proofFilenames = Object.values(template.files.proofs ?? {}) .filter(({ virusScanStatus }) => virusScanStatus === 'PASSED') .map(({ fileName }) => fileName); @@ -34,6 +42,7 @@ export default function PreviewTemplateDetailsLetter({ return ( <> + {features.routing && } diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsNhsApp.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsNhsApp.tsx index a2bcef588..c393da30e 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsNhsApp.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsNhsApp.tsx @@ -8,11 +8,13 @@ import { ContentPreview, DetailSection, DetailsHeader, + LockedTemplateWarning, StandardDetailRows, } from './common'; import { Container } from 'nhsuk-react-components'; import concatClassNames from '@utils/concat-class-names'; import { renderNHSAppMarkdown } from '@utils/markdownit'; +import { useFeatureFlags } from '@providers/client-config-provider'; export default function PreviewTemplateDetailsNhsApp({ template, @@ -21,11 +23,13 @@ export default function PreviewTemplateDetailsNhsApp({ template: NHSAppTemplate; hideStatus?: boolean; }) { + const features = useFeatureFlags(); const message = renderNHSAppMarkdown(template.message); return ( <> + {features.routing && } diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsSms.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsSms.tsx index 115defb09..06db41819 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsSms.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsSms.tsx @@ -8,11 +8,13 @@ import { ContentPreview, DetailSection, DetailsHeader, + LockedTemplateWarning, StandardDetailRows, } from './common'; import { Container } from 'nhsuk-react-components'; import concatClassNames from '@utils/concat-class-names'; import { renderSMSMarkdown } from '@utils/markdownit'; +import { useFeatureFlags } from '@providers/client-config-provider'; export default function PreviewTemplateDetailsSms({ template, @@ -21,11 +23,13 @@ export default function PreviewTemplateDetailsSms({ template: SMSTemplate; hideStatus?: boolean; }) { + const features = useFeatureFlags(); const message = renderSMSMarkdown(template.message); return ( <> + {features.routing && } diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx index 5e2b52897..35ed973b2 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx @@ -1,4 +1,4 @@ -import { Tag, SummaryList } from 'nhsuk-react-components'; +import { Tag, SummaryList, WarningCallout } from 'nhsuk-react-components'; import concatClassNames from '@utils/concat-class-names'; import { statusToColourMapping, @@ -11,6 +11,8 @@ import { TemplateDto } from 'nhs-notify-backend-client'; import classNames from 'classnames'; import { toKebabCase } from '@utils/kebab-case'; import { useFeatureFlags } from '@providers/client-config-provider'; +import Link from 'next/link'; +import { interpolate } from '@utils/interpolate'; export type PreviewTemplateComponent = ({ template, @@ -99,7 +101,7 @@ export function StandardDetailRows({ {statusToDisplayMapping(template, features)} @@ -139,3 +141,42 @@ export function DetailsHeader({

); } + +export function LockedTemplateWarning({ template }: { template: TemplateDto }) { + const features = useFeatureFlags(); + + const warningContent = content.components.lockedTemplateWarning; + + return ( + + + {statusToDisplayMapping(template, features)} + + +

+ {template.templateType === 'LETTER' + ? warningContent.mainLetter + : warningContent.main} +

+ + {template.templateType !== 'LETTER' && ( +

+ + {warningContent.copy.link.text} + + {warningContent.copy.link.after} +

+ )} +
+ ); +} diff --git a/frontend/src/content/content.ts b/frontend/src/content/content.ts index ce4c39818..213ddf643 100644 --- a/frontend/src/content/content.ts +++ b/frontend/src/content/content.ts @@ -1387,6 +1387,19 @@ const previewTemplateFromMessagePlan = { }, }; +const lockedTemplateWarning = { + main: "You cannot edit or delete this template because it's used in a message plan that's in production.", + mainLetter: + "You cannot delete this template because it's used in a message plan that's in production.", + copy: { + link: { + href: '/copy-template/{{id}}', + text: 'Copy this template', + after: ' to create a draft with the same content.', + }, + }, +}; + const content = { global: { mainLayout }, components: { @@ -1400,6 +1413,7 @@ const content = { errorSummary, footer, header, + lockedTemplateWarning, logoutWarning, messageFormatting, messagePlanBlock, diff --git a/utils/utils/src/__tests__/__snapshots__/enum.test.ts.snap b/utils/utils/src/__tests__/__snapshots__/enum.test.ts.snap index 436e4388c..f5b7e6165 100644 --- a/utils/utils/src/__tests__/__snapshots__/enum.test.ts.snap +++ b/utils/utils/src/__tests__/__snapshots__/enum.test.ts.snap @@ -1,5 +1,165 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`statusToColourMapping status=DELETED type=EMAIL routing=false 1`] = `undefined`; + +exports[`statusToColourMapping status=DELETED type=EMAIL routing=true 1`] = `undefined`; + +exports[`statusToColourMapping status=DELETED type=LETTER routing=false 1`] = `undefined`; + +exports[`statusToColourMapping status=DELETED type=LETTER routing=true 1`] = `undefined`; + +exports[`statusToColourMapping status=DELETED type=NHS_APP routing=false 1`] = `undefined`; + +exports[`statusToColourMapping status=DELETED type=NHS_APP routing=true 1`] = `undefined`; + +exports[`statusToColourMapping status=DELETED type=SMS routing=false 1`] = `undefined`; + +exports[`statusToColourMapping status=DELETED type=SMS routing=true 1`] = `undefined`; + +exports[`statusToColourMapping status=NOT_YET_SUBMITTED type=EMAIL routing=false 1`] = `"green"`; + +exports[`statusToColourMapping status=NOT_YET_SUBMITTED type=EMAIL routing=true 1`] = `"green"`; + +exports[`statusToColourMapping status=NOT_YET_SUBMITTED type=LETTER routing=false 1`] = `undefined`; + +exports[`statusToColourMapping status=NOT_YET_SUBMITTED type=LETTER routing=true 1`] = `undefined`; + +exports[`statusToColourMapping status=NOT_YET_SUBMITTED type=NHS_APP routing=false 1`] = `"green"`; + +exports[`statusToColourMapping status=NOT_YET_SUBMITTED type=NHS_APP routing=true 1`] = `"green"`; + +exports[`statusToColourMapping status=NOT_YET_SUBMITTED type=SMS routing=false 1`] = `"green"`; + +exports[`statusToColourMapping status=NOT_YET_SUBMITTED type=SMS routing=true 1`] = `"green"`; + +exports[`statusToColourMapping status=PENDING_PROOF_REQUEST type=EMAIL routing=false 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_PROOF_REQUEST type=EMAIL routing=true 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_PROOF_REQUEST type=LETTER routing=false 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_PROOF_REQUEST type=LETTER routing=true 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_PROOF_REQUEST type=NHS_APP routing=false 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_PROOF_REQUEST type=NHS_APP routing=true 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_PROOF_REQUEST type=SMS routing=false 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_PROOF_REQUEST type=SMS routing=true 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_UPLOAD type=EMAIL routing=false 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_UPLOAD type=EMAIL routing=true 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_UPLOAD type=LETTER routing=false 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_UPLOAD type=LETTER routing=true 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_UPLOAD type=NHS_APP routing=false 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_UPLOAD type=NHS_APP routing=true 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_UPLOAD type=SMS routing=false 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_UPLOAD type=SMS routing=true 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_VALIDATION type=EMAIL routing=false 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_VALIDATION type=EMAIL routing=true 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_VALIDATION type=LETTER routing=false 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_VALIDATION type=LETTER routing=true 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_VALIDATION type=NHS_APP routing=false 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_VALIDATION type=NHS_APP routing=true 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_VALIDATION type=SMS routing=false 1`] = `"blue"`; + +exports[`statusToColourMapping status=PENDING_VALIDATION type=SMS routing=true 1`] = `"blue"`; + +exports[`statusToColourMapping status=PROOF_AVAILABLE type=EMAIL routing=false 1`] = `"orange"`; + +exports[`statusToColourMapping status=PROOF_AVAILABLE type=EMAIL routing=true 1`] = `"orange"`; + +exports[`statusToColourMapping status=PROOF_AVAILABLE type=LETTER routing=false 1`] = `"orange"`; + +exports[`statusToColourMapping status=PROOF_AVAILABLE type=LETTER routing=true 1`] = `"orange"`; + +exports[`statusToColourMapping status=PROOF_AVAILABLE type=NHS_APP routing=false 1`] = `"orange"`; + +exports[`statusToColourMapping status=PROOF_AVAILABLE type=NHS_APP routing=true 1`] = `"orange"`; + +exports[`statusToColourMapping status=PROOF_AVAILABLE type=SMS routing=false 1`] = `"orange"`; + +exports[`statusToColourMapping status=PROOF_AVAILABLE type=SMS routing=true 1`] = `"orange"`; + +exports[`statusToColourMapping status=SUBMITTED type=EMAIL routing=false 1`] = `"grey"`; + +exports[`statusToColourMapping status=SUBMITTED type=EMAIL routing=true 1`] = `"orange"`; + +exports[`statusToColourMapping status=SUBMITTED type=LETTER routing=false 1`] = `"grey"`; + +exports[`statusToColourMapping status=SUBMITTED type=LETTER routing=true 1`] = `"orange"`; + +exports[`statusToColourMapping status=SUBMITTED type=NHS_APP routing=false 1`] = `"grey"`; + +exports[`statusToColourMapping status=SUBMITTED type=NHS_APP routing=true 1`] = `"orange"`; + +exports[`statusToColourMapping status=SUBMITTED type=SMS routing=false 1`] = `"grey"`; + +exports[`statusToColourMapping status=SUBMITTED type=SMS routing=true 1`] = `"orange"`; + +exports[`statusToColourMapping status=VALIDATION_FAILED type=EMAIL routing=false 1`] = `"red"`; + +exports[`statusToColourMapping status=VALIDATION_FAILED type=EMAIL routing=true 1`] = `"red"`; + +exports[`statusToColourMapping status=VALIDATION_FAILED type=LETTER routing=false 1`] = `"red"`; + +exports[`statusToColourMapping status=VALIDATION_FAILED type=LETTER routing=true 1`] = `"red"`; + +exports[`statusToColourMapping status=VALIDATION_FAILED type=NHS_APP routing=false 1`] = `"red"`; + +exports[`statusToColourMapping status=VALIDATION_FAILED type=NHS_APP routing=true 1`] = `"red"`; + +exports[`statusToColourMapping status=VALIDATION_FAILED type=SMS routing=false 1`] = `"red"`; + +exports[`statusToColourMapping status=VALIDATION_FAILED type=SMS routing=true 1`] = `"red"`; + +exports[`statusToColourMapping status=VIRUS_SCAN_FAILED type=EMAIL routing=false 1`] = `"red"`; + +exports[`statusToColourMapping status=VIRUS_SCAN_FAILED type=EMAIL routing=true 1`] = `"red"`; + +exports[`statusToColourMapping status=VIRUS_SCAN_FAILED type=LETTER routing=false 1`] = `"red"`; + +exports[`statusToColourMapping status=VIRUS_SCAN_FAILED type=LETTER routing=true 1`] = `"red"`; + +exports[`statusToColourMapping status=VIRUS_SCAN_FAILED type=NHS_APP routing=false 1`] = `"red"`; + +exports[`statusToColourMapping status=VIRUS_SCAN_FAILED type=NHS_APP routing=true 1`] = `"red"`; + +exports[`statusToColourMapping status=VIRUS_SCAN_FAILED type=SMS routing=false 1`] = `"red"`; + +exports[`statusToColourMapping status=VIRUS_SCAN_FAILED type=SMS routing=true 1`] = `"red"`; + +exports[`statusToColourMapping status=WAITING_FOR_PROOF type=EMAIL routing=false 1`] = `"yellow"`; + +exports[`statusToColourMapping status=WAITING_FOR_PROOF type=EMAIL routing=true 1`] = `"yellow"`; + +exports[`statusToColourMapping status=WAITING_FOR_PROOF type=LETTER routing=false 1`] = `"yellow"`; + +exports[`statusToColourMapping status=WAITING_FOR_PROOF type=LETTER routing=true 1`] = `"yellow"`; + +exports[`statusToColourMapping status=WAITING_FOR_PROOF type=NHS_APP routing=false 1`] = `"yellow"`; + +exports[`statusToColourMapping status=WAITING_FOR_PROOF type=NHS_APP routing=true 1`] = `"yellow"`; + +exports[`statusToColourMapping status=WAITING_FOR_PROOF type=SMS routing=false 1`] = `"yellow"`; + +exports[`statusToColourMapping status=WAITING_FOR_PROOF type=SMS routing=true 1`] = `"yellow"`; + exports[`statusToDisplayMapping status=DELETED type=EMAIL routing=false 1`] = `""`; exports[`statusToDisplayMapping status=DELETED type=EMAIL routing=true 1`] = `""`; diff --git a/utils/utils/src/__tests__/enum.test.ts b/utils/utils/src/__tests__/enum.test.ts index 1e09099a1..a265ba370 100644 --- a/utils/utils/src/__tests__/enum.test.ts +++ b/utils/utils/src/__tests__/enum.test.ts @@ -115,76 +115,48 @@ describe('alphabeticalLanguageList', () => { }); }); -describe('statusToDisplayMapping', () => { - const cases = TEMPLATE_STATUS_LIST.flatMap((status) => - TEMPLATE_TYPE_LIST.flatMap((type) => - [true, false].map( - (routingFlag): [TemplateStatus, TemplateType, boolean] => [ - status, - type, - routingFlag, - ] - ) +const TEMPLATE_STATUS_CASES = TEMPLATE_STATUS_LIST.flatMap((status) => + TEMPLATE_TYPE_LIST.flatMap((type) => + [true, false].map( + (routingFlag): [TemplateStatus, TemplateType, boolean] => [ + status, + type, + routingFlag, + ] ) - ); - - test.each(cases)('status=%s type=%s routing=%s', (status, type, routing) => { - expect( - statusToDisplayMapping( - { - templateType: type, - templateStatus: status, - }, - { routing } - ) - ).toMatchSnapshot(); - }); -}); - -describe('statusToColourMapping', () => { - it.each(TEMPLATE_STATUS_LIST)( - 'should give the expected colour when templateStatus is %s for LETTERS', - (templateStatus) => { - const expectedColours: { [key in TemplateStatus]?: string } = { - SUBMITTED: 'grey', - WAITING_FOR_PROOF: 'yellow', - PENDING_PROOF_REQUEST: 'blue', - PENDING_UPLOAD: 'blue', - PENDING_VALIDATION: 'blue', - VIRUS_SCAN_FAILED: 'red', - VALIDATION_FAILED: 'red', - PROOF_AVAILABLE: 'orange', - }; + ) +); +describe('statusToDisplayMapping', () => { + test.each(TEMPLATE_STATUS_CASES)( + 'status=%s type=%s routing=%s', + (status, type, routing) => { expect( - statusToColourMapping({ templateStatus, templateType: 'LETTER' }) - ).toEqual(expectedColours[templateStatus]); + statusToDisplayMapping( + { + templateType: type, + templateStatus: status, + }, + { routing } + ) + ).toMatchSnapshot(); } ); +}); - describe.each(['NHS_APP', 'SMS', 'EMAIL'] as TemplateType[])( - 'template type: %p', - (templateType) => { - it.each(TEMPLATE_STATUS_LIST)( - 'should give the expected colour when templateStatus is %p', - (templateStatus) => { - const expectedColours: { [key in TemplateStatus]?: string } = { - SUBMITTED: 'grey', - WAITING_FOR_PROOF: 'yellow', - PENDING_PROOF_REQUEST: 'blue', - PENDING_UPLOAD: 'blue', - PENDING_VALIDATION: 'blue', - VIRUS_SCAN_FAILED: 'red', - VALIDATION_FAILED: 'red', - PROOF_AVAILABLE: 'orange', - NOT_YET_SUBMITTED: 'green', - }; - - expect( - statusToColourMapping({ templateStatus, templateType }) - ).toEqual(expectedColours[templateStatus]); - } - ); +describe('statusToColourMapping', () => { + test.each(TEMPLATE_STATUS_CASES)( + 'status=%s type=%s routing=%s', + (status, type, routing) => { + expect( + statusToColourMapping( + { + templateType: type, + templateStatus: status, + }, + { routing } + ) + ).toMatchSnapshot(); } ); }); diff --git a/utils/utils/src/enum.ts b/utils/utils/src/enum.ts index 41c69fd3e..0706fa110 100644 --- a/utils/utils/src/enum.ts +++ b/utils/utils/src/enum.ts @@ -127,39 +127,25 @@ type Colour = | 'yellow' | undefined; -const colourMappings: Record = { - NOT_YET_SUBMITTED: undefined, - SUBMITTED: 'grey', - DELETED: undefined, - PENDING_PROOF_REQUEST: 'blue', - PENDING_UPLOAD: 'blue', - PENDING_VALIDATION: 'blue', - VIRUS_SCAN_FAILED: 'red', - VALIDATION_FAILED: 'red', - WAITING_FOR_PROOF: 'yellow', - PROOF_AVAILABLE: 'orange', -} as const; - -const templateStatusToColourMappingsLetter = ( - status: TemplateStatus -): Colour | undefined => colourMappings[status]; - -const templateStatusToColourMappingsDigital = ( - status: TemplateStatus -): Colour | undefined => - ( - ({ - ...colourMappings, - NOT_YET_SUBMITTED: 'green', - }) satisfies typeof colourMappings - )[status]; - export const statusToColourMapping = ( - template: Pick -) => - template.templateType === 'LETTER' - ? templateStatusToColourMappingsLetter(template.templateStatus) - : templateStatusToColourMappingsDigital(template.templateStatus); + template: Pick, + featureFlags: Pick +) => { + const colourMappings: Record = { + NOT_YET_SUBMITTED: template.templateType === 'LETTER' ? undefined : 'green', + SUBMITTED: featureFlags.routing ? 'orange' : 'grey', + DELETED: undefined, + PENDING_PROOF_REQUEST: 'blue', + PENDING_UPLOAD: 'blue', + PENDING_VALIDATION: 'blue', + VIRUS_SCAN_FAILED: 'red', + VALIDATION_FAILED: 'red', + WAITING_FOR_PROOF: 'yellow', + PROOF_AVAILABLE: 'orange', + }; + + return colourMappings[template.templateStatus]; +}; export const templateTypeToUrlTextMappings = (type: TemplateType) => ({ From 91be3f93ae90cb93672206144c026532c14f0c0c Mon Sep 17 00:00:00 2001 From: Michael Harrison Date: Mon, 22 Dec 2025 16:29:25 +0000 Subject: [PATCH 3/6] CCM-11473: update playwright tests --- .../PreviewEmailTemplate.test.tsx.snap | 20 +++++++++---- .../PreviewNHSAppTemplate.test.tsx.snap | 20 +++++++++---- .../PreviewSMSTemplate.test.tsx.snap | 20 +++++++++---- .../PreviewSubmittedTemplate.test.tsx.snap | 27 ++++++++++++----- .../PreviewTemplateDetails.test.tsx.snap | 24 ++++++++++----- .../PreviewLetterTemplate.test.tsx.snap | 30 ++++++++++++------- .../PreviewTemplateDetails/common.tsx | 8 +++-- ...ting-for-proofs-letter-template.actions.js | 2 +- ...mplate-mgmt-preview-submitted-base-page.ts | 4 +++ ...iew-submitted-email-page.component.spec.ts | 9 ++++++ ...ew-submitted-letter-page.component.spec.ts | 6 ++++ ...w-submitted-nhs-app-page.component.spec.ts | 9 ++++++ ...eview-submitted-sms-page.component.spec.ts | 9 ++++++ 13 files changed, 141 insertions(+), 47 deletions(-) diff --git a/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap b/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap index f7ff01c37..1bd212c51 100644 --- a/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap @@ -106,7 +106,8 @@ exports[`Preview email form renders Routing feature flag - Disabled Client-side > Draft @@ -384,7 +385,8 @@ exports[`Preview email form renders Routing feature flag - Disabled matches erro > Draft @@ -642,7 +644,8 @@ exports[`Preview email form renders matches snapshot when navigating from edit s > Draft @@ -855,6 +858,7 @@ exports[`Preview email form renders matches snapshot when navigating from edit s

Copy this template @@ -1334,7 +1341,8 @@ exports[`Preview email form renders matches snapshot when navigating from manage > Draft diff --git a/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap b/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap index b85b6b6b9..e003f5bfe 100644 --- a/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap @@ -106,7 +106,8 @@ exports[`Preview nhs app form renders Routing feature flag - Disabled Client-sid > Draft @@ -360,7 +361,8 @@ exports[`Preview nhs app form renders Routing feature flag - Disabled matches er > Draft @@ -594,7 +596,8 @@ exports[`Preview nhs app form renders matches snapshot when navigating from edit > Draft @@ -783,6 +786,7 @@ exports[`Preview nhs app form renders matches snapshot when navigating from edit

Copy this template @@ -836,7 +840,8 @@ exports[`Preview nhs app form renders matches snapshot when navigating from edit > Draft @@ -977,7 +982,8 @@ exports[`Preview nhs app form renders matches snapshot when navigating from mana > Draft @@ -1161,6 +1167,7 @@ exports[`Preview nhs app form renders matches snapshot when navigating from mana

Copy this template @@ -1214,7 +1221,8 @@ exports[`Preview nhs app form renders matches snapshot when navigating from mana > Draft diff --git a/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap b/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap index 84fdc4ace..ad9488b5b 100644 --- a/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap @@ -106,7 +106,8 @@ exports[`Review sms form renders Routing feature flag - Disabled Client-side val > Draft @@ -359,7 +360,8 @@ exports[`Review sms form renders Routing feature flag - Disabled matches error s > Draft @@ -592,7 +594,8 @@ exports[`Review sms form renders matches snapshot when navigating from edit scre > Draft @@ -780,6 +783,7 @@ exports[`Review sms form renders matches snapshot when navigating from edit scre

Copy this template @@ -833,7 +837,8 @@ exports[`Review sms form renders matches snapshot when navigating from edit scre > Draft @@ -973,7 +978,8 @@ exports[`Review sms form renders matches snapshot when navigating from manage te > Draft @@ -1156,6 +1162,7 @@ exports[`Review sms form renders matches snapshot when navigating from manage te

Copy this template @@ -1209,7 +1216,8 @@ exports[`Review sms form renders matches snapshot when navigating from manage te > Draft diff --git a/frontend/src/__tests__/components/molecules/__snapshots__/PreviewSubmittedTemplate.test.tsx.snap b/frontend/src/__tests__/components/molecules/__snapshots__/PreviewSubmittedTemplate.test.tsx.snap index 0c7b59bcc..1cb9bf1e9 100644 --- a/frontend/src/__tests__/components/molecules/__snapshots__/PreviewSubmittedTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/molecules/__snapshots__/PreviewSubmittedTemplate.test.tsx.snap @@ -83,7 +83,8 @@ exports[`PreviewSubmittedTemplate component routing = false should render app me > Submitted @@ -227,7 +228,8 @@ exports[`PreviewSubmittedTemplate component routing = false should render email > Submitted @@ -396,7 +398,8 @@ exports[`PreviewSubmittedTemplate component routing = false should render letter > Submitted @@ -661,7 +664,8 @@ exports[`PreviewSubmittedTemplate component routing = false should render sms 1` > Submitted @@ -770,6 +774,7 @@ exports[`PreviewSubmittedTemplate component routing = true should render app mes

Copy this template @@ -825,7 +830,8 @@ exports[`PreviewSubmittedTemplate component routing = true should render app mes > Locked @@ -928,6 +934,7 @@ exports[`PreviewSubmittedTemplate component routing = true should render email 1

Copy this template @@ -983,7 +990,8 @@ exports[`PreviewSubmittedTemplate component routing = true should render email 1 > Locked @@ -1158,7 +1166,8 @@ exports[`PreviewSubmittedTemplate component routing = true should render letter > Locked @@ -1385,6 +1394,7 @@ exports[`PreviewSubmittedTemplate component routing = true should render sms 1`]

Copy this template @@ -1440,7 +1450,8 @@ exports[`PreviewSubmittedTemplate component routing = true should render sms 1`] > Locked diff --git a/frontend/src/__tests__/components/molecules/__snapshots__/PreviewTemplateDetails.test.tsx.snap b/frontend/src/__tests__/components/molecules/__snapshots__/PreviewTemplateDetails.test.tsx.snap index 328e11421..74093c591 100644 --- a/frontend/src/__tests__/components/molecules/__snapshots__/PreviewTemplateDetails.test.tsx.snap +++ b/frontend/src/__tests__/components/molecules/__snapshots__/PreviewTemplateDetails.test.tsx.snap @@ -65,7 +65,8 @@ exports[`PreviewTemplateDetailsEmail matches snapshot 1`] = ` > Submitted @@ -199,7 +200,8 @@ exports[`PreviewTemplateDetailsLetter if status is NOT_YET_SUBMITTED, then Not y > Not yet submitted @@ -311,7 +313,8 @@ exports[`PreviewTemplateDetailsLetter if status is PROOF_AVAILABLE, but no proof > Proof available @@ -423,7 +426,8 @@ exports[`PreviewTemplateDetailsLetter matches snapshot when proofs are present, > Proof available @@ -656,7 +660,8 @@ exports[`PreviewTemplateDetailsLetter matches snapshot when test data CSV is abs > Checking files @@ -773,7 +778,8 @@ exports[`PreviewTemplateDetailsLetter matches snapshot without proofs 1`] = ` > Checking files @@ -926,7 +932,8 @@ exports[`PreviewTemplateDetailsNhsApp matches snapshot 1`] = ` > Draft @@ -1035,7 +1042,8 @@ exports[`PreviewTemplateDetailsSms matches snapshot 1`] = ` > Submitted diff --git a/frontend/src/__tests__/components/organisms/__snapshots__/PreviewLetterTemplate.test.tsx.snap b/frontend/src/__tests__/components/organisms/__snapshots__/PreviewLetterTemplate.test.tsx.snap index 212d3bbb9..e731fe47b 100644 --- a/frontend/src/__tests__/components/organisms/__snapshots__/PreviewLetterTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/organisms/__snapshots__/PreviewLetterTemplate.test.tsx.snap @@ -81,7 +81,8 @@ exports[`PreviewLetterTemplate component matches snapshot when template language > @@ -265,7 +266,8 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i > @@ -412,7 +414,8 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i > @@ -559,7 +562,8 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i > @@ -1107,7 +1113,8 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i > @@ -1395,7 +1402,8 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i > @@ -1599,7 +1607,8 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i > @@ -1735,7 +1744,8 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i > diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx index c9c954119..a860c9875 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx @@ -105,7 +105,8 @@ export function StandardDetailRows({ {rowHeadings.templateStatus} {statusToDisplayMapping(template, features)} @@ -176,7 +177,10 @@ export function LockedTemplateWarning({ template }: { template: TemplateDto }) { {template.templateType !== 'LETTER' && (

- + {warningContent.copy.link.text} {warningContent.copy.link.after} diff --git a/tests/accessibility/actions/waiting-for-proofs-letter-template.actions.js b/tests/accessibility/actions/waiting-for-proofs-letter-template.actions.js index 79f4866be..d33f671f2 100644 --- a/tests/accessibility/actions/waiting-for-proofs-letter-template.actions.js +++ b/tests/accessibility/actions/waiting-for-proofs-letter-template.actions.js @@ -4,7 +4,7 @@ const { const pageActions = [ ...goToPreviewLetterTemplateActions, - 'wait for [data-test-id=status-tag-waiting-for-proof] to be visible', + 'wait for [data-test-id=status-tag][data-status=waiting-for-proof] to be visible', ]; const waitingForProofsLetterTemplatePage = (url) => ({ diff --git a/tests/test-team/pages/template-mgmt-preview-submitted-base-page.ts b/tests/test-team/pages/template-mgmt-preview-submitted-base-page.ts index 23012dcea..1c04c7fec 100644 --- a/tests/test-team/pages/template-mgmt-preview-submitted-base-page.ts +++ b/tests/test-team/pages/template-mgmt-preview-submitted-base-page.ts @@ -3,10 +3,14 @@ import { TemplateMgmtBasePage } from './template-mgmt-base-page'; export abstract class TemplateMgmtPreviewSubmittedBasePage extends TemplateMgmtBasePage { readonly campaignId: Locator; + readonly copyLink: Locator; + readonly statusTag: Locator; constructor(page: Page) { super(page); this.campaignId = page.locator('[id="campaign-id"]'); + this.copyLink = page.getByTestId('copy-link'); + this.statusTag = page.getByTestId('status-tag'); } } diff --git a/tests/test-team/template-mgmt-component-tests/email/template-mgmt-preview-submitted-email-page.component.spec.ts b/tests/test-team/template-mgmt-component-tests/email/template-mgmt-preview-submitted-email-page.component.spec.ts index 97dc86452..f2c4d9261 100644 --- a/tests/test-team/template-mgmt-component-tests/email/template-mgmt-preview-submitted-email-page.component.spec.ts +++ b/tests/test-team/template-mgmt-component-tests/email/template-mgmt-preview-submitted-email-page.component.spec.ts @@ -83,6 +83,15 @@ test.describe('Preview submitted Email message template Page', () => { await expect(previewSubmittedEmailTemplatePage.messageText).toHaveText( 'test-template-message' ); + + await expect(previewSubmittedEmailTemplatePage.statusTag).toHaveText( + 'Locked' + ); + + await expect(previewSubmittedEmailTemplatePage.copyLink).toHaveAttribute( + 'href', + `/copy-template/${templates.valid.id}` + ); }); test.describe('Page functionality', () => { diff --git a/tests/test-team/template-mgmt-component-tests/letter/template-mgmt-preview-submitted-letter-page.component.spec.ts b/tests/test-team/template-mgmt-component-tests/letter/template-mgmt-preview-submitted-letter-page.component.spec.ts index f0a352741..4d38d0b8e 100644 --- a/tests/test-team/template-mgmt-component-tests/letter/template-mgmt-preview-submitted-letter-page.component.spec.ts +++ b/tests/test-team/template-mgmt-component-tests/letter/template-mgmt-preview-submitted-letter-page.component.spec.ts @@ -93,6 +93,12 @@ test.describe('Preview submitted Letter message template Page', () => { await expect(previewSubmittedLetterTemplatePage.campaignId).toContainText( templates.valid.campaignId ); + + await expect(previewSubmittedLetterTemplatePage.statusTag).toHaveText( + 'Locked' + ); + + await expect(previewSubmittedLetterTemplatePage.copyLink).toHaveCount(0); }); test.describe('Page functionality', () => { diff --git a/tests/test-team/template-mgmt-component-tests/nhs-app/template-mgmt-preview-submitted-nhs-app-page.component.spec.ts b/tests/test-team/template-mgmt-component-tests/nhs-app/template-mgmt-preview-submitted-nhs-app-page.component.spec.ts index ab57e94f7..c74ac6d2c 100644 --- a/tests/test-team/template-mgmt-component-tests/nhs-app/template-mgmt-preview-submitted-nhs-app-page.component.spec.ts +++ b/tests/test-team/template-mgmt-component-tests/nhs-app/template-mgmt-preview-submitted-nhs-app-page.component.spec.ts @@ -78,6 +78,15 @@ test.describe('Preview submitted NHS App message template Page', () => { await expect(previewSubmittedNHSAppTemplatePage.messageText).toHaveText( 'test-template-message' ); + + await expect(previewSubmittedNHSAppTemplatePage.statusTag).toHaveText( + 'Locked' + ); + + await expect(previewSubmittedNHSAppTemplatePage.copyLink).toHaveAttribute( + 'href', + `/copy-template/${templates.valid.id}` + ); }); test.describe('Page functionality', () => { diff --git a/tests/test-team/template-mgmt-component-tests/sms/template-mgmt-preview-submitted-sms-page.component.spec.ts b/tests/test-team/template-mgmt-component-tests/sms/template-mgmt-preview-submitted-sms-page.component.spec.ts index 3b86fb027..3e90d2655 100644 --- a/tests/test-team/template-mgmt-component-tests/sms/template-mgmt-preview-submitted-sms-page.component.spec.ts +++ b/tests/test-team/template-mgmt-component-tests/sms/template-mgmt-preview-submitted-sms-page.component.spec.ts @@ -77,6 +77,15 @@ test.describe('Preview submitted sms message template Page', () => { await expect(previewSubmittedSMSTemplatePage.messageText).toHaveText( 'test-template-message' ); + + await expect(previewSubmittedSMSTemplatePage.statusTag).toHaveText( + 'Locked' + ); + + await expect(previewSubmittedSMSTemplatePage.copyLink).toHaveAttribute( + 'href', + `/copy-template/${templates.valid.id}` + ); }); test.describe('Page functionality', () => { From daace1e35011cfa2b5319fe0e06b793b6b79383d Mon Sep 17 00:00:00 2001 From: Michael Harrison Date: Mon, 22 Dec 2025 16:35:43 +0000 Subject: [PATCH 4/6] CCM-11473: testid consistency --- .../PreviewEmailTemplate.test.tsx.snap | 12 +++++------ .../PreviewNHSAppTemplate.test.tsx.snap | 12 +++++------ .../PreviewSMSTemplate.test.tsx.snap | 12 +++++------ .../PreviewSubmittedTemplate.test.tsx.snap | 16 +++++++-------- .../PreviewTemplateDetails.test.tsx.snap | 16 +++++++-------- .../PreviewLetterTemplate.test.tsx.snap | 20 +++++++++---------- .../PreviewTemplateDetails/common.tsx | 2 +- ...ting-for-proofs-letter-template.actions.js | 2 +- 8 files changed, 46 insertions(+), 46 deletions(-) diff --git a/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap b/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap index 1bd212c51..e13fadce0 100644 --- a/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap @@ -107,7 +107,7 @@ exports[`Preview email form renders Routing feature flag - Disabled Client-side Draft @@ -386,7 +386,7 @@ exports[`Preview email form renders Routing feature flag - Disabled matches erro Draft @@ -645,7 +645,7 @@ exports[`Preview email form renders matches snapshot when navigating from edit s Draft @@ -913,7 +913,7 @@ exports[`Preview email form renders matches snapshot when navigating from edit s Draft @@ -1079,7 +1079,7 @@ exports[`Preview email form renders matches snapshot when navigating from manage Draft @@ -1342,7 +1342,7 @@ exports[`Preview email form renders matches snapshot when navigating from manage Draft diff --git a/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap b/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap index e003f5bfe..a9d36d25f 100644 --- a/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap @@ -107,7 +107,7 @@ exports[`Preview nhs app form renders Routing feature flag - Disabled Client-sid Draft @@ -362,7 +362,7 @@ exports[`Preview nhs app form renders Routing feature flag - Disabled matches er Draft @@ -597,7 +597,7 @@ exports[`Preview nhs app form renders matches snapshot when navigating from edit Draft @@ -841,7 +841,7 @@ exports[`Preview nhs app form renders matches snapshot when navigating from edit Draft @@ -983,7 +983,7 @@ exports[`Preview nhs app form renders matches snapshot when navigating from mana Draft @@ -1222,7 +1222,7 @@ exports[`Preview nhs app form renders matches snapshot when navigating from mana Draft diff --git a/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap b/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap index ad9488b5b..b445a98d0 100644 --- a/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap @@ -107,7 +107,7 @@ exports[`Review sms form renders Routing feature flag - Disabled Client-side val Draft @@ -361,7 +361,7 @@ exports[`Review sms form renders Routing feature flag - Disabled matches error s Draft @@ -595,7 +595,7 @@ exports[`Review sms form renders matches snapshot when navigating from edit scre Draft @@ -838,7 +838,7 @@ exports[`Review sms form renders matches snapshot when navigating from edit scre Draft @@ -979,7 +979,7 @@ exports[`Review sms form renders matches snapshot when navigating from manage te Draft @@ -1217,7 +1217,7 @@ exports[`Review sms form renders matches snapshot when navigating from manage te Draft diff --git a/frontend/src/__tests__/components/molecules/__snapshots__/PreviewSubmittedTemplate.test.tsx.snap b/frontend/src/__tests__/components/molecules/__snapshots__/PreviewSubmittedTemplate.test.tsx.snap index 1cb9bf1e9..0c8e71f20 100644 --- a/frontend/src/__tests__/components/molecules/__snapshots__/PreviewSubmittedTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/molecules/__snapshots__/PreviewSubmittedTemplate.test.tsx.snap @@ -84,7 +84,7 @@ exports[`PreviewSubmittedTemplate component routing = false should render app me Submitted @@ -229,7 +229,7 @@ exports[`PreviewSubmittedTemplate component routing = false should render email Submitted @@ -399,7 +399,7 @@ exports[`PreviewSubmittedTemplate component routing = false should render letter Submitted @@ -665,7 +665,7 @@ exports[`PreviewSubmittedTemplate component routing = false should render sms 1` Submitted @@ -831,7 +831,7 @@ exports[`PreviewSubmittedTemplate component routing = true should render app mes Locked @@ -991,7 +991,7 @@ exports[`PreviewSubmittedTemplate component routing = true should render email 1 Locked @@ -1167,7 +1167,7 @@ exports[`PreviewSubmittedTemplate component routing = true should render letter Locked @@ -1451,7 +1451,7 @@ exports[`PreviewSubmittedTemplate component routing = true should render sms 1`] Locked diff --git a/frontend/src/__tests__/components/molecules/__snapshots__/PreviewTemplateDetails.test.tsx.snap b/frontend/src/__tests__/components/molecules/__snapshots__/PreviewTemplateDetails.test.tsx.snap index 74093c591..7aac29dee 100644 --- a/frontend/src/__tests__/components/molecules/__snapshots__/PreviewTemplateDetails.test.tsx.snap +++ b/frontend/src/__tests__/components/molecules/__snapshots__/PreviewTemplateDetails.test.tsx.snap @@ -66,7 +66,7 @@ exports[`PreviewTemplateDetailsEmail matches snapshot 1`] = ` Submitted @@ -201,7 +201,7 @@ exports[`PreviewTemplateDetailsLetter if status is NOT_YET_SUBMITTED, then Not y Not yet submitted @@ -314,7 +314,7 @@ exports[`PreviewTemplateDetailsLetter if status is PROOF_AVAILABLE, but no proof Proof available @@ -427,7 +427,7 @@ exports[`PreviewTemplateDetailsLetter matches snapshot when proofs are present, Proof available @@ -661,7 +661,7 @@ exports[`PreviewTemplateDetailsLetter matches snapshot when test data CSV is abs Checking files @@ -779,7 +779,7 @@ exports[`PreviewTemplateDetailsLetter matches snapshot without proofs 1`] = ` Checking files @@ -933,7 +933,7 @@ exports[`PreviewTemplateDetailsNhsApp matches snapshot 1`] = ` Draft @@ -1043,7 +1043,7 @@ exports[`PreviewTemplateDetailsSms matches snapshot 1`] = ` Submitted diff --git a/frontend/src/__tests__/components/organisms/__snapshots__/PreviewLetterTemplate.test.tsx.snap b/frontend/src/__tests__/components/organisms/__snapshots__/PreviewLetterTemplate.test.tsx.snap index e731fe47b..9411ac4f7 100644 --- a/frontend/src/__tests__/components/organisms/__snapshots__/PreviewLetterTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/organisms/__snapshots__/PreviewLetterTemplate.test.tsx.snap @@ -82,7 +82,7 @@ exports[`PreviewLetterTemplate component matches snapshot when template language @@ -267,7 +267,7 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i @@ -415,7 +415,7 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i @@ -563,7 +563,7 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i @@ -1114,7 +1114,7 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i @@ -1403,7 +1403,7 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i @@ -1608,7 +1608,7 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i @@ -1745,7 +1745,7 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx index a860c9875..441070b03 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/common.tsx @@ -105,7 +105,7 @@ export function StandardDetailRows({ {rowHeadings.templateStatus} diff --git a/tests/accessibility/actions/waiting-for-proofs-letter-template.actions.js b/tests/accessibility/actions/waiting-for-proofs-letter-template.actions.js index d33f671f2..7ec517418 100644 --- a/tests/accessibility/actions/waiting-for-proofs-letter-template.actions.js +++ b/tests/accessibility/actions/waiting-for-proofs-letter-template.actions.js @@ -4,7 +4,7 @@ const { const pageActions = [ ...goToPreviewLetterTemplateActions, - 'wait for [data-test-id=status-tag][data-status=waiting-for-proof] to be visible', + 'wait for [data-testid=status-tag][data-status=waiting-for-proof] to be visible', ]; const waitingForProofsLetterTemplatePage = (url) => ({ From 2e30b65ab0df16a611b51b7c7d2a9d9ff154585a Mon Sep 17 00:00:00 2001 From: Michael Harrison Date: Tue, 23 Dec 2025 09:35:28 +0000 Subject: [PATCH 5/6] CCM--11473: fix test href attribute --- ...template-mgmt-preview-submitted-email-page.component.spec.ts | 2 +- ...mplate-mgmt-preview-submitted-nhs-app-page.component.spec.ts | 2 +- .../template-mgmt-preview-submitted-sms-page.component.spec.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/test-team/template-mgmt-component-tests/email/template-mgmt-preview-submitted-email-page.component.spec.ts b/tests/test-team/template-mgmt-component-tests/email/template-mgmt-preview-submitted-email-page.component.spec.ts index f2c4d9261..e4de67d66 100644 --- a/tests/test-team/template-mgmt-component-tests/email/template-mgmt-preview-submitted-email-page.component.spec.ts +++ b/tests/test-team/template-mgmt-component-tests/email/template-mgmt-preview-submitted-email-page.component.spec.ts @@ -90,7 +90,7 @@ test.describe('Preview submitted Email message template Page', () => { await expect(previewSubmittedEmailTemplatePage.copyLink).toHaveAttribute( 'href', - `/copy-template/${templates.valid.id}` + `/templates/copy-template/${templates.valid.id}` ); }); diff --git a/tests/test-team/template-mgmt-component-tests/nhs-app/template-mgmt-preview-submitted-nhs-app-page.component.spec.ts b/tests/test-team/template-mgmt-component-tests/nhs-app/template-mgmt-preview-submitted-nhs-app-page.component.spec.ts index c74ac6d2c..2820b0060 100644 --- a/tests/test-team/template-mgmt-component-tests/nhs-app/template-mgmt-preview-submitted-nhs-app-page.component.spec.ts +++ b/tests/test-team/template-mgmt-component-tests/nhs-app/template-mgmt-preview-submitted-nhs-app-page.component.spec.ts @@ -85,7 +85,7 @@ test.describe('Preview submitted NHS App message template Page', () => { await expect(previewSubmittedNHSAppTemplatePage.copyLink).toHaveAttribute( 'href', - `/copy-template/${templates.valid.id}` + `/templates/copy-template/${templates.valid.id}` ); }); diff --git a/tests/test-team/template-mgmt-component-tests/sms/template-mgmt-preview-submitted-sms-page.component.spec.ts b/tests/test-team/template-mgmt-component-tests/sms/template-mgmt-preview-submitted-sms-page.component.spec.ts index 3e90d2655..85a3ba8da 100644 --- a/tests/test-team/template-mgmt-component-tests/sms/template-mgmt-preview-submitted-sms-page.component.spec.ts +++ b/tests/test-team/template-mgmt-component-tests/sms/template-mgmt-preview-submitted-sms-page.component.spec.ts @@ -84,7 +84,7 @@ test.describe('Preview submitted sms message template Page', () => { await expect(previewSubmittedSMSTemplatePage.copyLink).toHaveAttribute( 'href', - `/copy-template/${templates.valid.id}` + `/templates/copy-template/${templates.valid.id}` ); }); From bc461f020967226b88d76833a07f9f5026ad58e1 Mon Sep 17 00:00:00 2001 From: Michael Harrison Date: Tue, 23 Dec 2025 15:52:49 +0000 Subject: [PATCH 6/6] CCM-11473: only show lock warning callout for locked templates --- .../PreviewEmailTemplate.test.tsx.snap | 42 ------------------- .../PreviewNHSAppTemplate.test.tsx.snap | 42 ------------------- .../PreviewSMSTemplate.test.tsx.snap | 42 ------------------- .../PreviewLetterTemplate.test.tsx.snap | 10 ----- .../PreviewTemplateDetailsEmail.tsx | 6 ++- .../PreviewTemplateDetailsLetter.tsx | 6 ++- .../PreviewTemplateDetailsNhsApp.tsx | 6 ++- .../PreviewTemplateDetailsSms.tsx | 6 ++- 8 files changed, 20 insertions(+), 140 deletions(-) diff --git a/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap b/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap index e13fadce0..3fe397d2e 100644 --- a/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap @@ -845,27 +845,6 @@ exports[`Preview email form renders matches snapshot when navigating from edit s test-template-email -

@@ -1274,27 +1253,6 @@ exports[`Preview email form renders matches snapshot when navigating from manage test-template-email
-
- - Draft - -

- You cannot edit or delete this template because it's used in a message plan that's in production. -

-

- - Copy this template - - to create a draft with the same content. -

-
diff --git a/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap b/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap index a9d36d25f..1f3efcd50 100644 --- a/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap @@ -773,27 +773,6 @@ exports[`Preview nhs app form renders matches snapshot when navigating from edit test-template-nhs app
-
- - Draft - -

- You cannot edit or delete this template because it's used in a message plan that's in production. -

-

- - Copy this template - - to create a draft with the same content. -

-
@@ -1154,27 +1133,6 @@ exports[`Preview nhs app form renders matches snapshot when navigating from mana test-template-nhs app
-
- - Draft - -

- You cannot edit or delete this template because it's used in a message plan that's in production. -

-

- - Copy this template - - to create a draft with the same content. -

-
diff --git a/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap b/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap index b445a98d0..7d318ad59 100644 --- a/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap @@ -770,27 +770,6 @@ exports[`Review sms form renders matches snapshot when navigating from edit scre test-template-sms
-
- - Draft - -

- You cannot edit or delete this template because it's used in a message plan that's in production. -

-

- - Copy this template - - to create a draft with the same content. -

-
@@ -1149,27 +1128,6 @@ exports[`Review sms form renders matches snapshot when navigating from manage te test-template-sms
-
- - Draft - -

- You cannot edit or delete this template because it's used in a message plan that's in production. -

-

- - Copy this template - - to create a draft with the same content. -

-
diff --git a/frontend/src/__tests__/components/organisms/__snapshots__/PreviewLetterTemplate.test.tsx.snap b/frontend/src/__tests__/components/organisms/__snapshots__/PreviewLetterTemplate.test.tsx.snap index 9411ac4f7..29c8bde58 100644 --- a/frontend/src/__tests__/components/organisms/__snapshots__/PreviewLetterTemplate.test.tsx.snap +++ b/frontend/src/__tests__/components/organisms/__snapshots__/PreviewLetterTemplate.test.tsx.snap @@ -1057,16 +1057,6 @@ exports[`PreviewLetterTemplate component matches snapshot when template status i letter
-
- -

- You cannot delete this template because it's used in a message plan that's in production. -

-
diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsEmail.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsEmail.tsx index 5eefdfa39..fa9a526be 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsEmail.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsEmail.tsx @@ -30,7 +30,11 @@ export default function PreviewTemplateDetailsEmail({ return ( <> - {features.routing && } + + {features.routing && template.templateStatus === 'SUBMITTED' && ( + + )} + diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsLetter.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsLetter.tsx index cfeb0ae71..685f088cd 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsLetter.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsLetter.tsx @@ -42,7 +42,11 @@ export default function PreviewTemplateDetailsLetter({ return ( <> - {features.routing && } + + {features.routing && template.templateStatus === 'SUBMITTED' && ( + + )} + diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsNhsApp.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsNhsApp.tsx index c393da30e..2b14f2c49 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsNhsApp.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsNhsApp.tsx @@ -29,7 +29,11 @@ export default function PreviewTemplateDetailsNhsApp({ return ( <> - {features.routing && } + + {features.routing && template.templateStatus === 'SUBMITTED' && ( + + )} + diff --git a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsSms.tsx b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsSms.tsx index 06db41819..661e7e323 100644 --- a/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsSms.tsx +++ b/frontend/src/components/molecules/PreviewTemplateDetails/PreviewTemplateDetailsSms.tsx @@ -29,7 +29,11 @@ export default function PreviewTemplateDetailsSms({ return ( <> - {features.routing && } + + {features.routing && template.templateStatus === 'SUBMITTED' && ( + + )} +

Copy this template @@ -908,7 +912,8 @@ exports[`Preview email form renders matches snapshot when navigating from edit s > Draft @@ -1073,7 +1078,8 @@ exports[`Preview email form renders matches snapshot when navigating from manage > Draft @@ -1281,6 +1287,7 @@ exports[`Preview email form renders matches snapshot when navigating from manage