Skip to content

Commit 57e68f3

Browse files
committed
CCM-8574: add more e2e tests
1 parent 7fbd4a0 commit 57e68f3

File tree

7 files changed

+153
-2
lines changed

7 files changed

+153
-2
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,20 @@ const getFile = (directory: string, filename: string) => {
4444
export const pdfUploadFixtures = {
4545
withPersonalisation: {
4646
csv: getFile('with-personalisation', 'test-data.csv'),
47+
csvEmptyParams: getFile('with-personalisation', 'empty-params.csv'),
48+
csvNonsenseParams: getFile('with-personalisation', 'nonsense.csv'),
4749
csvWrongParams: getFile('with-personalisation', 'wrong-params.csv'),
4850
passwordPdf: getFile('with-personalisation', 'password.pdf'),
4951
pdf: getFile('with-personalisation', 'template.pdf'),
52+
pdfEmptyParams: getFile('with-personalisation', 'empty-params.pdf'),
53+
pdfNonsenseParams: getFile('with-personalisation', 'nonsense.pdf'),
5054
},
5155
noCustomPersonalisation: {
5256
pdf: getFile('no-custom-personalisation', 'template.pdf'),
5357
passwordPdf: getFile('no-custom-personalisation', 'password.pdf'),
58+
pdfIncompleteAddress: getFile(
59+
'no-custom-personalisation',
60+
'incomplete-address.pdf'
61+
),
5462
},
5563
};
Binary file not shown.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Personalisation field,Short length data example,Medium length data example,Long length data example
2+
,short example,middle example,super long example
Binary file not shown.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Personalisation field,Short length data example,Medium length data example,Long length data example
2+
!!!,short example,middle example,super long example
Binary file not shown.

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

Lines changed: 141 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,145 @@ test.describe('letter file validation', () => {
387387
expect(template.csvHeaders).toBeUndefined();
388388
}).toPass({ timeout: 10_000 });
389389
});
390-
});
391390

392-
// TODO: Add test for parameter formatting in pdf
391+
test('validation fails if pdf has incomplete address', async ({ page }) => {
392+
const createTemplatePage = new TemplateMgmtCreateLetterPage(page);
393+
394+
await createTemplatePage.loadPage();
395+
396+
await createTemplatePage.nameInput.fill('Incomplete address');
397+
398+
await createTemplatePage.setPdfFile(
399+
pdfUploadFixtures.noCustomPersonalisation.pdfIncompleteAddress.filepath
400+
);
401+
402+
await createTemplatePage.clickSaveAndPreviewButton();
403+
404+
await expect(page).toHaveURL(TemplateMgmtPreviewLetterPage.urlRegexp);
405+
406+
const maybeTemplateId = TemplateMgmtPreviewLetterPage.getTemplateId(
407+
page.url()
408+
);
409+
410+
expect(maybeTemplateId).not.toBeUndefined();
411+
412+
const templateId = maybeTemplateId as string;
413+
414+
const key = {
415+
id: templateId,
416+
owner: user.userId,
417+
};
418+
419+
templateStorageHelper.addAdHocTemplateKey(key);
420+
421+
await expect(async () => {
422+
const template = await templateStorageHelper.getTemplate({
423+
id: templateId,
424+
owner: user.userId,
425+
});
426+
427+
expect(template.files?.pdfTemplate?.virusScanStatus).toBe('PASSED');
428+
expect(template.templateStatus).toBe('VALIDATION_FAILED');
429+
expect(template.personalisationParameters).toBeUndefined();
430+
expect(template.csvHeaders).toBeUndefined();
431+
}).toPass({ timeout: 10_000 });
432+
});
433+
434+
test('validation fails if pdf has empty parameters', async ({ page }) => {
435+
const createTemplatePage = new TemplateMgmtCreateLetterPage(page);
436+
437+
await createTemplatePage.loadPage();
438+
439+
await createTemplatePage.nameInput.fill('With empty parameters');
440+
441+
await createTemplatePage.setPdfFile(
442+
pdfUploadFixtures.withPersonalisation.pdfEmptyParams.filepath
443+
);
444+
445+
await createTemplatePage.setCsvFile(
446+
pdfUploadFixtures.withPersonalisation.csvEmptyParams.filepath
447+
);
448+
449+
await createTemplatePage.clickSaveAndPreviewButton();
450+
451+
await expect(page).toHaveURL(TemplateMgmtPreviewLetterPage.urlRegexp);
452+
453+
const maybeTemplateId = TemplateMgmtPreviewLetterPage.getTemplateId(
454+
page.url()
455+
);
456+
457+
expect(maybeTemplateId).not.toBeUndefined();
458+
459+
const templateId = maybeTemplateId as string;
460+
461+
const key = {
462+
id: templateId,
463+
owner: user.userId,
464+
};
465+
466+
templateStorageHelper.addAdHocTemplateKey(key);
467+
468+
await expect(async () => {
469+
const template = await templateStorageHelper.getTemplate({
470+
id: templateId,
471+
owner: user.userId,
472+
});
473+
474+
expect(template.files?.pdfTemplate?.virusScanStatus).toBe('PASSED');
475+
expect(template.files?.testDataCsv?.virusScanStatus).toBe('PASSED');
476+
expect(template.templateStatus).toBe('VALIDATION_FAILED');
477+
expect(template.personalisationParameters).toBeUndefined();
478+
expect(template.csvHeaders).toBeUndefined();
479+
}).toPass({ timeout: 10_000 });
480+
});
481+
482+
test('validation fails if pdf has non-sensible parameters', async ({
483+
page,
484+
}) => {
485+
const createTemplatePage = new TemplateMgmtCreateLetterPage(page);
486+
487+
await createTemplatePage.loadPage();
488+
489+
await createTemplatePage.nameInput.fill('With nonsense parameters');
490+
491+
await createTemplatePage.setPdfFile(
492+
pdfUploadFixtures.withPersonalisation.pdfNonsenseParams.filepath
493+
);
494+
495+
await createTemplatePage.setCsvFile(
496+
pdfUploadFixtures.withPersonalisation.csvNonsenseParams.filepath
497+
);
498+
499+
await createTemplatePage.clickSaveAndPreviewButton();
500+
501+
await expect(page).toHaveURL(TemplateMgmtPreviewLetterPage.urlRegexp);
502+
503+
const maybeTemplateId = TemplateMgmtPreviewLetterPage.getTemplateId(
504+
page.url()
505+
);
506+
507+
expect(maybeTemplateId).not.toBeUndefined();
508+
509+
const templateId = maybeTemplateId as string;
510+
511+
const key = {
512+
id: templateId,
513+
owner: user.userId,
514+
};
515+
516+
templateStorageHelper.addAdHocTemplateKey(key);
517+
518+
await expect(async () => {
519+
const template = await templateStorageHelper.getTemplate({
520+
id: templateId,
521+
owner: user.userId,
522+
});
523+
524+
expect(template.files?.pdfTemplate?.virusScanStatus).toBe('PASSED');
525+
expect(template.files?.testDataCsv?.virusScanStatus).toBe('PASSED');
526+
expect(template.templateStatus).toBe('VALIDATION_FAILED');
527+
expect(template.personalisationParameters).toBeUndefined();
528+
expect(template.csvHeaders).toBeUndefined();
529+
}).toPass({ timeout: 10_000 });
530+
});
531+
});

0 commit comments

Comments
 (0)