Skip to content

Commit 46607cd

Browse files
committed
CCM-11474: multiple campaigns, update to use context in other places
1 parent 68f1074 commit 46607cd

File tree

32 files changed

+1102
-180
lines changed

32 files changed

+1102
-180
lines changed
Lines changed: 241 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,241 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`CreateMessagePlanPage renders the page when messageOrder is "LETTER" 1`] = `
4+
<DocumentFragment>
5+
<main
6+
class="nhsuk-main-wrapper"
7+
id="maincontent"
8+
role="main"
9+
>
10+
<div
11+
class="nhsuk-grid-row"
12+
data-testid="page-content-wrapper"
13+
>
14+
<div
15+
class="nhsuk-grid-column-two-thirds"
16+
>
17+
<h1
18+
class="nhsuk-heading-xl"
19+
data-testid="page-heading"
20+
>
21+
Create a message plan
22+
</h1>
23+
<div
24+
data-message-order="LETTER"
25+
data-testid="message-plan-form"
26+
/>
27+
</div>
28+
</div>
29+
</main>
30+
</DocumentFragment>
31+
`;
32+
33+
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP" 1`] = `
34+
<DocumentFragment>
35+
<main
36+
class="nhsuk-main-wrapper"
37+
id="maincontent"
38+
role="main"
39+
>
40+
<div
41+
class="nhsuk-grid-row"
42+
data-testid="page-content-wrapper"
43+
>
44+
<div
45+
class="nhsuk-grid-column-two-thirds"
46+
>
47+
<h1
48+
class="nhsuk-heading-xl"
49+
data-testid="page-heading"
50+
>
51+
Create a message plan
52+
</h1>
53+
<div
54+
data-message-order="NHSAPP"
55+
data-testid="message-plan-form"
56+
/>
57+
</div>
58+
</div>
59+
</main>
60+
</DocumentFragment>
61+
`;
62+
63+
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,EMAIL" 1`] = `
64+
<DocumentFragment>
65+
<main
66+
class="nhsuk-main-wrapper"
67+
id="maincontent"
68+
role="main"
69+
>
70+
<div
71+
class="nhsuk-grid-row"
72+
data-testid="page-content-wrapper"
73+
>
74+
<div
75+
class="nhsuk-grid-column-two-thirds"
76+
>
77+
<h1
78+
class="nhsuk-heading-xl"
79+
data-testid="page-heading"
80+
>
81+
Create a message plan
82+
</h1>
83+
<div
84+
data-message-order="NHSAPP,EMAIL"
85+
data-testid="message-plan-form"
86+
/>
87+
</div>
88+
</div>
89+
</main>
90+
</DocumentFragment>
91+
`;
92+
93+
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,EMAIL,SMS" 1`] = `
94+
<DocumentFragment>
95+
<main
96+
class="nhsuk-main-wrapper"
97+
id="maincontent"
98+
role="main"
99+
>
100+
<div
101+
class="nhsuk-grid-row"
102+
data-testid="page-content-wrapper"
103+
>
104+
<div
105+
class="nhsuk-grid-column-two-thirds"
106+
>
107+
<h1
108+
class="nhsuk-heading-xl"
109+
data-testid="page-heading"
110+
>
111+
Create a message plan
112+
</h1>
113+
<div
114+
data-message-order="NHSAPP,EMAIL,SMS"
115+
data-testid="message-plan-form"
116+
/>
117+
</div>
118+
</div>
119+
</main>
120+
</DocumentFragment>
121+
`;
122+
123+
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,EMAIL,SMS,LETTER" 1`] = `
124+
<DocumentFragment>
125+
<main
126+
class="nhsuk-main-wrapper"
127+
id="maincontent"
128+
role="main"
129+
>
130+
<div
131+
class="nhsuk-grid-row"
132+
data-testid="page-content-wrapper"
133+
>
134+
<div
135+
class="nhsuk-grid-column-two-thirds"
136+
>
137+
<h1
138+
class="nhsuk-heading-xl"
139+
data-testid="page-heading"
140+
>
141+
Create a message plan
142+
</h1>
143+
<div
144+
data-message-order="NHSAPP,EMAIL,SMS,LETTER"
145+
data-testid="message-plan-form"
146+
/>
147+
</div>
148+
</div>
149+
</main>
150+
</DocumentFragment>
151+
`;
152+
153+
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,SMS" 1`] = `
154+
<DocumentFragment>
155+
<main
156+
class="nhsuk-main-wrapper"
157+
id="maincontent"
158+
role="main"
159+
>
160+
<div
161+
class="nhsuk-grid-row"
162+
data-testid="page-content-wrapper"
163+
>
164+
<div
165+
class="nhsuk-grid-column-two-thirds"
166+
>
167+
<h1
168+
class="nhsuk-heading-xl"
169+
data-testid="page-heading"
170+
>
171+
Create a message plan
172+
</h1>
173+
<div
174+
data-message-order="NHSAPP,SMS"
175+
data-testid="message-plan-form"
176+
/>
177+
</div>
178+
</div>
179+
</main>
180+
</DocumentFragment>
181+
`;
182+
183+
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,SMS,EMAIL" 1`] = `
184+
<DocumentFragment>
185+
<main
186+
class="nhsuk-main-wrapper"
187+
id="maincontent"
188+
role="main"
189+
>
190+
<div
191+
class="nhsuk-grid-row"
192+
data-testid="page-content-wrapper"
193+
>
194+
<div
195+
class="nhsuk-grid-column-two-thirds"
196+
>
197+
<h1
198+
class="nhsuk-heading-xl"
199+
data-testid="page-heading"
200+
>
201+
Create a message plan
202+
</h1>
203+
<div
204+
data-message-order="NHSAPP,SMS,EMAIL"
205+
data-testid="message-plan-form"
206+
/>
207+
</div>
208+
</div>
209+
</main>
210+
</DocumentFragment>
211+
`;
212+
213+
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,SMS,LETTER" 1`] = `
214+
<DocumentFragment>
215+
<main
216+
class="nhsuk-main-wrapper"
217+
id="maincontent"
218+
role="main"
219+
>
220+
<div
221+
class="nhsuk-grid-row"
222+
data-testid="page-content-wrapper"
223+
>
224+
<div
225+
class="nhsuk-grid-column-two-thirds"
226+
>
227+
<h1
228+
class="nhsuk-heading-xl"
229+
data-testid="page-heading"
230+
>
231+
Create a message plan
232+
</h1>
233+
<div
234+
data-message-order="NHSAPP,SMS,LETTER"
235+
data-testid="message-plan-form"
236+
/>
237+
</div>
238+
</div>
239+
</main>
240+
</DocumentFragment>
241+
`;
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import { render, screen } from '@testing-library/react';
2+
import { redirect, RedirectType } from 'next/navigation';
3+
import CreateMessagePlanPage, {
4+
generateMetadata,
5+
} from '@app/message-plans/create-message-plan/page';
6+
import { MessagePlanForm } from '@forms/MessagePlan/MessagePlan';
7+
import { NextRedirectError } from '../../../helpers/next-redirect';
8+
import { MESSAGE_ORDER_OPTIONS_LIST } from 'nhs-notify-web-template-management-utils';
9+
10+
jest.mock('next/navigation');
11+
jest.mock('@forms/MessagePlan/MessagePlan');
12+
13+
beforeEach(() => {
14+
jest.mocked(redirect).mockImplementation((url, type) => {
15+
throw new NextRedirectError(url, type);
16+
});
17+
18+
jest
19+
.mocked(MessagePlanForm)
20+
.mockImplementation(({ messageOrder }: { messageOrder: string }) => (
21+
<div data-testid='message-plan-form' data-message-order={messageOrder} />
22+
));
23+
});
24+
25+
describe('CreateMessagePlanPage', () => {
26+
test('redirects when searchParams are missing', async () => {
27+
await expect(
28+
CreateMessagePlanPage({ searchParams: Promise.resolve({}) })
29+
).rejects.toMatchObject({
30+
message: 'NEXT_REDIRECT',
31+
url: '/message-plans/choose-message-order',
32+
type: RedirectType.replace,
33+
});
34+
});
35+
36+
test('redirects when messageOrder is invalid', async () => {
37+
await expect(
38+
CreateMessagePlanPage({
39+
searchParams: Promise.resolve({ messageOrder: 'invalid' }),
40+
})
41+
).rejects.toMatchObject({
42+
message: 'NEXT_REDIRECT',
43+
url: '/message-plans/choose-message-order',
44+
type: RedirectType.replace,
45+
});
46+
});
47+
48+
test.each(MESSAGE_ORDER_OPTIONS_LIST)(
49+
'renders the page when messageOrder is "%s"',
50+
async (messageOrder) => {
51+
const ui = await CreateMessagePlanPage({
52+
searchParams: Promise.resolve({ messageOrder }),
53+
});
54+
55+
const container = render(ui);
56+
57+
expect(container.asFragment()).toMatchSnapshot();
58+
59+
// assert against mocked form
60+
expect(screen.getByTestId('message-plan-form')).toHaveAttribute(
61+
'data-message-order',
62+
messageOrder
63+
);
64+
}
65+
);
66+
});
67+
68+
describe('generateMetadata', () => {
69+
test('it returns the page title', async () => {
70+
await expect(generateMetadata()).resolves.toEqual({
71+
title: 'Create message plan - NHS Notify',
72+
});
73+
});
74+
});

frontend/src/__tests__/app/preview-email-template/page.test.tsx

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,19 @@ import {
1616
SMS_TEMPLATE,
1717
} from '../../helpers/helpers';
1818
import content from '@content/content';
19-
import { serverIsFeatureEnabled } from '@utils/server-features';
2019

2120
const { pageTitle } = content.components.previewEmailTemplate;
2221

2322
jest.mock('@utils/form-actions');
2423
jest.mock('next/navigation');
2524
jest.mock('@forms/PreviewEmailTemplate');
26-
jest.mock('@utils/server-features');
2725

2826
const redirectMock = jest.mocked(redirect);
2927
const getTemplateMock = jest.mocked(getTemplate);
30-
const serverIsFeatureEnabledMock = jest.mocked(serverIsFeatureEnabled);
3128

3229
describe('PreviewEmailTemplatePage', () => {
3330
beforeEach(() => {
3431
jest.resetAllMocks();
35-
serverIsFeatureEnabledMock.mockResolvedValueOnce(true);
3632
});
3733

3834
it('should load page', async () => {
@@ -65,12 +61,7 @@ describe('PreviewEmailTemplatePage', () => {
6561
expect(await generateMetadata()).toEqual({
6662
title: pageTitle,
6763
});
68-
expect(page).toEqual(
69-
<PreviewEmailTemplate
70-
initialState={emailTemplate}
71-
routingEnabled={true}
72-
/>
73-
);
64+
expect(page).toEqual(<PreviewEmailTemplate initialState={emailTemplate} />);
7465
});
7566

7667
it('should redirect to invalid-template when no templateId is found', async () => {

frontend/src/__tests__/app/preview-nhs-app-template/page.test.tsx

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,19 @@ import {
1616
SMS_TEMPLATE,
1717
} from '../../helpers/helpers';
1818
import content from '@content/content';
19-
import { serverIsFeatureEnabled } from '@utils/server-features';
2019

2120
const { pageTitle } = content.components.previewNHSAppTemplate;
2221

2322
jest.mock('@utils/form-actions');
2423
jest.mock('next/navigation');
2524
jest.mock('@forms/PreviewNHSAppTemplate/PreviewNHSAppTemplate');
26-
jest.mock('@utils/server-features');
2725

2826
const redirectMock = jest.mocked(redirect);
2927
const getTemplateMock = jest.mocked(getTemplate);
30-
const serverIsFeatureEnabledMock = jest.mocked(serverIsFeatureEnabled);
3128

3229
describe('PreviewNhsAppTemplatePage', () => {
3330
beforeEach(() => {
3431
jest.resetAllMocks();
35-
serverIsFeatureEnabledMock.mockResolvedValueOnce(true);
3632
});
3733

3834
it('should load page', async () => {
@@ -64,10 +60,7 @@ describe('PreviewNhsAppTemplatePage', () => {
6460
title: pageTitle,
6561
});
6662
expect(page).toEqual(
67-
<PreviewNHSAppTemplate
68-
initialState={nhsAppTemplate}
69-
routingEnabled={true}
70-
/>
63+
<PreviewNHSAppTemplate initialState={nhsAppTemplate} />
7164
);
7265
});
7366

0 commit comments

Comments
 (0)