Skip to content

Commit fdd4b77

Browse files
committed
CCM-11474: error display feedback
1 parent 3322d94 commit fdd4b77

File tree

11 files changed

+704
-912
lines changed

11 files changed

+704
-912
lines changed

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

Lines changed: 13 additions & 198 deletions
Original file line numberDiff line numberDiff line change
@@ -1,215 +1,30 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`CreateMessagePlanPage renders the page when messageOrder is "LETTER" 1`] = `
3+
exports[`CreateMessagePlanPage renders the page 1`] = `
44
<DocumentFragment>
55
<main
66
class="nhsuk-main-wrapper"
77
id="maincontent"
88
role="main"
99
>
1010
<div
11-
class="nhsuk-grid-row"
11+
data-testid="mocked-form-provider"
1212
>
1313
<div
14-
class="nhsuk-grid-column-two-thirds"
14+
class="nhsuk-grid-row"
1515
>
16-
<h1
17-
class="nhsuk-heading-xl"
18-
>
19-
Create a message plan
20-
</h1>
21-
<div
22-
data-testid="mocked-message-plan-form"
23-
/>
24-
</div>
25-
</div>
26-
</main>
27-
</DocumentFragment>
28-
`;
29-
30-
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP" 1`] = `
31-
<DocumentFragment>
32-
<main
33-
class="nhsuk-main-wrapper"
34-
id="maincontent"
35-
role="main"
36-
>
37-
<div
38-
class="nhsuk-grid-row"
39-
>
40-
<div
41-
class="nhsuk-grid-column-two-thirds"
42-
>
43-
<h1
44-
class="nhsuk-heading-xl"
45-
>
46-
Create a message plan
47-
</h1>
48-
<div
49-
data-testid="mocked-message-plan-form"
50-
/>
51-
</div>
52-
</div>
53-
</main>
54-
</DocumentFragment>
55-
`;
56-
57-
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,EMAIL" 1`] = `
58-
<DocumentFragment>
59-
<main
60-
class="nhsuk-main-wrapper"
61-
id="maincontent"
62-
role="main"
63-
>
64-
<div
65-
class="nhsuk-grid-row"
66-
>
67-
<div
68-
class="nhsuk-grid-column-two-thirds"
69-
>
70-
<h1
71-
class="nhsuk-heading-xl"
72-
>
73-
Create a message plan
74-
</h1>
75-
<div
76-
data-testid="mocked-message-plan-form"
77-
/>
78-
</div>
79-
</div>
80-
</main>
81-
</DocumentFragment>
82-
`;
83-
84-
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,EMAIL,SMS" 1`] = `
85-
<DocumentFragment>
86-
<main
87-
class="nhsuk-main-wrapper"
88-
id="maincontent"
89-
role="main"
90-
>
91-
<div
92-
class="nhsuk-grid-row"
93-
>
94-
<div
95-
class="nhsuk-grid-column-two-thirds"
96-
>
97-
<h1
98-
class="nhsuk-heading-xl"
99-
>
100-
Create a message plan
101-
</h1>
102-
<div
103-
data-testid="mocked-message-plan-form"
104-
/>
105-
</div>
106-
</div>
107-
</main>
108-
</DocumentFragment>
109-
`;
110-
111-
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,EMAIL,SMS,LETTER" 1`] = `
112-
<DocumentFragment>
113-
<main
114-
class="nhsuk-main-wrapper"
115-
id="maincontent"
116-
role="main"
117-
>
118-
<div
119-
class="nhsuk-grid-row"
120-
>
121-
<div
122-
class="nhsuk-grid-column-two-thirds"
123-
>
124-
<h1
125-
class="nhsuk-heading-xl"
126-
>
127-
Create a message plan
128-
</h1>
12916
<div
130-
data-testid="mocked-message-plan-form"
131-
/>
132-
</div>
133-
</div>
134-
</main>
135-
</DocumentFragment>
136-
`;
137-
138-
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,SMS" 1`] = `
139-
<DocumentFragment>
140-
<main
141-
class="nhsuk-main-wrapper"
142-
id="maincontent"
143-
role="main"
144-
>
145-
<div
146-
class="nhsuk-grid-row"
147-
>
148-
<div
149-
class="nhsuk-grid-column-two-thirds"
150-
>
151-
<h1
152-
class="nhsuk-heading-xl"
17+
class="nhsuk-grid-column-two-thirds"
15318
>
154-
Create a message plan
155-
</h1>
156-
<div
157-
data-testid="mocked-message-plan-form"
158-
/>
159-
</div>
160-
</div>
161-
</main>
162-
</DocumentFragment>
163-
`;
164-
165-
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,SMS,EMAIL" 1`] = `
166-
<DocumentFragment>
167-
<main
168-
class="nhsuk-main-wrapper"
169-
id="maincontent"
170-
role="main"
171-
>
172-
<div
173-
class="nhsuk-grid-row"
174-
>
175-
<div
176-
class="nhsuk-grid-column-two-thirds"
177-
>
178-
<h1
179-
class="nhsuk-heading-xl"
180-
>
181-
Create a message plan
182-
</h1>
183-
<div
184-
data-testid="mocked-message-plan-form"
185-
/>
186-
</div>
187-
</div>
188-
</main>
189-
</DocumentFragment>
190-
`;
191-
192-
exports[`CreateMessagePlanPage renders the page when messageOrder is "NHSAPP,SMS,LETTER" 1`] = `
193-
<DocumentFragment>
194-
<main
195-
class="nhsuk-main-wrapper"
196-
id="maincontent"
197-
role="main"
198-
>
199-
<div
200-
class="nhsuk-grid-row"
201-
>
202-
<div
203-
class="nhsuk-grid-column-two-thirds"
204-
>
205-
<h1
206-
class="nhsuk-heading-xl"
207-
>
208-
Create a message plan
209-
</h1>
210-
<div
211-
data-testid="mocked-message-plan-form"
212-
/>
19+
<h1
20+
class="nhsuk-heading-xl"
21+
>
22+
Create a message plan
23+
</h1>
24+
<div
25+
data-testid="mocked-message-plan-form"
26+
/>
27+
</div>
21328
</div>
21429
</div>
21530
</main>

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

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,51 @@ import { render } from '@testing-library/react';
22
import { redirect, RedirectType } from 'next/navigation';
33
import { MESSAGE_ORDER_OPTIONS_LIST } from 'nhs-notify-web-template-management-utils';
44
import CreateMessagePlanPage from '@app/message-plans/create-message-plan/page';
5+
import { createMessagePlanServerAction } from '@app/message-plans/create-message-plan/server-action';
56
import { MessagePlanForm } from '@forms/MessagePlan/MessagePlan';
6-
import { fetchClient } from '@utils/server-features';
7+
import { NHSNotifyFormProvider } from '@providers/form-provider';
78
import { NextRedirectError } from '@testhelpers/next-redirect';
9+
import { fetchClient } from '@utils/server-features';
810

911
jest.mock('next/navigation');
12+
jest.mock('@app/message-plans/create-message-plan/server-action');
1013
jest.mock('@forms/MessagePlan/MessagePlan');
14+
jest.mock('@providers/form-provider');
1115
jest.mock('@utils/server-features');
1216

13-
beforeEach(() => {
14-
jest.resetAllMocks();
17+
jest.mocked(redirect).mockImplementation((url, type) => {
18+
throw new NextRedirectError(url, type);
19+
});
1520

16-
jest.mocked(redirect).mockImplementation((url, type) => {
17-
throw new NextRedirectError(url, type);
18-
});
21+
jest
22+
.mocked(NHSNotifyFormProvider)
23+
.mockImplementation(({ children }) => (
24+
<div data-testid='mocked-form-provider'>{children}</div>
25+
));
26+
27+
jest
28+
.mocked(MessagePlanForm)
29+
.mockImplementation(() => <div data-testid='mocked-message-plan-form' />);
1930

20-
jest
21-
.mocked(MessagePlanForm)
22-
.mockImplementation(() => <div data-testid='mocked-message-plan-form' />);
31+
jest
32+
.mocked(fetchClient)
33+
.mockResolvedValue({ campaignIds: ['campaign-1'], features: {} });
2334

24-
jest
25-
.mocked(fetchClient)
26-
.mockResolvedValue({ campaignIds: ['campaign-1'], features: {} });
35+
beforeEach(() => {
36+
jest.clearAllMocks();
2737
});
2838

2939
describe('CreateMessagePlanPage', () => {
40+
test('renders the page', async () => {
41+
const ui = await CreateMessagePlanPage({
42+
searchParams: Promise.resolve({ messageOrder: 'NHSAPP' }),
43+
});
44+
45+
const container = render(ui);
46+
47+
expect(container.asFragment()).toMatchSnapshot();
48+
});
49+
3050
test('redirects when there are no campaignIds', async () => {
3151
jest.mocked(fetchClient).mockResolvedValueOnce({ features: {} });
3252

@@ -68,11 +88,15 @@ describe('CreateMessagePlanPage', () => {
6888
searchParams: Promise.resolve({ messageOrder }),
6989
});
7090

71-
const container = render(ui);
91+
render(ui);
7292

73-
expect(container.asFragment()).toMatchSnapshot();
93+
expect(
94+
jest.mocked(NHSNotifyFormProvider).mock.lastCall?.at(0)
95+
).toMatchObject({
96+
serverAction: jest.mocked(createMessagePlanServerAction),
97+
});
7498

75-
expect(jest.mocked(MessagePlanForm).mock.calls[0][0]).toEqual({
99+
expect(jest.mocked(MessagePlanForm).mock.lastCall?.at(0)).toEqual({
76100
messageOrder,
77101
campaignIds: ['campaign-1'],
78102
});

0 commit comments

Comments
 (0)