Skip to content

Commit 36a451f

Browse files
Add SMS component tests
1 parent ec2fdee commit 36a451f

16 files changed

+911
-349
lines changed

src/app/preview-text-message-template/[sessionId]/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import { ReviewSMSTemplate } from '@forms/ReviewSMSTemplate';
77

88
const isValid = (session?: Session) =>
99
session?.templateType === TemplateType.SMS &&
10-
session?.smsTemplateMessage !== undefined &&
11-
session?.smsTemplateName !== undefined;
10+
Boolean(session?.smsTemplateName) &&
11+
Boolean(session?.smsTemplateMessage);
1212

1313
const PreviewSMSTemplatePage = async ({ params: { sessionId } }: PageProps) => {
1414
const session = await getSession(sessionId);

src/app/submit-text-message-template/[sessionId]/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import { getSession } from '@utils/form-actions';
77

88
const isValid = (session?: Session) =>
99
session?.templateType === TemplateType.SMS &&
10-
session?.smsTemplateMessage !== undefined &&
11-
session?.smsTemplateName !== undefined;
10+
Boolean(session?.smsTemplateName) &&
11+
Boolean(session?.smsTemplateMessage);
1212

1313
const SubmitSmsTemplatePage = async ({ params: { sessionId } }: PageProps) => {
1414
const session = await getSession(sessionId);

tests/test-team/helpers/session-factory.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ export const SessionFactory = {
88
});
99
},
1010

11+
createSmsSession: (id: string): Session => {
12+
return SessionFactory.create({
13+
id,
14+
templateType: TemplateType.SMS,
15+
});
16+
},
17+
1118
create: ({
1219
id,
1320
templateType,

tests/test-team/helpers/template-factory.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
1-
import { Template, TemplateType } from './types';
1+
import { Template } from './types';
22

33
type BaseTemplateFields = Omit<
44
Template,
55
'version' | '__typename' | 'createdAt' | 'updatedAt'
66
>;
77

88
export const TemplateFactory = {
9-
createEmailTemplate: (props: Omit<BaseTemplateFields, 'type'>): Template => {
10-
return TemplateFactory.create({
11-
...props,
12-
type: TemplateType.EMAIL,
13-
});
14-
},
15-
169
create: (props: BaseTemplateFields): Template => {
1710
return {
1811
...props,
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { Locator, Page } from '@playwright/test';
2+
import { TemplateMgmtBasePage } from '../template-mgmt-base-page';
3+
import { TemplateMgmtMessageFormatting } from '../template-mgmt-message-formatting';
4+
5+
export class TemplateMgmtCreateSmsPage extends TemplateMgmtBasePage {
6+
public readonly nameInput: Locator;
7+
8+
public readonly messageTextArea: Locator;
9+
10+
public readonly errorSummary: Locator;
11+
12+
public readonly personalisationFields: Locator;
13+
14+
public readonly namingYourTemplate: Locator;
15+
16+
public readonly messageFormatting: TemplateMgmtMessageFormatting;
17+
18+
constructor(page: Page) {
19+
super(page);
20+
this.nameInput = page.locator('[id="smsTemplateName"]');
21+
this.messageTextArea = page.locator('[id="smsTemplateMessage"]');
22+
this.errorSummary = page.locator('[class="nhsuk-error-summary"]');
23+
this.personalisationFields = page.locator(
24+
'[data-testid="personalisation-details"]'
25+
);
26+
this.namingYourTemplate = page.locator(
27+
'[data-testid="how-to-name-your-template"]'
28+
);
29+
this.messageFormatting = new TemplateMgmtMessageFormatting(page);
30+
}
31+
32+
async loadPage(sessionId: string) {
33+
await this.navigateTo(
34+
`/templates/create-text-message-template/${sessionId}`
35+
);
36+
}
37+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { Locator, Page } from '@playwright/test';
2+
import { TemplateMgmtBasePage } from '../template-mgmt-base-page';
3+
4+
export class TemplateMgmtPreviewSmsPage extends TemplateMgmtBasePage {
5+
public readonly editRadioOption: Locator;
6+
7+
public readonly submitRadioOption: Locator;
8+
9+
public readonly errorSummary: Locator;
10+
11+
public readonly messageText: Locator;
12+
13+
constructor(page: Page) {
14+
super(page);
15+
this.editRadioOption = page.locator(
16+
'[id="reviewSMSTemplateAction-sms-edit"]'
17+
);
18+
this.submitRadioOption = page.locator(
19+
'[id="reviewSMSTemplateAction-sms-submit"]'
20+
);
21+
this.errorSummary = page.locator('[class="nhsuk-error-summary"]');
22+
this.messageText = page.locator('[id="preview-content-message"]');
23+
}
24+
25+
async loadPage(sessionId: string) {
26+
await this.navigateTo(
27+
`/templates/preview-text-message-template/${sessionId}`
28+
);
29+
}
30+
}

tests/test-team/pages/email/template-mgmt-submit-email-page.ts renamed to tests/test-team/pages/template-mgmt-submit-page.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
11
import { Locator, Page } from '@playwright/test';
2-
import { TemplateMgmtBasePage } from '../template-mgmt-base-page';
2+
import { TemplateMgmtBasePage } from './template-mgmt-base-page';
33

4-
export class TemplateMgmtSubmitEmailPage extends TemplateMgmtBasePage {
4+
export class TemplateMgmtSubmitPage extends TemplateMgmtBasePage {
55
public readonly submitButton: Locator;
66

7-
constructor(page: Page) {
7+
constructor(
8+
page: Page,
9+
private readonly channelIdentifier: string
10+
) {
811
super(page);
912
this.submitButton = page
1013
.locator('[id="submit-template-button"]')
1114
.and(page.getByRole('button'));
1215
}
1316

1417
async loadPage(sessionId: string) {
15-
await this.navigateTo(`/templates/submit-email-template/${sessionId}`);
18+
await this.navigateTo(
19+
`/templates/submit-${this.channelIdentifier}-template/${sessionId}`
20+
);
1621
}
1722

1823
async clickSubmitTemplateButton() {

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ export class TemplateMgmtTemplateSubmittedPage extends TemplateMgmtBasePage {
88

99
public readonly createAnotherTemplateLink: Locator;
1010

11-
constructor(page: Page) {
11+
constructor(
12+
page: Page,
13+
private readonly channelIdentifier: string
14+
) {
1215
super(page);
1316
this.templateIdText = page.locator('[id="template-id"]');
1417
this.templateNameText = page.locator('[id="template-name"]');
@@ -22,6 +25,8 @@ export class TemplateMgmtTemplateSubmittedPage extends TemplateMgmtBasePage {
2225
}
2326

2427
async loadPage(templateId: string) {
25-
await this.navigateTo(`/templates/email-template-submitted/${templateId}`);
28+
await this.navigateTo(
29+
`/templates/${this.channelIdentifier}-template-submitted/${templateId}`
30+
);
2631
}
2732
}

tests/test-team/template-mgmt-component-tests/email/template-mgmt-create-email-page.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const sessions = {
1414
empty: SessionFactory.createEmailSession('empty-email-session'),
1515
submit: SessionFactory.createEmailSession('submit-email-session'),
1616
submitAndReturn: SessionFactory.createEmailSession(
17-
'submit-and-return-session'
17+
'submit-and-return-create-email-session'
1818
),
1919
goBackAndReturn: SessionFactory.createEmailSession('go-back-email-session'),
2020
noEmailTemplateType: SessionFactory.create({

tests/test-team/template-mgmt-component-tests/email/template-mgmt-email-submitted-page.component.ts

Lines changed: 0 additions & 107 deletions
This file was deleted.

0 commit comments

Comments
 (0)