Skip to content

Commit fee43cb

Browse files
CCM-8692: Add full letter e2e
1 parent 69a001e commit fee43cb

File tree

3 files changed

+136
-0
lines changed

3 files changed

+136
-0
lines changed

tests/test-team/pages/letter/template-mgmt-submit-letter-page.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ import { TemplateMgmtSubmitBasePage } from '../template-mgmt-submit-base-page';
22

33
export class TemplateMgmtSubmitLetterPage extends TemplateMgmtSubmitBasePage {
44
static readonly pageUrlSegment = 'submit-letter-template';
5+
6+
public static readonly urlRegexp = new RegExp(
7+
/\/templates\/submit-letter-template\/([\dA-Fa-f-]+)$/
8+
);
59
}

tests/test-team/pages/letter/template-mgmt-template-submitted-letter-page.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@ import { TemplateMgmtTemplateSubmittedBasePage } from '../template-mgmt-template
22

33
export class TemplateMgmtTemplateSubmittedLetterPage extends TemplateMgmtTemplateSubmittedBasePage {
44
static readonly pageUrlSegment = 'letter-template-submitted';
5+
6+
public static readonly urlRegexp = new RegExp(
7+
/\/templates\/letter-template-submitted\/([\dA-Fa-f-]+)$/
8+
);
59
}
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
import { test, expect } from '@playwright/test';
2+
import { TemplateMgmtCreateLetterPage } from '../pages/letter/template-mgmt-create-letter-page';
3+
import { TemplateStorageHelper } from '../helpers/db/template-storage-helper';
4+
import {
5+
createAuthHelper,
6+
TestUserId,
7+
type TestUser,
8+
} from '../helpers/auth/cognito-auth-helper';
9+
import { pdfUploadFixtures } from '../fixtures/pdf-upload/multipart-pdf-letter-fixtures';
10+
import { TemplateMgmtPreviewLetterPage } from '../pages/letter/template-mgmt-preview-letter-page';
11+
import { TemplateMgmtSubmitLetterPage } from '../pages/letter/template-mgmt-submit-letter-page';
12+
import { TemplateMgmtTemplateSubmittedLetterPage } from '../pages/letter/template-mgmt-template-submitted-letter-page';
13+
14+
test.describe('letter complete e2e journey', () => {
15+
const templateStorageHelper = new TemplateStorageHelper();
16+
let user: TestUser;
17+
18+
test.beforeAll(async () => {
19+
user = await createAuthHelper().getTestUser(TestUserId.User1);
20+
});
21+
22+
test.afterAll(async () => {
23+
await templateStorageHelper.deleteAdHocTemplates();
24+
});
25+
26+
test('Full journey - template is created, files are scanned and validated, template is successfully submitted', async ({
27+
page,
28+
}) => {
29+
const createTemplatePage = new TemplateMgmtCreateLetterPage(page);
30+
31+
await createTemplatePage.loadPage();
32+
33+
await createTemplatePage.nameInput.fill('Valid Letter Template');
34+
35+
await createTemplatePage.setPdfFile(
36+
pdfUploadFixtures.withPersonalisation.pdf.filepath
37+
);
38+
39+
await createTemplatePage.setCsvFile(
40+
pdfUploadFixtures.withPersonalisation.csv.filepath
41+
);
42+
43+
await createTemplatePage.clickSaveAndPreviewButton();
44+
45+
await expect(page).toHaveURL(TemplateMgmtPreviewLetterPage.urlRegexp);
46+
47+
const maybeTemplateId = TemplateMgmtPreviewLetterPage.getTemplateId(
48+
page.url()
49+
);
50+
51+
expect(maybeTemplateId).not.toBeUndefined();
52+
53+
const templateId = maybeTemplateId as string;
54+
55+
const key = {
56+
id: templateId,
57+
owner: user.userId,
58+
};
59+
60+
templateStorageHelper.addAdHocTemplateKey(key);
61+
62+
await expect(async () => {
63+
const template = await templateStorageHelper.getTemplate(key);
64+
65+
expect(template.files?.pdfTemplate?.virusScanStatus).toBe('PASSED');
66+
expect(template.files?.testDataCsv?.virusScanStatus).toBe('PASSED');
67+
expect(template.templateStatus).toBe('NOT_YET_SUBMITTED');
68+
expect(template.personalisationParameters).toEqual([
69+
'address_line_1',
70+
'address_line_2',
71+
'address_line_3',
72+
'address_line_4',
73+
'address_line_5',
74+
'address_line_6',
75+
'address_line_7',
76+
'date',
77+
'nhsNumber',
78+
'fullName',
79+
'appointment_date',
80+
'appointment_time',
81+
'appointment_location',
82+
'contact_telephone_number',
83+
]);
84+
85+
expect(template.testDataCsvHeaders).toEqual([
86+
'appointment_date',
87+
'appointment_time',
88+
'appointment_location',
89+
'contact_telephone_number',
90+
]);
91+
92+
const pdf = await templateStorageHelper.getScannedPdfTemplateFile(
93+
key,
94+
template.files?.pdfTemplate?.currentVersion as string
95+
);
96+
97+
expect(pdf?.ChecksumSHA256).toEqual(
98+
pdfUploadFixtures.withPersonalisation.pdf.checksumSha256()
99+
);
100+
101+
const csv = await templateStorageHelper.getScannedCsvTestDataFile(
102+
key,
103+
template.files?.testDataCsv?.currentVersion as string
104+
);
105+
106+
expect(csv?.ChecksumSHA256).toEqual(
107+
pdfUploadFixtures.withPersonalisation.csv.checksumSha256()
108+
);
109+
110+
page.reload();
111+
112+
const previewTemplatePage = new TemplateMgmtPreviewLetterPage(page);
113+
previewTemplatePage.clickContinueButton();
114+
115+
await expect(page).toHaveURL(TemplateMgmtSubmitLetterPage.urlRegexp);
116+
117+
const submitTemplatePage = new TemplateMgmtSubmitLetterPage(page);
118+
submitTemplatePage.clickSubmitTemplateButton();
119+
120+
await expect(page).toHaveURL(
121+
TemplateMgmtTemplateSubmittedLetterPage.urlRegexp
122+
);
123+
124+
const finalTemplate = await templateStorageHelper.getTemplate(key);
125+
expect(finalTemplate.templateStatus).toBe('SUBMITTED');
126+
}).toPass({ timeout: 40_000 });
127+
});
128+
});

0 commit comments

Comments
 (0)