@@ -688,3 +688,49 @@ describe('Edge cases', () => {
688688 } ) ;
689689 } ) ;
690690} ) ;
691+
692+ describe ( 'Array validation' , ( ) => {
693+ describe ( 'should return an empty array as default when dataType is json' , ( ) => {
694+ const schema = z . object ( {
695+ testArray : z . object ( { foo : z . string ( ) } ) . array ( ) ,
696+ nested : z . object ( {
697+ arr : z . object ( { foo : z . string ( ) } ) . array ( )
698+ } )
699+ } ) ;
700+
701+ it ( 'with the default values' , async ( ) => {
702+ const form = await superValidate ( zod ( schema ) ) ;
703+ expect ( form . errors . testArray ?. _errors ) . toBeUndefined ( ) ;
704+ expect ( form . data . testArray ) . toEqual ( [ ] ) ;
705+ expect ( form . errors . nested ?. arr ?. _errors ) . toBeUndefined ( ) ;
706+ expect ( form . data . nested . arr ) . toEqual ( [ ] ) ;
707+ } ) ;
708+
709+ it ( 'when passing data directly' , async ( ) => {
710+ const form = await superValidate ( { testArray : undefined } , zod ( schema ) , { errors : true } ) ;
711+
712+ expect ( form . errors . testArray ?. _errors ) . toEqual ( [ 'Required' ] ) ;
713+ expect ( form . data . testArray ) . toEqual ( [ ] ) ;
714+ expect ( form . errors . nested ?. arr ?. _errors ) . toBeUndefined ( ) ;
715+ expect ( form . data . nested . arr ) . toEqual ( [ ] ) ;
716+ } ) ;
717+
718+ it ( 'when passing an empty object' , async ( ) => {
719+ const form = await superValidate ( { } , zod ( schema ) , { errors : true } ) ;
720+
721+ expect ( form . errors . testArray ) . toBeUndefined ( ) ;
722+ expect ( form . data . testArray ) . toEqual ( [ ] ) ;
723+ expect ( form . errors . nested ?. arr ?. _errors ) . toBeUndefined ( ) ;
724+ expect ( form . data . nested . arr ) . toEqual ( [ ] ) ;
725+ } ) ;
726+
727+ it ( 'when passing undefined' , async ( ) => {
728+ const form = await superValidate ( undefined , zod ( schema ) , { errors : true } ) ;
729+
730+ expect ( form . errors . testArray ) . toBeUndefined ( ) ;
731+ expect ( form . data . testArray ) . toEqual ( [ ] ) ;
732+ expect ( form . errors . nested ?. arr ?. _errors ) . toBeUndefined ( ) ;
733+ expect ( form . data . nested . arr ) . toEqual ( [ ] ) ;
734+ } ) ;
735+ } ) ;
736+ } ) ;
0 commit comments