11import {
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
1010describe ( '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