Skip to content

Commit a490566

Browse files
CCM-11537: Template preview tests
1 parent 6a4f603 commit a490566

File tree

75 files changed

+1022
-351
lines changed

Some content is hidden

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

75 files changed

+1022
-351
lines changed

frontend/src/__tests__/components/forms/ChooseChannelTemplate/server-action.test.ts

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { chooseChannelTemplateAction } from '@forms/ChooseChannelTemplate/server-action';
22
import {
3+
EMAIL_TEMPLATE,
34
getMockFormData,
45
NHS_APP_TEMPLATE,
56
ROUTING_CONFIG,
7+
SMS_TEMPLATE,
68
} from '@testhelpers/helpers';
79
import { updateRoutingConfig } from '@utils/message-plans';
810
import { redirect, RedirectType } from 'next/navigation';
@@ -46,29 +48,53 @@ test('submit form - success updates config and redirects to choose templates', a
4648
cascadeGroups: ['standard'],
4749
channel: 'NHSAPP',
4850
channelType: 'primary',
51+
defaultTemplateId: NHS_APP_TEMPLATE.id,
52+
},
53+
{
54+
cascadeGroups: ['standard'],
55+
channel: 'EMAIL',
56+
channelType: 'primary',
4957
defaultTemplateId: null,
5058
},
59+
{
60+
cascadeGroups: ['standard'],
61+
channel: 'SMS',
62+
channelType: 'primary',
63+
defaultTemplateId: SMS_TEMPLATE.id,
64+
},
5165
],
5266
},
53-
pageHeading: 'Choose an NHS App template',
54-
templateList: [NHS_APP_TEMPLATE],
55-
cascadeIndex: 0,
67+
pageHeading: 'Choose an email template',
68+
templateList: [EMAIL_TEMPLATE],
69+
cascadeIndex: 1,
5670
},
5771
getMockFormData({
58-
channelTemplate: NHS_APP_TEMPLATE.id,
72+
channelTemplate: EMAIL_TEMPLATE.id,
5973
})
6074
);
6175

6276
expect(mockUpdateRoutingConfig).toHaveBeenCalledWith(ROUTING_CONFIG.id, {
63-
...ROUTING_CONFIG,
6477
cascade: [
6578
{
6679
cascadeGroups: ['standard'],
6780
channel: 'NHSAPP',
6881
channelType: 'primary',
6982
defaultTemplateId: NHS_APP_TEMPLATE.id,
7083
},
84+
{
85+
cascadeGroups: ['standard'],
86+
channel: 'EMAIL',
87+
channelType: 'primary',
88+
defaultTemplateId: EMAIL_TEMPLATE.id,
89+
},
90+
{
91+
cascadeGroups: ['standard'],
92+
channel: 'SMS',
93+
channelType: 'primary',
94+
defaultTemplateId: SMS_TEMPLATE.id,
95+
},
7196
],
97+
cascadeGroupOverrides: ROUTING_CONFIG.cascadeGroupOverrides,
7298
});
7399

74100
expect(mockRedirect).toHaveBeenCalledWith(

frontend/src/__tests__/utils/message-plans.test.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -392,19 +392,17 @@ describe('Message plans actions', () => {
392392
},
393393
});
394394

395-
const response = await updateRoutingConfig(
396-
validRoutingConfigId,
397-
baseConfig
398-
);
395+
await expect(
396+
updateRoutingConfig(validRoutingConfigId, baseConfig)
397+
).rejects.toThrow('Failed to update message plan');
399398

400399
expect(routingConfigApiMock.update).toHaveBeenCalledWith(
401400
'mock-token',
402401
validRoutingConfigId,
403402
baseConfig
404403
);
405-
expect(response).toBeUndefined();
406404
expect(loggerMock.error).toHaveBeenCalledWith(
407-
'Failed to get routing configuration',
405+
'Failed to update message plan',
408406
expect.objectContaining({
409407
errorMeta: expect.objectContaining({ code: 400 }),
410408
})
@@ -428,7 +426,7 @@ describe('Message plans actions', () => {
428426
);
429427
expect(response).toBeUndefined();
430428
expect(loggerMock.error).toHaveBeenCalledWith(
431-
'Invalid routing configuration object',
429+
'Invalid message plan object',
432430
expect.any(Object)
433431
);
434432
});

frontend/src/app/message-plans/choose-email-template/[routingConfigId]/preview-template/[templateId]/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import {
44
MessagePlanAndTemplatePageProps,
5-
validateSubmittedEmailTemplate,
5+
validateEmailTemplate,
66
} from 'nhs-notify-web-template-management-utils';
77
import { getTemplate } from '@utils/form-actions';
88
import { redirect, RedirectType } from 'next/navigation';
@@ -26,7 +26,7 @@ const PreviewEmailTemplateFromMessagePlan = async (
2626

2727
const template = await getTemplate(templateId);
2828

29-
const validatedTemplate = validateSubmittedEmailTemplate(template);
29+
const validatedTemplate = validateEmailTemplate(template);
3030

3131
if (!validatedTemplate) {
3232
return redirect('/invalid-template', RedirectType.replace);

frontend/src/app/message-plans/choose-nhs-app-template/[routingConfigId]/preview-template/[templateId]/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import {
44
MessagePlanAndTemplatePageProps,
5-
validateSubmittedNHSAppTemplate,
5+
validateNHSAppTemplate,
66
} from 'nhs-notify-web-template-management-utils';
77
import { getTemplate } from '@utils/form-actions';
88
import { redirect, RedirectType } from 'next/navigation';
@@ -26,7 +26,7 @@ const PreviewNhsAppTemplateFromMessagePlan = async (
2626

2727
const template = await getTemplate(templateId);
2828

29-
const validatedTemplate = validateSubmittedNHSAppTemplate(template);
29+
const validatedTemplate = validateNHSAppTemplate(template);
3030

3131
if (!validatedTemplate) {
3232
return redirect('/invalid-template', RedirectType.replace);

frontend/src/app/message-plans/choose-standard-english-letter-template/[routingConfigId]/preview-template/[templateId]/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import {
44
MessagePlanAndTemplatePageProps,
5-
validateSubmittedLetterTemplate,
5+
validateLetterTemplate,
66
} from 'nhs-notify-web-template-management-utils';
77
import { getTemplate } from '@utils/form-actions';
88
import { redirect, RedirectType } from 'next/navigation';
@@ -26,7 +26,7 @@ const PreviewStandardEnglishLetterTemplateFromMessagePlan = async (
2626

2727
const template = await getTemplate(templateId);
2828

29-
const validatedTemplate = validateSubmittedLetterTemplate(template);
29+
const validatedTemplate = validateLetterTemplate(template);
3030

3131
if (!validatedTemplate) {
3232
return redirect('/invalid-template', RedirectType.replace);

frontend/src/app/message-plans/choose-text-message-template/[routingConfigId]/preview-template/[templateId]/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import {
44
MessagePlanAndTemplatePageProps,
5-
validateSubmittedSMSTemplate,
5+
validateSMSTemplate,
66
} from 'nhs-notify-web-template-management-utils';
77
import { getTemplate } from '@utils/form-actions';
88
import { redirect, RedirectType } from 'next/navigation';
@@ -26,7 +26,7 @@ const PreviewTextMessageTemplateFromMessagePlan = async (
2626

2727
const template = await getTemplate(templateId);
2828

29-
const validatedTemplate = validateSubmittedSMSTemplate(template);
29+
const validatedTemplate = validateSMSTemplate(template);
3030

3131
if (!validatedTemplate) {
3232
return redirect('/invalid-template', RedirectType.replace);

frontend/src/components/forms/ChooseChannelTemplate/server-action.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,16 @@ export async function chooseChannelTemplateAction(
3131
};
3232
}
3333

34-
messagePlan.cascade[cascadeIndex].defaultTemplateId =
35-
parsedForm.data.channelTemplate;
34+
const newCascade = messagePlan.cascade.map((item, index) =>
35+
index === cascadeIndex
36+
? { ...item, defaultTemplateId: parsedForm.data.channelTemplate }
37+
: item
38+
);
3639

37-
await updateRoutingConfig(messagePlan.id, messagePlan);
40+
await updateRoutingConfig(messagePlan.id, {
41+
cascade: newCascade,
42+
cascadeGroupOverrides: messagePlan.cascadeGroupOverrides,
43+
});
3844

3945
redirect(
4046
`/message-plans/choose-templates/${messagePlan.id}`,

frontend/src/utils/message-plans.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,16 +133,16 @@ export async function updateRoutingConfig(
133133
);
134134

135135
if (error) {
136-
logger.error('Failed to get routing configuration', error);
137-
return;
136+
logger.error('Failed to update message plan', error);
137+
throw new Error('Failed to update message plan');
138138
}
139139

140140
if (!data) return undefined;
141141

142142
const result = $RoutingConfig.safeParse(data);
143143

144144
if (!result.success) {
145-
logger.error('Invalid routing configuration object', result.error);
145+
logger.error('Invalid message plan object', result.error);
146146
return undefined;
147147
}
148148

0 commit comments

Comments
 (0)