Skip to content

Commit 4c9f1c9

Browse files
committed
CCM-11343: add proofingEnabled field to templates
1 parent c346543 commit 4c9f1c9

File tree

19 files changed

+759
-264
lines changed

19 files changed

+759
-264
lines changed

frontend/src/__tests__/app/request-proof-of-template/page.test.tsx

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ describe('RequestProofPage', () => {
4242
name: 'template-name',
4343
letterType: 'x0',
4444
language: 'en',
45+
proofingEnabled: true,
4546
files: {
4647
pdfTemplate: {
4748
virusScanStatus: 'PASSED',
@@ -123,4 +124,41 @@ describe('RequestProofPage', () => {
123124

124125
expect(redirectMock).toHaveBeenCalledWith('/invalid-template', 'replace');
125126
});
127+
128+
test('should forbid user from requesting a proof when proofingEnabled is false', async () => {
129+
const state = {
130+
id: 'template-id',
131+
templateType: 'LETTER',
132+
templateStatus: 'NOT_YET_SUBMITTED',
133+
name: 'template-name',
134+
letterType: 'x0',
135+
language: 'ar',
136+
proofingEnabled: false,
137+
files: {
138+
pdfTemplate: {
139+
virusScanStatus: 'PASSED',
140+
currentVersion: 'a',
141+
fileName: 'a.pdf',
142+
},
143+
},
144+
} satisfies Partial<TemplateDto>;
145+
146+
getTemplateMock.mockResolvedValue({
147+
...state,
148+
createdAt: 'today',
149+
updatedAt: 'today',
150+
});
151+
152+
await RequestProofPage({
153+
params: Promise.resolve({
154+
templateId: 'template-id',
155+
}),
156+
});
157+
158+
expect(await generateMetadata()).toEqual({
159+
title: pageTitle,
160+
});
161+
162+
expect(redirectMock).toHaveBeenCalledWith('/invalid-template', 'replace');
163+
});
126164
});

frontend/src/__tests__/components/organisms/PreviewLetterTemplate.test.tsx

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
11
import { PreviewLetterTemplate } from '@organisms/PreviewLetterTemplate/PreviewLetterTemplate';
22
import { render } from '@testing-library/react';
3+
import { isRightToLeft } from 'nhs-notify-web-template-management-utils/enum';
4+
5+
jest.mock('nhs-notify-web-template-management-utils/enum');
6+
7+
const isRightToLeftMock = jest.mocked(isRightToLeft);
38

49
describe('PreviewLetterTemplate component', () => {
10+
beforeEach(() => {
11+
jest.resetAllMocks();
12+
isRightToLeftMock.mockReturnValueOnce(false);
13+
});
14+
515
it('matches snapshot when template status is VIRUS_SCAN_FAILED', () => {
616
const container = render(
717
<PreviewLetterTemplate
@@ -20,6 +30,7 @@ describe('PreviewLetterTemplate component', () => {
2030
},
2131
testDataCsv: undefined,
2232
},
33+
proofingEnabled: true,
2334
createdAt: '2025-04-02T09:33:25.729Z',
2435
updatedAt: '2025-04-02T09:33:25.729Z',
2536
}}
@@ -46,6 +57,7 @@ describe('PreviewLetterTemplate component', () => {
4657
virusScanStatus: 'PASSED',
4758
},
4859
},
60+
proofingEnabled: true,
4961
createdAt: '2025-04-02T09:33:25.729Z',
5062
updatedAt: '2025-04-02T09:33:25.729Z',
5163
}}
@@ -72,6 +84,7 @@ describe('PreviewLetterTemplate component', () => {
7284
virusScanStatus: 'PASSED',
7385
},
7486
},
87+
proofingEnabled: true,
7588
createdAt: '2025-04-02T09:33:25.729Z',
7689
updatedAt: '2025-04-02T09:33:25.729Z',
7790
}}
@@ -106,6 +119,7 @@ describe('PreviewLetterTemplate component', () => {
106119
},
107120
},
108121
},
122+
proofingEnabled: true,
109123
createdAt: '2025-04-02T09:33:25.729Z',
110124
updatedAt: '2025-04-02T09:33:25.729Z',
111125
}}
@@ -140,6 +154,7 @@ describe('PreviewLetterTemplate component', () => {
140154
},
141155
},
142156
},
157+
proofingEnabled: true,
143158
createdAt: '2025-04-02T09:33:25.729Z',
144159
updatedAt: '2025-04-02T09:33:25.729Z',
145160
}}
@@ -171,6 +186,7 @@ describe('PreviewLetterTemplate component', () => {
171186
virusScanStatus: 'PASSED',
172187
},
173188
},
189+
proofingEnabled: true,
174190
createdAt: '2025-04-02T09:33:25.729Z',
175191
updatedAt: '2025-04-02T09:33:25.729Z',
176192
}}
@@ -197,6 +213,7 @@ describe('PreviewLetterTemplate component', () => {
197213
virusScanStatus: 'PENDING',
198214
},
199215
},
216+
proofingEnabled: true,
200217
createdAt: '2025-04-02T09:33:25.729Z',
201218
updatedAt: '2025-04-02T09:33:25.729Z',
202219
}}
@@ -223,6 +240,81 @@ describe('PreviewLetterTemplate component', () => {
223240
virusScanStatus: 'PASSED',
224241
},
225242
},
243+
proofingEnabled: true,
244+
createdAt: '2025-04-02T09:33:25.729Z',
245+
updatedAt: '2025-04-02T09:33:25.729Z',
246+
}}
247+
/>
248+
);
249+
250+
expect(container.asFragment()).toMatchSnapshot();
251+
});
252+
253+
it('matches snapshot when template proofingEnabled false', () => {
254+
const container = render(
255+
<PreviewLetterTemplate
256+
template={{
257+
id: '0A097DCD-35F9-4DAD-A37E-AC358B71B74D',
258+
owner: 'owner',
259+
name: 'letter',
260+
templateType: 'LETTER',
261+
templateStatus: 'NOT_YET_SUBMITTED',
262+
letterType: 'x0',
263+
language: 'en',
264+
files: {
265+
pdfTemplate: {
266+
fileName: 'file.pdf',
267+
currentVersion: 'b',
268+
virusScanStatus: 'PASSED',
269+
},
270+
proofs: {
271+
'your-proof.pdf': {
272+
fileName: 'your-proof.pdf',
273+
virusScanStatus: 'PASSED',
274+
supplier: 'MBA',
275+
},
276+
},
277+
},
278+
proofingEnabled: false,
279+
createdAt: '2025-04-02T09:33:25.729Z',
280+
updatedAt: '2025-04-02T09:33:25.729Z',
281+
}}
282+
/>
283+
);
284+
285+
expect(container.asFragment()).toMatchSnapshot();
286+
});
287+
288+
it('matches snapshot when template language is Right to Left', () => {
289+
isRightToLeftMock.mockReset();
290+
291+
isRightToLeftMock.mockReturnValueOnce(true);
292+
293+
const container = render(
294+
<PreviewLetterTemplate
295+
template={{
296+
id: '0A097DCD-35F9-4DAD-A37E-AC358B71B74D',
297+
owner: 'owner',
298+
name: 'letter',
299+
templateType: 'LETTER',
300+
templateStatus: 'NOT_YET_SUBMITTED',
301+
letterType: 'x0',
302+
language: 'ar',
303+
files: {
304+
pdfTemplate: {
305+
fileName: 'file.pdf',
306+
currentVersion: 'b',
307+
virusScanStatus: 'PASSED',
308+
},
309+
proofs: {
310+
'your-proof.pdf': {
311+
fileName: 'your-proof.pdf',
312+
virusScanStatus: 'PASSED',
313+
supplier: 'MBA',
314+
},
315+
},
316+
},
317+
proofingEnabled: false,
226318
createdAt: '2025-04-02T09:33:25.729Z',
227319
updatedAt: '2025-04-02T09:33:25.729Z',
228320
}}

0 commit comments

Comments
 (0)