Skip to content

Commit 671ab15

Browse files
committed
Merge branch 'main' of https://github.com/NHSDigital/nhs-notify-web-template-management into feature/CCM-11544-multiple-language-templates
2 parents d79fbd3 + 55ad915 commit 671ab15

File tree

208 files changed

+4000
-1843
lines changed

Some content is hidden

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

208 files changed

+4000
-1843
lines changed

frontend/.eslintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
public
22
amplify
3+
next-env.d.ts

frontend/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"jwt-decode": "^4.0.0",
1111
"markdown-it": "^13.0.2",
1212
"markdown-to-jsx": "^7.7.10",
13-
"next": "^15.2.3",
13+
"next": "^15.5.7",
1414
"next-client-cookies": "^2.0.1",
1515
"nhs-notify-backend-client": "^0.0.1",
1616
"nhs-notify-web-template-management-utils": "^0.0.1",

frontend/src/__tests__/app/choose-templates/__snapshots__/page.test.tsx.snap

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ exports[`ChooseTemplatesPage renders correctly for a message plan with multiple
118118
<a
119119
class="nhsuk-link nhsuk-link--no-visited-state"
120120
data-testid="change-template-link-NHSAPP"
121-
href="/message-plans/choose-nhs-app-template/fbb81055-79b9-4759-ac07-d191ae57be34"
121+
href="/message-plans/choose-nhs-app-template/fbb81055-79b9-4759-ac07-d191ae57be34?lockNumber=0"
122122
>
123123
Change
124124
<span
@@ -134,11 +134,19 @@ exports[`ChooseTemplatesPage renders correctly for a message plan with multiple
134134
<form>
135135
<input
136136
name="routingConfigId"
137+
readonly=""
137138
type="hidden"
138139
value="fbb81055-79b9-4759-ac07-d191ae57be34"
139140
/>
141+
<input
142+
name="lockNumber"
143+
readonly=""
144+
type="hidden"
145+
value="0"
146+
/>
140147
<input
141148
name="templateId"
149+
readonly=""
142150
type="hidden"
143151
value="d3a2c6ba-438a-4bf4-b94a-7c64c6528e7f"
144152
/>
@@ -297,7 +305,7 @@ exports[`ChooseTemplatesPage renders correctly for a message plan with multiple
297305
<a
298306
class="nhsuk-link nhsuk-link--no-visited-state"
299307
data-testid="change-template-link-SMS"
300-
href="/message-plans/choose-text-message-template/fbb81055-79b9-4759-ac07-d191ae57be34"
308+
href="/message-plans/choose-text-message-template/fbb81055-79b9-4759-ac07-d191ae57be34?lockNumber=0"
301309
>
302310
Change
303311
<span
@@ -313,11 +321,19 @@ exports[`ChooseTemplatesPage renders correctly for a message plan with multiple
313321
<form>
314322
<input
315323
name="routingConfigId"
324+
readonly=""
316325
type="hidden"
317326
value="fbb81055-79b9-4759-ac07-d191ae57be34"
318327
/>
328+
<input
329+
name="lockNumber"
330+
readonly=""
331+
type="hidden"
332+
value="0"
333+
/>
319334
<input
320335
name="templateId"
336+
readonly=""
321337
type="hidden"
322338
value="5f7c3e1d-9b1a-4d3a-8f3e-2c6b8e9f1a2b"
323339
/>
@@ -465,7 +481,7 @@ exports[`ChooseTemplatesPage renders correctly for a message plan with multiple
465481
<a
466482
class="nhsuk-link nhsuk-link--no-visited-state"
467483
data-testid="choose-template-link-EMAIL"
468-
href="/message-plans/choose-email-template/fbb81055-79b9-4759-ac07-d191ae57be34"
484+
href="/message-plans/choose-email-template/fbb81055-79b9-4759-ac07-d191ae57be34?lockNumber=0"
469485
>
470486
Choose
471487
<span
@@ -615,7 +631,7 @@ exports[`ChooseTemplatesPage renders correctly for a message plan with multiple
615631
<a
616632
class="nhsuk-link nhsuk-link--no-visited-state"
617633
data-testid="change-template-link-LETTER"
618-
href="/message-plans/choose-standard-english-letter-template/fbb81055-79b9-4759-ac07-d191ae57be34"
634+
href="/message-plans/choose-standard-english-letter-template/fbb81055-79b9-4759-ac07-d191ae57be34?lockNumber=0"
619635
>
620636
Change
621637
<span
@@ -631,11 +647,19 @@ exports[`ChooseTemplatesPage renders correctly for a message plan with multiple
631647
<form>
632648
<input
633649
name="routingConfigId"
650+
readonly=""
634651
type="hidden"
635652
value="fbb81055-79b9-4759-ac07-d191ae57be34"
636653
/>
654+
<input
655+
name="lockNumber"
656+
readonly=""
657+
type="hidden"
658+
value="0"
659+
/>
637660
<input
638661
name="templateId"
662+
readonly=""
639663
type="hidden"
640664
value="9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d"
641665
/>
@@ -767,7 +791,7 @@ exports[`ChooseTemplatesPage renders correctly for a message plan with multiple
767791
<a
768792
class="nhsuk-link nhsuk-link--no-visited-state"
769793
data-testid="choose-template-link-x1"
770-
href="/message-plans/choose-large-print-letter-template/fbb81055-79b9-4759-ac07-d191ae57be34"
794+
href="/message-plans/choose-large-print-letter-template/fbb81055-79b9-4759-ac07-d191ae57be34?lockNumber=undefined"
771795
>
772796
Choose
773797
<span
@@ -822,7 +846,7 @@ exports[`ChooseTemplatesPage renders correctly for a message plan with multiple
822846
<a
823847
class="nhsuk-link nhsuk-link--no-visited-state"
824848
data-testid="change-template-link-foreign-language"
825-
href="/message-plans/choose-other-language-letter-template/fbb81055-79b9-4759-ac07-d191ae57be34"
849+
href="/message-plans/choose-other-language-letter-template/fbb81055-79b9-4759-ac07-d191ae57be34?lockNumber=undefined"
826850
>
827851
Change
828852
<span
@@ -838,16 +862,24 @@ exports[`ChooseTemplatesPage renders correctly for a message plan with multiple
838862
<form>
839863
<input
840864
name="routingConfigId"
865+
readonly=""
841866
type="hidden"
842867
value="fbb81055-79b9-4759-ac07-d191ae57be34"
843868
/>
869+
<input
870+
name="lockNumber"
871+
readonly=""
872+
type="hidden"
873+
/>
844874
<input
845875
name="templateId"
876+
readonly=""
846877
type="hidden"
847878
value="1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
848879
/>
849880
<input
850881
name="templateId"
882+
readonly=""
851883
type="hidden"
852884
value="6d5c4b3a-2f1e-0d9c-8b7a-6f5e4d3c2b1a"
853885
/>

frontend/src/__tests__/app/choose-templates/page.test.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ const routingConfig: RoutingConfig = {
3838
updatedAt: '2025-01-13T10:19:25.579Z',
3939
cascadeGroupOverrides: [],
4040
cascade: [],
41+
lockNumber: 0,
4142
defaultCascadeGroup: 'standard',
4243
};
4344

frontend/src/__tests__/app/message-plans/choose-email-template/__snapshots__/page.test.tsx.snap

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ exports[`ChooseEmailTemplate page renders Email template selection 1`] = `
4242
type="hidden"
4343
value="no_token"
4444
/>
45+
<input
46+
name="lockNumber"
47+
readonly=""
48+
type="hidden"
49+
value="42"
50+
/>
4551
<dl
4652
class="nhsuk-summary-list"
4753
data-testid="previous-selection-details"

frontend/src/__tests__/app/message-plans/choose-email-template/page.test.tsx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ describe('ChooseEmailTemplate page', () => {
2323
params: Promise.resolve({
2424
routingConfigId: 'invalid-id',
2525
}),
26+
searchParams: Promise.resolve({
27+
lockNumber: '42',
28+
}),
2629
});
2730

2831
expect(getRoutingConfigMock).toHaveBeenCalledWith('invalid-id');
@@ -45,6 +48,9 @@ describe('ChooseEmailTemplate page', () => {
4548
params: Promise.resolve({
4649
routingConfigId: ROUTING_CONFIG.id,
4750
}),
51+
searchParams: Promise.resolve({
52+
lockNumber: '42',
53+
}),
4854
});
4955

5056
expect(getRoutingConfigMock).toHaveBeenCalledWith(ROUTING_CONFIG.id);
@@ -63,6 +69,9 @@ describe('ChooseEmailTemplate page', () => {
6369
params: Promise.resolve({
6470
routingConfigId: ROUTING_CONFIG.id,
6571
}),
72+
searchParams: Promise.resolve({
73+
lockNumber: '42',
74+
}),
6675
});
6776

6877
const container = render(page);
@@ -77,4 +86,17 @@ describe('ChooseEmailTemplate page', () => {
7786
});
7887
expect(container.asFragment()).toMatchSnapshot();
7988
});
89+
90+
it('redirects to choose templates page if the lockNumber is missing', async () => {
91+
await ChooseEmailTemplate({
92+
params: Promise.resolve({
93+
routingConfigId: ROUTING_CONFIG.id,
94+
}),
95+
});
96+
97+
expect(redirectMock).toHaveBeenCalledWith(
98+
`/message-plans/choose-templates/${ROUTING_CONFIG.id}`,
99+
'replace'
100+
);
101+
});
80102
});

frontend/src/__tests__/app/message-plans/choose-large-print-letter-template/__snapshots__/page.test.tsx.snap

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ exports[`ChooseLargePrintLetterTemplate page renders large print letter template
4242
type="hidden"
4343
value="no_token"
4444
/>
45+
<input
46+
name="lockNumber"
47+
readonly=""
48+
type="hidden"
49+
/>
4550
<div
4651
class="nhsuk-grid-row"
4752
>

frontend/src/__tests__/app/message-plans/choose-nhs-app-template/__snapshots__/page.test.tsx.snap

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ exports[`ChooseNHSAppTemplate page renders NHS App template selection 1`] = `
4242
type="hidden"
4343
value="no_token"
4444
/>
45+
<input
46+
name="lockNumber"
47+
readonly=""
48+
type="hidden"
49+
value="42"
50+
/>
4551
<dl
4652
class="nhsuk-summary-list"
4753
data-testid="previous-selection-details"

frontend/src/__tests__/app/message-plans/choose-nhs-app-template/page.test.tsx

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ describe('ChooseNHSAppTemplate page', () => {
2626
params: Promise.resolve({
2727
routingConfigId: 'invalid-id',
2828
}),
29+
searchParams: Promise.resolve({
30+
lockNumber: '42',
31+
}),
2932
});
3033

3134
expect(getRoutingConfigMock).toHaveBeenCalledWith('invalid-id');
@@ -48,6 +51,9 @@ describe('ChooseNHSAppTemplate page', () => {
4851
params: Promise.resolve({
4952
routingConfigId: ROUTING_CONFIG.id,
5053
}),
54+
searchParams: Promise.resolve({
55+
lockNumber: '42',
56+
}),
5157
});
5258

5359
expect(getRoutingConfigMock).toHaveBeenCalledWith(ROUTING_CONFIG.id);
@@ -66,6 +72,9 @@ describe('ChooseNHSAppTemplate page', () => {
6672
params: Promise.resolve({
6773
routingConfigId: ROUTING_CONFIG.id,
6874
}),
75+
searchParams: Promise.resolve({
76+
lockNumber: '42',
77+
}),
6978
});
7079

7180
const container = render(page);
@@ -80,4 +89,17 @@ describe('ChooseNHSAppTemplate page', () => {
8089
});
8190
expect(container.asFragment()).toMatchSnapshot();
8291
});
92+
93+
it('redirects to choose templates page if the lockNumber is missing', async () => {
94+
await ChooseNhsAppTemplate({
95+
params: Promise.resolve({
96+
routingConfigId: ROUTING_CONFIG.id,
97+
}),
98+
});
99+
100+
expect(redirectMock).toHaveBeenCalledWith(
101+
`/message-plans/choose-templates/${ROUTING_CONFIG.id}`,
102+
'replace'
103+
);
104+
});
83105
});

frontend/src/__tests__/app/message-plans/choose-standard-english-letter-template/__snapshots__/page.test.tsx.snap

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ exports[`ChooseStandardEnglishLetterTemplate page renders letter template select
4242
type="hidden"
4343
value="no_token"
4444
/>
45+
<input
46+
name="lockNumber"
47+
readonly=""
48+
type="hidden"
49+
value="42"
50+
/>
4551
<dl
4652
class="nhsuk-summary-list"
4753
data-testid="previous-selection-details"

0 commit comments

Comments
 (0)