Skip to content

Commit b0fdb3f

Browse files
committed
CCM-9142: Restore preview letters UI component test
1 parent 4b4b528 commit b0fdb3f

File tree

1 file changed

+112
-0
lines changed

1 file changed

+112
-0
lines changed
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
import { test, expect } from '@playwright/test';
2+
import { TemplateStorageHelper } from '../../helpers/db/template-storage-helper';
3+
import { TemplateFactory } from '../../helpers/factories/template-factory';
4+
import {
5+
assertBackToAllTemplatesBottomLink,
6+
assertBackToAllTemplatesTopLink,
7+
} from '../template-mgmt-preview-common.steps';
8+
import {
9+
assertFooterLinks,
10+
assertSignOutLink,
11+
assertNotifyBannerLink,
12+
assertSkipToMainContent,
13+
} from '../template-mgmt-common.steps';
14+
import { Template } from '../../helpers/types';
15+
import {
16+
createAuthHelper,
17+
TestUserId,
18+
} from '../../helpers/auth/cognito-auth-helper';
19+
import { TemplateMgmtPreviewLetterPage } from '../../pages/letter/template-mgmt-preview-letter-page';
20+
21+
async function createTemplates() {
22+
const user = await createAuthHelper().getTestUser(TestUserId.User1);
23+
return {
24+
empty: {
25+
id: 'preview-page-invalid-letter-template',
26+
version: 1,
27+
createdAt: new Date().toISOString(),
28+
updatedAt: new Date().toISOString(),
29+
templateType: 'LETTER',
30+
templateStatus: 'NOT_YET_SUBMITTED',
31+
owner: user.userId,
32+
} as Template,
33+
valid: TemplateFactory.createLetterTemplate(
34+
'valid-letter-preview-template',
35+
user.userId,
36+
'test-template-letter'
37+
),
38+
};
39+
}
40+
41+
test.describe('Preview Letter template Page', () => {
42+
let templates: { empty: Template; valid: Template };
43+
44+
const templateStorageHelper = new TemplateStorageHelper();
45+
46+
test.beforeAll(async () => {
47+
templates = await createTemplates();
48+
await templateStorageHelper.seedTemplateData(Object.values(templates));
49+
});
50+
51+
test.afterAll(async () => {
52+
await templateStorageHelper.deleteSeededTemplates();
53+
});
54+
55+
test('when user visits page, then page is loaded', async ({
56+
page,
57+
baseURL,
58+
}) => {
59+
const previewLetterTemplatePage = new TemplateMgmtPreviewLetterPage(page);
60+
61+
await previewLetterTemplatePage.loadPage(templates.valid.id);
62+
63+
await expect(page).toHaveURL(
64+
`${baseURL}/templates/${TemplateMgmtPreviewLetterPage.pageUrlSegment}/${templates.valid.id}`
65+
);
66+
67+
await expect(previewLetterTemplatePage.pageHeader).toContainText(
68+
'test-template-letter'
69+
);
70+
});
71+
72+
test.describe('Page functionality', () => {
73+
test('common page tests', async ({ page, baseURL }) => {
74+
const props = {
75+
page: new TemplateMgmtPreviewLetterPage(page),
76+
id: templates.valid.id,
77+
baseURL,
78+
};
79+
80+
await assertSkipToMainContent(props);
81+
await assertNotifyBannerLink(props);
82+
await assertSignOutLink(props);
83+
await assertFooterLinks(props);
84+
await assertBackToAllTemplatesTopLink(props);
85+
await assertBackToAllTemplatesBottomLink(props);
86+
});
87+
});
88+
89+
test.describe('Error handling', () => {
90+
test('when user visits page with missing data, then an invalid template error is displayed', async ({
91+
baseURL,
92+
page,
93+
}) => {
94+
const previewLetterTemplatePage = new TemplateMgmtPreviewLetterPage(page);
95+
96+
await previewLetterTemplatePage.loadPage(templates.empty.id);
97+
98+
await expect(page).toHaveURL(`${baseURL}/templates/invalid-template`);
99+
});
100+
101+
test('when user visits page with a fake template, then an invalid template error is displayed', async ({
102+
baseURL,
103+
page,
104+
}) => {
105+
const previewLetterTemplatePage = new TemplateMgmtPreviewLetterPage(page);
106+
107+
await previewLetterTemplatePage.loadPage('/fake-template-id');
108+
109+
await expect(page).toHaveURL(`${baseURL}/templates/invalid-template`);
110+
});
111+
});
112+
});

0 commit comments

Comments
 (0)