Skip to content

Commit c96b382

Browse files
committed
Merge remote-tracking branch 'origin' into fix/CCM-8868_action_buttons_positioning
2 parents 2241409 + 1bd27e3 commit c96b382

File tree

27 files changed

+3130
-105
lines changed

27 files changed

+3130
-105
lines changed

frontend/next.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const nextConfig = (phase) => {
2525
experimental: {
2626
serverActions: {
2727
allowedOrigins: ['**.nhsnotify.national.nhs.uk', 'notify.nhs.uk'],
28+
bodySizeLimit: '6mb',
2829
},
2930
},
3031

frontend/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,9 @@
2020
"dependencies": {
2121
"@aws-amplify/adapter-nextjs": "^1.4.3",
2222
"@aws-amplify/ui-react": "^6.9.1",
23-
"clsx": "^2.1.1",
2423
"aws-amplify": "^6.12.3",
24+
"classnames": "^2.5.1",
25+
"clsx": "^2.1.1",
2526
"date-fns": "^4.1.0",
2627
"jsonwebtoken": "^9.0.2",
2728
"jwt-decode": "^4.0.0",
Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

33
exports[`CreateLetterTemplatePage should render CreateLetterTemplatePage 1`] = `
4-
<NHSNotifyMain>
5-
<h1
6-
className="nhsuk-heading-xl"
7-
data-testid="page-heading"
8-
>
9-
Create letter template
10-
</h1>
11-
<p
12-
id="placeholder"
13-
>
14-
🚧 Placeholder 🚧
15-
</p>
16-
</NHSNotifyMain>
4+
<LetterTemplateForm
5+
initialState={
6+
{
7+
"language": "en",
8+
"letterType": "x0",
9+
"name": "",
10+
"templateType": "LETTER",
11+
}
12+
}
13+
/>
1714
`;
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import { fireEvent, render, screen } from '@testing-library/react';
2+
import { mockDeep } from 'jest-mock-extended';
3+
import {
4+
TemplateFormState,
5+
LetterTemplate,
6+
} from 'nhs-notify-web-template-management-utils';
7+
import { LetterTemplateForm } from '@forms/LetterTemplateForm/LetterTemplateForm';
8+
9+
jest.mock('@utils/amplify-utils');
10+
11+
jest.mock('react', () => {
12+
const originalModule = jest.requireActual('react');
13+
14+
return {
15+
...originalModule,
16+
useActionState: (
17+
_: (
18+
formState: TemplateFormState,
19+
formData: FormData
20+
) => Promise<TemplateFormState>,
21+
initialState: TemplateFormState
22+
) => [initialState, '/action'],
23+
};
24+
});
25+
26+
test('renders page with preloaded field values', () => {
27+
const container = render(
28+
<LetterTemplateForm
29+
initialState={mockDeep<TemplateFormState<LetterTemplate>>({
30+
validationError: undefined,
31+
name: 'template-name',
32+
letterType: 'q1',
33+
language: 'ar',
34+
})}
35+
/>
36+
);
37+
expect(container.asFragment()).toMatchSnapshot();
38+
});
39+
40+
test('renders page one error', () => {
41+
const container = render(
42+
<LetterTemplateForm
43+
initialState={mockDeep<TemplateFormState<LetterTemplate>>({
44+
validationError: {
45+
formErrors: [],
46+
fieldErrors: {
47+
letterTemplateName: ['Template name error'],
48+
},
49+
},
50+
name: '',
51+
letterType: 'x0',
52+
language: 'en',
53+
})}
54+
/>
55+
);
56+
expect(container.asFragment()).toMatchSnapshot();
57+
});
58+
59+
test('renders page with multiple errors', () => {
60+
const container = render(
61+
<LetterTemplateForm
62+
initialState={mockDeep<TemplateFormState<LetterTemplate>>({
63+
validationError: {
64+
formErrors: [],
65+
fieldErrors: {
66+
letterTemplateName: ['Template name error'],
67+
letterType: ['Template letter type error'],
68+
letterLanguage: ['Template language error'],
69+
letterTemplatePdf: ['PDF error'],
70+
letterTemplateCsv: ['CSV error'],
71+
},
72+
},
73+
name: '',
74+
letterType: undefined,
75+
language: undefined,
76+
})}
77+
/>
78+
);
79+
expect(container.asFragment()).toMatchSnapshot();
80+
});
81+
82+
test('Client-side validation triggers', () => {
83+
const container = render(
84+
<LetterTemplateForm
85+
initialState={mockDeep<TemplateFormState<LetterTemplate>>({
86+
validationError: undefined,
87+
name: undefined,
88+
letterType: undefined,
89+
language: undefined,
90+
})}
91+
/>
92+
);
93+
const submitButton = screen.getByTestId('submit-button');
94+
fireEvent.click(submitButton);
95+
expect(container.asFragment()).toMatchSnapshot();
96+
});

0 commit comments

Comments
 (0)