Skip to content

Commit f0641a3

Browse files
authored
CCM-9141: proof download link (#499)
1 parent 922a7d8 commit f0641a3

File tree

56 files changed

+1499
-495
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1499
-495
lines changed

.eslintrc.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,13 @@
8989
},
9090
{
9191
"files": [
92-
"*.test.{ts,tsx}"
92+
"*.{test,spec}.{ts,tsx}"
9393
],
9494
"rules": {
9595
"unicorn/no-useless-undefined": "off",
9696
"unicorn/consistent-function-scoping": "off",
97-
"max-classes-per-file": "off"
97+
"max-classes-per-file": "off",
98+
"sonarjs/no-nested-functions": "off"
9899
}
99100
}
100101
]

frontend/src/__tests__/components/forms/PreviewEmailTemplate/__snapshots__/PreviewEmailTemplate.test.tsx.snap

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ exports[`Preview email form renders Client-side validation triggers 1`] = `
123123
</div>
124124
</dl>
125125
<dl
126-
class="nhsuk-summary-list preview"
126+
class="nhsuk-summary-list nhsuk-u-margin-bottom-4 preview"
127127
>
128128
<div
129129
class="nhsuk-summary-list__row"
@@ -412,7 +412,7 @@ exports[`Preview email form renders matches error snapshot 1`] = `
412412
</div>
413413
</dl>
414414
<dl
415-
class="nhsuk-summary-list preview"
415+
class="nhsuk-summary-list nhsuk-u-margin-bottom-4 preview"
416416
>
417417
<div
418418
class="nhsuk-summary-list__row"
@@ -674,7 +674,7 @@ exports[`Preview email form renders matches snapshot when navigating from edit s
674674
</div>
675675
</dl>
676676
<dl
677-
class="nhsuk-summary-list preview"
677+
class="nhsuk-summary-list nhsuk-u-margin-bottom-4 preview"
678678
>
679679
<div
680680
class="nhsuk-summary-list__row"
@@ -919,7 +919,7 @@ exports[`Preview email form renders matches snapshot when navigating from manage
919919
</div>
920920
</dl>
921921
<dl
922-
class="nhsuk-summary-list preview"
922+
class="nhsuk-summary-list nhsuk-u-margin-bottom-4 preview"
923923
>
924924
<div
925925
class="nhsuk-summary-list__row"

frontend/src/__tests__/components/forms/PreviewNHSAppTemplate/__snapshots__/PreviewNHSAppTemplate.test.tsx.snap

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ exports[`Preview nhs app form renders Client-side validation triggers 1`] = `
123123
</div>
124124
</dl>
125125
<dl
126-
class="nhsuk-summary-list preview"
126+
class="nhsuk-summary-list nhsuk-u-margin-bottom-4 preview"
127127
>
128128
<div
129129
class="nhsuk-summary-list__row"
@@ -387,7 +387,7 @@ exports[`Preview nhs app form renders matches error snapshot 1`] = `
387387
</div>
388388
</dl>
389389
<dl
390-
class="nhsuk-summary-list preview"
390+
class="nhsuk-summary-list nhsuk-u-margin-bottom-4 preview"
391391
>
392392
<div
393393
class="nhsuk-summary-list__row"
@@ -624,7 +624,7 @@ exports[`Preview nhs app form renders matches snapshot when navigating from edit
624624
</div>
625625
</dl>
626626
<dl
627-
class="nhsuk-summary-list preview"
627+
class="nhsuk-summary-list nhsuk-u-margin-bottom-4 preview"
628628
>
629629
<div
630630
class="nhsuk-summary-list__row"
@@ -844,7 +844,7 @@ exports[`Preview nhs app form renders matches snapshot when navigating from mana
844844
</div>
845845
</dl>
846846
<dl
847-
class="nhsuk-summary-list preview"
847+
class="nhsuk-summary-list nhsuk-u-margin-bottom-4 preview"
848848
>
849849
<div
850850
class="nhsuk-summary-list__row"

frontend/src/__tests__/components/forms/PreviewSMSTemplate/__snapshots__/PreviewSMSTemplate.test.tsx.snap

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ exports[`Review sms form renders Client-side validation triggers 1`] = `
123123
</div>
124124
</dl>
125125
<dl
126-
class="nhsuk-summary-list preview"
126+
class="nhsuk-summary-list nhsuk-u-margin-bottom-4 preview"
127127
>
128128
<div
129129
class="nhsuk-summary-list__row"
@@ -387,7 +387,7 @@ exports[`Review sms form renders matches error snapshot 1`] = `
387387
</div>
388388
</dl>
389389
<dl
390-
class="nhsuk-summary-list preview"
390+
class="nhsuk-summary-list nhsuk-u-margin-bottom-4 preview"
391391
>
392392
<div
393393
class="nhsuk-summary-list__row"
@@ -624,7 +624,7 @@ exports[`Review sms form renders matches snapshot when navigating from edit scre
624624
</div>
625625
</dl>
626626
<dl
627-
class="nhsuk-summary-list preview"
627+
class="nhsuk-summary-list nhsuk-u-margin-bottom-4 preview"
628628
>
629629
<div
630630
class="nhsuk-summary-list__row"
@@ -844,7 +844,7 @@ exports[`Review sms form renders matches snapshot when navigating from manage te
844844
</div>
845845
</dl>
846846
<dl
847-
class="nhsuk-summary-list preview"
847+
class="nhsuk-summary-list nhsuk-u-margin-bottom-4 preview"
848848
>
849849
<div
850850
class="nhsuk-summary-list__row"
Lines changed: 75 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
import { render, screen } from '@testing-library/react';
2-
import { PreviewTemplateDetails } from '@molecules/PreviewTemplateDetails';
1+
import PreviewTemplateDetailsEmail from '@molecules/PreviewTemplateDetails/PreviewTemplateDetailsEmail';
2+
import PreviewTemplateDetailsLetter from '@molecules/PreviewTemplateDetails/PreviewTemplateDetailsLetter';
3+
import PreviewTemplateDetailsNhsApp from '@molecules/PreviewTemplateDetails/PreviewTemplateDetailsNhsApp';
4+
import PreviewTemplateDetailsSms from '@molecules/PreviewTemplateDetails/PreviewTemplateDetailsSms';
5+
import { render } from '@testing-library/react';
36

4-
describe('PreviewTemplateDetails component', () => {
5-
it('matches not yet submitted snapshot', () => {
7+
describe('PreviewTemplateDetailsNhsApp', () => {
8+
it('matches snapshot', () => {
69
const container = render(
7-
<PreviewTemplateDetails
10+
<PreviewTemplateDetailsNhsApp
811
template={{
912
id: 'template-id',
1013
name: 'Example template',
@@ -14,53 +17,66 @@ describe('PreviewTemplateDetails component', () => {
1417
createdAt: '2025-01-13T10:19:25.579Z',
1518
updatedAt: '2025-01-13T10:19:25.579Z',
1619
}}
17-
templateTypeText='Channel template'
18-
contentPreview={[
19-
{
20-
heading: 'Heading',
21-
id: 'heading',
22-
value: 'Test value-1',
23-
},
24-
]}
20+
message='app content'
2521
/>
2622
);
2723

2824
expect(container.asFragment()).toMatchSnapshot();
2925
});
26+
});
3027

31-
it('matches submitted snapshot', () => {
28+
describe('PreviewTemplateDetailsEmail', () => {
29+
it('matches snapshot', () => {
3230
const container = render(
33-
<PreviewTemplateDetails
31+
<PreviewTemplateDetailsEmail
3432
template={{
3533
id: 'template-id',
36-
name: 'Example template',
34+
name: 'Example Email template',
35+
message: 'email message message',
36+
subject: 'subject',
37+
templateStatus: 'SUBMITTED',
38+
templateType: 'EMAIL',
39+
createdAt: '2025-01-13T10:19:25.579Z',
40+
updatedAt: '2025-01-13T10:19:25.579Z',
41+
}}
42+
message='email content'
43+
subject='email subject'
44+
/>
45+
);
46+
47+
expect(container.asFragment()).toMatchSnapshot();
48+
});
49+
});
50+
51+
describe('PreviewTemplateDetailsSms', () => {
52+
it('matches snapshot', () => {
53+
const container = render(
54+
<PreviewTemplateDetailsSms
55+
template={{
56+
id: 'template-id',
57+
name: 'SMS template',
58+
message: 'SMS message',
3759
templateStatus: 'SUBMITTED',
3860
templateType: 'SMS',
39-
message: 'text message message',
4061
createdAt: '2025-01-13T10:19:25.579Z',
4162
updatedAt: '2025-01-13T10:19:25.579Z',
4263
}}
43-
templateTypeText='Channel template'
44-
contentPreview={[
45-
{
46-
heading: 'Heading',
47-
id: 'heading',
48-
value: 'Test value-1',
49-
},
50-
]}
64+
message='SMS content'
5165
/>
5266
);
5367

5468
expect(container.asFragment()).toMatchSnapshot();
5569
});
70+
});
5671

57-
it('renders without content preview', () => {
72+
describe('PreviewTemplateDetailsLetter', () => {
73+
it('matches snapshot without proofs', () => {
5874
const container = render(
59-
<PreviewTemplateDetails
75+
<PreviewTemplateDetailsLetter
6076
template={{
6177
id: 'template-id',
6278
name: 'Example template',
63-
templateStatus: 'SUBMITTED',
79+
templateStatus: 'PENDING_VALIDATION',
6480
templateType: 'LETTER',
6581
letterType: 'x0',
6682
language: 'fr',
@@ -79,27 +95,19 @@ describe('PreviewTemplateDetails component', () => {
7995
createdAt: '2025-01-13T10:19:25.579Z',
8096
updatedAt: '2025-01-13T10:19:25.579Z',
8197
}}
82-
additionalMetaFields={[
83-
{
84-
title: 'Meta',
85-
id: 'meta',
86-
content: <p>metadata</p>,
87-
},
88-
]}
89-
templateTypeText='Channel template'
9098
/>
9199
);
92100

93101
expect(container.asFragment()).toMatchSnapshot();
94102
});
95103

96-
it('renders letter template when testDataCsv is not present', () => {
104+
it('matches snapshot when test data CSV is absent', () => {
97105
const container = render(
98-
<PreviewTemplateDetails.Letter
106+
<PreviewTemplateDetailsLetter
99107
template={{
100108
id: 'template-id',
101109
name: 'Example template',
102-
templateStatus: 'SUBMITTED',
110+
templateStatus: 'PENDING_VALIDATION',
103111
templateType: 'LETTER',
104112
letterType: 'x0',
105113
language: 'fr',
@@ -119,26 +127,31 @@ describe('PreviewTemplateDetails component', () => {
119127
expect(container.asFragment()).toMatchSnapshot();
120128
});
121129

122-
it('renders letter template when testPersonalisationInputFile is set', () => {
130+
it('matches snapshot when proofs are present, proofs failing virus scan are not displayed', () => {
123131
const container = render(
124-
<PreviewTemplateDetails.Letter
132+
<PreviewTemplateDetailsLetter
125133
template={{
126134
id: 'template-id',
127-
name: 'Example template',
128-
templateStatus: 'SUBMITTED',
135+
name: 'Example letter',
136+
templateStatus: 'PROOF_AVAILABLE',
129137
templateType: 'LETTER',
130138
letterType: 'x0',
131-
language: 'fr',
139+
language: 'en',
132140
files: {
133141
pdfTemplate: {
134142
fileName: 'file.pdf',
135143
currentVersion: '4C728B7D-A028-4BA2-B180-A63CDD2AE1E9',
136-
virusScanStatus: 'PENDING',
144+
virusScanStatus: 'PASSED',
137145
},
138146
testDataCsv: {
139147
fileName: 'file.csv',
140148
currentVersion: '622AB7FA-29BA-418A-B1B6-1E63FB299269',
141-
virusScanStatus: 'PENDING',
149+
virusScanStatus: 'PASSED',
150+
},
151+
proofs: {
152+
'a.pdf': { fileName: 'a.pdf', virusScanStatus: 'PASSED' },
153+
'b.pdf': { fileName: 'b.pdf', virusScanStatus: 'PASSED' },
154+
'c.pdf': { fileName: 'c.pdf', virusScanStatus: 'FAILED' },
142155
},
143156
},
144157
createdAt: '2025-01-13T10:19:25.579Z',
@@ -150,70 +163,29 @@ describe('PreviewTemplateDetails component', () => {
150163
expect(container.asFragment()).toMatchSnapshot();
151164
});
152165

153-
it('renders component correctly', () => {
154-
render(
155-
<PreviewTemplateDetails
166+
it('if status is PROOF_AVAILABLE, but no proofs are registered on the template, proof section is hidden (this is unexpected)', () => {
167+
const container = render(
168+
<PreviewTemplateDetailsLetter
156169
template={{
157170
id: 'template-id',
158-
name: 'Example template',
159-
message: 'app message message',
160-
templateType: 'NHS_APP',
161-
templateStatus: 'NOT_YET_SUBMITTED',
171+
name: 'Example letter',
172+
templateStatus: 'PROOF_AVAILABLE',
173+
templateType: 'LETTER',
174+
letterType: 'x0',
175+
language: 'en',
176+
files: {
177+
pdfTemplate: {
178+
fileName: 'file.pdf',
179+
currentVersion: '4C728B7D-A028-4BA2-B180-A63CDD2AE1E9',
180+
virusScanStatus: 'PASSED',
181+
},
182+
},
162183
createdAt: '2025-01-13T10:19:25.579Z',
163184
updatedAt: '2025-01-13T10:19:25.579Z',
164185
}}
165-
templateTypeText='Channel template'
166-
contentPreview={[
167-
{
168-
heading: 'Subject',
169-
id: 'subject',
170-
value: 'Subject value',
171-
},
172-
{
173-
heading: 'Heading',
174-
id: 'heading',
175-
value: 'Heading value',
176-
},
177-
{
178-
heading: 'Body text',
179-
id: 'body-text',
180-
value: 'Body text value',
181-
},
182-
{
183-
heading: 'Message',
184-
id: 'message',
185-
value: 'Message value',
186-
},
187-
]}
188186
/>
189187
);
190188

191-
expect(screen.getByTestId('preview-message__heading')).toHaveTextContent(
192-
'Example template'
193-
);
194-
expect(screen.getByTestId('preview__heading-0')).toHaveTextContent(
195-
'Subject'
196-
);
197-
expect(screen.getByTestId('preview__content-0')).toHaveTextContent(
198-
'Subject value'
199-
);
200-
expect(screen.getByTestId('preview__heading-1')).toHaveTextContent(
201-
'Heading'
202-
);
203-
expect(screen.getByTestId('preview__content-1')).toHaveTextContent(
204-
'Heading value'
205-
);
206-
expect(screen.getByTestId('preview__heading-2')).toHaveTextContent(
207-
'Body text'
208-
);
209-
expect(screen.getByTestId('preview__content-2')).toHaveTextContent(
210-
'Body text value'
211-
);
212-
expect(screen.getByTestId('preview__heading-3')).toHaveTextContent(
213-
'Message'
214-
);
215-
expect(screen.getByTestId('preview__content-3')).toHaveTextContent(
216-
'Message value'
217-
);
189+
expect(container.asFragment()).toMatchSnapshot();
218190
});
219191
});

0 commit comments

Comments
 (0)