Skip to content

Commit 1900682

Browse files
committed
CCM-9692: tests pass
1 parent 19922c7 commit 1900682

File tree

1 file changed

+38
-16
lines changed

1 file changed

+38
-16
lines changed

lambdas/backend-client/src/__tests__/schemas/template-schema.test.ts

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import {
2+
$CreateUpdateLetterPropertiesWithType,
23
$CreateUpdateNonLetter,
3-
CreateUpdateTemplate,
4+
$CreateUpdateTemplate,
45
isCreateUpdateTemplateValid,
56
isTemplateDtoValid,
6-
TemplateDto,
7-
} from 'nhs-notify-backend-client';
8-
import { $CreateUpdateTemplate } from '../../schemas';
7+
} from '../../schemas';
8+
import type { CreateUpdateTemplate, TemplateDto } from '../../types/generated';
99

1010
describe('Template schemas', () => {
1111
test.each([
@@ -77,25 +77,31 @@ describe('Template schemas', () => {
7777
templateType: 'NHS_APP',
7878
},
7979
},
80+
{
81+
schema: $CreateUpdateTemplate,
82+
data: {
83+
name: ' ',
84+
templateType: 'LETTER',
85+
letterType: 'x0',
86+
language: 'en',
87+
},
88+
},
8089
])(
8190
'%p.templateType - should fail validation, when name, message or subject is whitespace',
8291
async ({ schema, data }) => {
8392
const result = schema.safeParse(data);
8493
const errorMessage = 'String must contain at least 1 character(s)';
8594

95+
const emptyFields = Object.entries(data).flatMap(([k, v]) =>
96+
v === ' ' ? [k] : []
97+
);
98+
8699
const errors = {
87-
fieldErrors: {
88-
message: [errorMessage],
89-
name: [errorMessage],
90-
},
100+
fieldErrors: Object.fromEntries(
101+
emptyFields.map((field) => [field, [errorMessage]])
102+
),
91103
};
92104

93-
if (data.templateType === 'EMAIL') {
94-
Object.assign(errors.fieldErrors, {
95-
subject: [errorMessage],
96-
});
97-
}
98-
99105
expect(result.error?.flatten()).toEqual(expect.objectContaining(errors));
100106
}
101107
);
@@ -176,7 +182,7 @@ describe('Template schemas', () => {
176182
);
177183
});
178184

179-
test('$EmailTemplateFields - should fail validation, when no subject', async () => {
185+
test('Email template fields - should fail validation, when no subject', async () => {
180186
const result = $CreateUpdateTemplate.safeParse({
181187
name: 'Test Template',
182188
message: 'a'.repeat(100_000),
@@ -192,12 +198,28 @@ describe('Template schemas', () => {
192198
);
193199
});
194200

201+
test('Letter template fields - should fail validation, when no letterType', async () => {
202+
const result = $CreateUpdateLetterPropertiesWithType.safeParse({
203+
name: 'Test Template',
204+
templateType: 'LETTER',
205+
language: 'en',
206+
});
207+
208+
expect(result.error?.flatten()).toEqual(
209+
expect.objectContaining({
210+
fieldErrors: {
211+
letterType: ['Required'],
212+
},
213+
})
214+
);
215+
});
216+
195217
test.each([
196218
'<element>failed</element>',
197219
'<element><nested>nested</nested></element>',
198220
'<element attribute="failed">failed</element>',
199221
])(
200-
'$NhsAppTemplateFields - should fail validation, when invalid characters are present %p',
222+
'App template fields - should fail validation, when invalid characters are present %p',
201223
async (message) => {
202224
const result = $CreateUpdateTemplate.safeParse({
203225
name: 'Test Template',

0 commit comments

Comments
 (0)