Skip to content

Commit ee911bc

Browse files
committed
CCM-11474: require campaign id; refactoring
1 parent f68d3ad commit ee911bc

File tree

68 files changed

+660
-585
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+660
-585
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
EMAIL_TEMPLATE,
1414
LETTER_TEMPLATE,
1515
SMS_TEMPLATE,
16-
} from '../../helpers/helpers';
16+
} from '@testhelpers/helpers';
1717
import content from '@content/content';
1818

1919
const { editPageTitle } = content.components.templateFormNhsApp;

frontend/src/__tests__/app/letter-template-submitted/page.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import LetterTemplateSubmittedPage, {
66
} from '@app/letter-template-submitted/[templateId]/page';
77
import content from '@content/content';
88
import { TemplateSubmitted } from '@molecules/TemplateSubmitted/TemplateSubmitted';
9-
import { LETTER_TEMPLATE } from '../../helpers/helpers';
9+
import { LETTER_TEMPLATE } from '@testhelpers/helpers';
1010
import { getTemplate } from '@utils/form-actions';
1111
import { redirect } from 'next/navigation';
1212

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`matches snapshot 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+
You cannot create message plans yet
22+
</h1>
23+
<p>
24+
To get access, contact your onboarding manager and give them this error message:
25+
</p>
26+
<div
27+
class="nhsuk-inset-text"
28+
>
29+
<p>
30+
Account needs a campaign ID
31+
</p>
32+
</div>
33+
<p>
34+
<a
35+
data-testid="back-link"
36+
href="/message-plans"
37+
>
38+
Go back
39+
</a>
40+
</p>
41+
</div>
42+
</div>
43+
</main>
44+
</DocumentFragment>
45+
`;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { render } from '@testing-library/react';
2+
import MessagePlanCampaignIdRequiredPage from '@app/message-plans/campaign-id-required/page';
3+
4+
test('matches snapshot', () => {
5+
const container = render(MessagePlanCampaignIdRequiredPage());
6+
7+
expect(container.asFragment()).toMatchSnapshot();
8+
});

frontend/src/__tests__/app/message-plans/create-message-plan/__snapshots__/page.test.tsx.snap

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,17 @@ exports[`CreateMessagePlanPage renders the page when messageOrder is "LETTER" 1`
99
>
1010
<div
1111
class="nhsuk-grid-row"
12-
data-testid="page-content-wrapper"
1312
>
1413
<div
1514
class="nhsuk-grid-column-two-thirds"
1615
>
1716
<h1
1817
class="nhsuk-heading-xl"
19-
data-testid="page-heading"
2018
>
2119
Create a message plan
2220
</h1>
2321
<div
24-
data-message-order="LETTER"
25-
data-testid="message-plan-form"
22+
data-testid="mocked-message-plan-form"
2623
/>
2724
</div>
2825
</div>
@@ -39,20 +36,17 @@ exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP" 1`
3936
>
4037
<div
4138
class="nhsuk-grid-row"
42-
data-testid="page-content-wrapper"
4339
>
4440
<div
4541
class="nhsuk-grid-column-two-thirds"
4642
>
4743
<h1
4844
class="nhsuk-heading-xl"
49-
data-testid="page-heading"
5045
>
5146
Create a message plan
5247
</h1>
5348
<div
54-
data-message-order="NHSAPP"
55-
data-testid="message-plan-form"
49+
data-testid="mocked-message-plan-form"
5650
/>
5751
</div>
5852
</div>
@@ -69,20 +63,17 @@ exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,EMA
6963
>
7064
<div
7165
class="nhsuk-grid-row"
72-
data-testid="page-content-wrapper"
7366
>
7467
<div
7568
class="nhsuk-grid-column-two-thirds"
7669
>
7770
<h1
7871
class="nhsuk-heading-xl"
79-
data-testid="page-heading"
8072
>
8173
Create a message plan
8274
</h1>
8375
<div
84-
data-message-order="NHSAPP,EMAIL"
85-
data-testid="message-plan-form"
76+
data-testid="mocked-message-plan-form"
8677
/>
8778
</div>
8879
</div>
@@ -99,20 +90,17 @@ exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,EMA
9990
>
10091
<div
10192
class="nhsuk-grid-row"
102-
data-testid="page-content-wrapper"
10393
>
10494
<div
10595
class="nhsuk-grid-column-two-thirds"
10696
>
10797
<h1
10898
class="nhsuk-heading-xl"
109-
data-testid="page-heading"
11099
>
111100
Create a message plan
112101
</h1>
113102
<div
114-
data-message-order="NHSAPP,EMAIL,SMS"
115-
data-testid="message-plan-form"
103+
data-testid="mocked-message-plan-form"
116104
/>
117105
</div>
118106
</div>
@@ -129,20 +117,17 @@ exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,EMA
129117
>
130118
<div
131119
class="nhsuk-grid-row"
132-
data-testid="page-content-wrapper"
133120
>
134121
<div
135122
class="nhsuk-grid-column-two-thirds"
136123
>
137124
<h1
138125
class="nhsuk-heading-xl"
139-
data-testid="page-heading"
140126
>
141127
Create a message plan
142128
</h1>
143129
<div
144-
data-message-order="NHSAPP,EMAIL,SMS,LETTER"
145-
data-testid="message-plan-form"
130+
data-testid="mocked-message-plan-form"
146131
/>
147132
</div>
148133
</div>
@@ -159,20 +144,17 @@ exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,SMS
159144
>
160145
<div
161146
class="nhsuk-grid-row"
162-
data-testid="page-content-wrapper"
163147
>
164148
<div
165149
class="nhsuk-grid-column-two-thirds"
166150
>
167151
<h1
168152
class="nhsuk-heading-xl"
169-
data-testid="page-heading"
170153
>
171154
Create a message plan
172155
</h1>
173156
<div
174-
data-message-order="NHSAPP,SMS"
175-
data-testid="message-plan-form"
157+
data-testid="mocked-message-plan-form"
176158
/>
177159
</div>
178160
</div>
@@ -189,20 +171,17 @@ exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,SMS
189171
>
190172
<div
191173
class="nhsuk-grid-row"
192-
data-testid="page-content-wrapper"
193174
>
194175
<div
195176
class="nhsuk-grid-column-two-thirds"
196177
>
197178
<h1
198179
class="nhsuk-heading-xl"
199-
data-testid="page-heading"
200180
>
201181
Create a message plan
202182
</h1>
203183
<div
204-
data-message-order="NHSAPP,SMS,EMAIL"
205-
data-testid="message-plan-form"
184+
data-testid="mocked-message-plan-form"
206185
/>
207186
</div>
208187
</div>
@@ -219,20 +198,17 @@ exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,SMS
219198
>
220199
<div
221200
class="nhsuk-grid-row"
222-
data-testid="page-content-wrapper"
223201
>
224202
<div
225203
class="nhsuk-grid-column-two-thirds"
226204
>
227205
<h1
228206
class="nhsuk-heading-xl"
229-
data-testid="page-heading"
230207
>
231208
Create a message plan
232209
</h1>
233210
<div
234-
data-message-order="NHSAPP,SMS,LETTER"
235-
data-testid="message-plan-form"
211+
data-testid="mocked-message-plan-form"
236212
/>
237213
</div>
238214
</div>

frontend/src/__tests__/app/message-plans/create-message-plan/page.test.tsx

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,44 @@
1-
import { render, screen } from '@testing-library/react';
1+
import { render } from '@testing-library/react';
22
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';
83
import { MESSAGE_ORDER_OPTIONS_LIST } from 'nhs-notify-web-template-management-utils';
4+
import CreateMessagePlanPage from '@app/message-plans/create-message-plan/page';
5+
import { MessagePlanForm } from '@forms/MessagePlan/MessagePlan';
6+
import { fetchClient } from '@utils/server-features';
7+
import { NextRedirectError } from '@testhelpers/next-redirect';
98

109
jest.mock('next/navigation');
1110
jest.mock('@forms/MessagePlan/MessagePlan');
11+
jest.mock('@utils/server-features');
1212

1313
beforeEach(() => {
14+
jest.resetAllMocks();
15+
1416
jest.mocked(redirect).mockImplementation((url, type) => {
1517
throw new NextRedirectError(url, type);
1618
});
1719

1820
jest
1921
.mocked(MessagePlanForm)
20-
.mockImplementation(({ messageOrder }: { messageOrder: string }) => (
21-
<div data-testid='message-plan-form' data-message-order={messageOrder} />
22-
));
22+
.mockImplementation(() => <div data-testid='mocked-message-plan-form' />);
23+
24+
jest
25+
.mocked(fetchClient)
26+
.mockResolvedValue({ campaignIds: ['campaign-1'], features: {} });
2327
});
2428

2529
describe('CreateMessagePlanPage', () => {
30+
test('redirects when there are no campaignIds', async () => {
31+
jest.mocked(fetchClient).mockResolvedValueOnce({ features: {} });
32+
33+
await expect(
34+
CreateMessagePlanPage({ searchParams: Promise.resolve({}) })
35+
).rejects.toMatchObject({
36+
message: 'NEXT_REDIRECT',
37+
url: '/message-plans/campaign-id-required',
38+
type: RedirectType.replace,
39+
});
40+
});
41+
2642
test('redirects when searchParams are missing', async () => {
2743
await expect(
2844
CreateMessagePlanPage({ searchParams: Promise.resolve({}) })
@@ -56,19 +72,10 @@ describe('CreateMessagePlanPage', () => {
5672

5773
expect(container.asFragment()).toMatchSnapshot();
5874

59-
// assert against mocked form
60-
expect(screen.getByTestId('message-plan-form')).toHaveAttribute(
61-
'data-message-order',
62-
messageOrder
63-
);
75+
expect(jest.mocked(MessagePlanForm).mock.calls[0][0]).toEqual({
76+
messageOrder,
77+
campaignIds: ['campaign-1'],
78+
});
6479
}
6580
);
6681
});
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 & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
LETTER_TEMPLATE,
1515
NHS_APP_TEMPLATE,
1616
SMS_TEMPLATE,
17-
} from '../../helpers/helpers';
17+
} from '@testhelpers/helpers';
1818
import content from '@content/content';
1919

2020
const { pageTitle } = content.components.previewEmailTemplate;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
EMAIL_TEMPLATE,
1414
NHS_APP_TEMPLATE,
1515
SMS_TEMPLATE,
16-
} from '../../helpers/helpers';
16+
} from '@testhelpers/helpers';
1717
import content from '@content/content';
1818

1919
const { pageTitle } = content.components.previewLetterTemplate;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
LETTER_TEMPLATE,
1515
NHS_APP_TEMPLATE,
1616
SMS_TEMPLATE,
17-
} from '../../helpers/helpers';
17+
} from '@testhelpers/helpers';
1818
import content from '@content/content';
1919

2020
const { pageTitle } = content.components.previewNHSAppTemplate;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
EMAIL_TEMPLATE,
1414
NHS_APP_TEMPLATE,
1515
SMS_TEMPLATE,
16-
} from '../../helpers/helpers';
16+
} from '@testhelpers/helpers';
1717
import content from '@content/content';
1818

1919
const { pageTitle } = content.components.previewEmailTemplate;

0 commit comments

Comments
 (0)