Skip to content

Commit 7fbd4a0

Browse files
committed
CCM-8574: add more e2e scenarios
1 parent 6664aa7 commit 7fbd4a0

File tree

3 files changed

+150
-1
lines changed

3 files changed

+150
-1
lines changed

tests/test-team/fixtures/pdf-upload/multipart-pdf-letter-fixtures.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@ const getFile = (directory: string, filename: string) => {
4343

4444
export const pdfUploadFixtures = {
4545
withPersonalisation: {
46-
pdf: getFile('with-personalisation', 'template.pdf'),
4746
csv: getFile('with-personalisation', 'test-data.csv'),
47+
csvWrongParams: getFile('with-personalisation', 'wrong-params.csv'),
4848
passwordPdf: getFile('with-personalisation', 'password.pdf'),
49+
pdf: getFile('with-personalisation', 'template.pdf'),
4950
},
5051
noCustomPersonalisation: {
5152
pdf: getFile('no-custom-personalisation', 'template.pdf'),
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Personalisation field,Short length data example,Medium length data example,Long length data example
2+
appt_date,Wednesday 10 September 2025,Saturday 10 April 2025,Monday 1 May 2025
3+
appt_time,12:56pm,11:56am,1:56pm
4+
appt_location,"City, Sandwell & Walsall BSS, The Rosewood Centre, Sandwell & West Birmingham Hospitals NHS Trust, The Birmingham Treatment Centre, City Hospital, Dudley Road, Birmingham, B18 7QH","The Royal Shrewsbury Hospital, Breast Screening Office, Treatment Centre, Mytton Oak Road, Shrewsbury, SY3 8XQ","The Epping Breast Screening Unit, St Margaret's Hospital, The Plain, Epping, Essex, CM16 6TN"
5+
contact_telephone_number,020 3299 9010,020 3299 9010,020 3299 9010

tests/test-team/template-mgmt-e2e-tests/template-mgmt-letter-file-validation.e2e.spec.ts

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,4 +246,147 @@ test.describe('letter file validation', () => {
246246
);
247247
}).toPass({ timeout: 10_000 });
248248
});
249+
250+
test('validation fails if pdf parameters and test data parameters do not match', async ({
251+
page,
252+
}) => {
253+
const createTemplatePage = new TemplateMgmtCreateLetterPage(page);
254+
255+
await createTemplatePage.loadPage();
256+
257+
await createTemplatePage.nameInput.fill('Wrong test data params');
258+
259+
await createTemplatePage.setPdfFile(
260+
pdfUploadFixtures.withPersonalisation.pdf.filepath
261+
);
262+
263+
await createTemplatePage.setCsvFile(
264+
pdfUploadFixtures.withPersonalisation.csvWrongParams.filepath
265+
);
266+
267+
await createTemplatePage.clickSaveAndPreviewButton();
268+
269+
await expect(page).toHaveURL(TemplateMgmtPreviewLetterPage.urlRegexp);
270+
271+
const maybeTemplateId = TemplateMgmtPreviewLetterPage.getTemplateId(
272+
page.url()
273+
);
274+
275+
expect(maybeTemplateId).not.toBeUndefined();
276+
277+
const templateId = maybeTemplateId as string;
278+
279+
const key = {
280+
id: templateId,
281+
owner: user.userId,
282+
};
283+
284+
templateStorageHelper.addAdHocTemplateKey(key);
285+
286+
await expect(async () => {
287+
const template = await templateStorageHelper.getTemplate({
288+
id: templateId,
289+
owner: user.userId,
290+
});
291+
292+
expect(template.files?.pdfTemplate?.virusScanStatus).toBe('PASSED');
293+
expect(template.files?.testDataCsv?.virusScanStatus).toBe('PASSED');
294+
expect(template.templateStatus).toBe('VALIDATION_FAILED');
295+
expect(template.personalisationParameters).toBeUndefined();
296+
expect(template.csvHeaders).toBeUndefined();
297+
}).toPass({ timeout: 10_000 });
298+
});
299+
300+
test('validation fails if unexpected csv is uploaded', async ({ page }) => {
301+
const createTemplatePage = new TemplateMgmtCreateLetterPage(page);
302+
303+
await createTemplatePage.loadPage();
304+
305+
await createTemplatePage.nameInput.fill('With unexpected CSV');
306+
307+
await createTemplatePage.setPdfFile(
308+
pdfUploadFixtures.noCustomPersonalisation.pdf.filepath
309+
);
310+
311+
await createTemplatePage.setCsvFile(
312+
pdfUploadFixtures.withPersonalisation.csv.filepath
313+
);
314+
315+
await createTemplatePage.clickSaveAndPreviewButton();
316+
317+
await expect(page).toHaveURL(TemplateMgmtPreviewLetterPage.urlRegexp);
318+
319+
const maybeTemplateId = TemplateMgmtPreviewLetterPage.getTemplateId(
320+
page.url()
321+
);
322+
323+
expect(maybeTemplateId).not.toBeUndefined();
324+
325+
const templateId = maybeTemplateId as string;
326+
327+
const key = {
328+
id: templateId,
329+
owner: user.userId,
330+
};
331+
332+
templateStorageHelper.addAdHocTemplateKey(key);
333+
334+
await expect(async () => {
335+
const template = await templateStorageHelper.getTemplate({
336+
id: templateId,
337+
owner: user.userId,
338+
});
339+
340+
expect(template.files?.pdfTemplate?.virusScanStatus).toBe('PASSED');
341+
expect(template.files?.testDataCsv?.virusScanStatus).toBe('PASSED');
342+
expect(template.templateStatus).toBe('VALIDATION_FAILED');
343+
expect(template.personalisationParameters).toBeUndefined();
344+
expect(template.csvHeaders).toBeUndefined();
345+
}).toPass({ timeout: 10_000 });
346+
});
347+
348+
test('validation fails if expected csv is not uploaded', async ({ page }) => {
349+
const createTemplatePage = new TemplateMgmtCreateLetterPage(page);
350+
351+
await createTemplatePage.loadPage();
352+
353+
await createTemplatePage.nameInput.fill('Missing CSV');
354+
355+
await createTemplatePage.setPdfFile(
356+
pdfUploadFixtures.withPersonalisation.pdf.filepath
357+
);
358+
359+
await createTemplatePage.clickSaveAndPreviewButton();
360+
361+
await expect(page).toHaveURL(TemplateMgmtPreviewLetterPage.urlRegexp);
362+
363+
const maybeTemplateId = TemplateMgmtPreviewLetterPage.getTemplateId(
364+
page.url()
365+
);
366+
367+
expect(maybeTemplateId).not.toBeUndefined();
368+
369+
const templateId = maybeTemplateId as string;
370+
371+
const key = {
372+
id: templateId,
373+
owner: user.userId,
374+
};
375+
376+
templateStorageHelper.addAdHocTemplateKey(key);
377+
378+
await expect(async () => {
379+
const template = await templateStorageHelper.getTemplate({
380+
id: templateId,
381+
owner: user.userId,
382+
});
383+
384+
expect(template.files?.pdfTemplate?.virusScanStatus).toBe('PASSED');
385+
expect(template.templateStatus).toBe('VALIDATION_FAILED');
386+
expect(template.personalisationParameters).toBeUndefined();
387+
expect(template.csvHeaders).toBeUndefined();
388+
}).toPass({ timeout: 10_000 });
389+
});
249390
});
391+
392+
// TODO: Add test for parameter formatting in pdf

0 commit comments

Comments
 (0)