@@ -911,3 +911,65 @@ describe('useAJVForm should properly set errors programmatically using setErrors
911911    expect ( result . eventUrl . isRequired ) . toEqual ( true ) ; 
912912  } ) ; 
913913} ) ; 
914+ 
915+ describe ( 'useAJVForm with error handling' ,  ( )  =>  { 
916+   it ( 'should set initial errors from options' ,  ( )  =>  { 
917+     const  initialData  =  {  title : ''  } ; 
918+     const  schema : JSONSchemaType < {  title : string  } >  =  { 
919+       type : 'object' , 
920+       required : [ 'title' ] , 
921+       properties : { 
922+         title : {  type : 'string'  } , 
923+       } , 
924+     } ; 
925+ 
926+     const  errors  =  [ 
927+       { 
928+         instancePath : '/title' , 
929+         keyword : 'required' , 
930+         params : {  missingProperty : 'title'  } , 
931+         schemaPath : '#/required' , 
932+       } , 
933+     ] ; 
934+ 
935+     const  {  result }  =  renderHook ( ( )  =>  useAJVForm ( initialData ,  schema ,  {  errors } ) ) ; 
936+ 
937+     expect ( result . current . state . title . error ) . toBe ( 'title is required.' ) ; 
938+     expect ( result . current . isValid ) . toBe ( false ) ; 
939+   } ) ; 
940+ 
941+   it ( 'should update errors when options.errors changes' ,  ( )  =>  { 
942+     const  initialData  =  {  title : ''  } ; 
943+     const  schema : JSONSchemaType < {  title : string  } >  =  { 
944+       type : 'object' , 
945+       required : [ 'title' ] , 
946+       properties : { 
947+         title : {  type : 'string'  } , 
948+       } , 
949+     } ; 
950+ 
951+     const  {  result,  rerender }  =  renderHook ( 
952+       ( props )  =>  useAJVForm ( initialData ,  schema ,  props ) , 
953+       {  initialProps : { }  } , 
954+     ) ; 
955+ 
956+     expect ( result . current . state . title . error ) . toBe ( '' ) ; 
957+ 
958+     rerender ( { 
959+       errors : [ 
960+         { 
961+           instancePath : '/title' , 
962+           keyword : 'minLength' , 
963+           params : {  limit : 3  } , 
964+           schemaPath : '#/properties/title/minLength' , 
965+         } , 
966+       ] , 
967+     } ) ; 
968+ 
969+     expect ( result . current . state . title . error ) . toBe ( 
970+       'Should be at least 3 characters long.' , 
971+     ) ; 
972+ 
973+     expect ( result . current . isValid ) . toBe ( false ) ; 
974+   } ) ; 
975+ } ) ; 
0 commit comments