@@ -1055,6 +1055,55 @@ describe("AI SDK conversion utilities", () => {
10551055
10561056 expect ( ( result as any ) . cause ) . toBe ( originalError )
10571057 } )
1058+
1059+ it ( "should call onError with extracted message and original error" , ( ) => {
1060+ const originalError = new Error ( "Quota exceeded" )
1061+ const onError = vi . fn ( )
1062+
1063+ handleAiSdkError ( originalError , "Gemini" , { onError } )
1064+
1065+ expect ( onError ) . toHaveBeenCalledOnce ( )
1066+ expect ( onError ) . toHaveBeenCalledWith ( "Quota exceeded" , originalError )
1067+ } )
1068+
1069+ it ( "should use formatMessage to override default message format" , ( ) => {
1070+ const error = new Error ( "Rate limit hit" )
1071+ const formatMessage = ( msg : string ) => `Custom: ${ msg } `
1072+
1073+ const result = handleAiSdkError ( error , "Vertex" , { formatMessage } )
1074+
1075+ expect ( result . message ) . toBe ( "Custom: Rate limit hit" )
1076+ } )
1077+
1078+ it ( "should call onError and use formatMessage together" , ( ) => {
1079+ const originalError = {
1080+ name : "AI_APICallError" ,
1081+ message : "Forbidden" ,
1082+ status : 403 ,
1083+ }
1084+ const onError = vi . fn ( )
1085+ const formatMessage = ( msg : string ) => `Translated: ${ msg } `
1086+
1087+ const result = handleAiSdkError ( originalError , "Gemini" , { onError, formatMessage } )
1088+
1089+ // onError receives the extracted message
1090+ expect ( onError ) . toHaveBeenCalledOnce ( )
1091+ expect ( onError . mock . calls [ 0 ] [ 0 ] ) . toContain ( "403" )
1092+ expect ( onError . mock . calls [ 0 ] [ 1 ] ) . toBe ( originalError )
1093+
1094+ // formatMessage overrides the thrown message
1095+ expect ( result . message ) . toMatch ( / ^ T r a n s l a t e d : / )
1096+
1097+ // Status code is still preserved
1098+ expect ( ( result as any ) . status ) . toBe ( 403 )
1099+ } )
1100+
1101+ it ( "should use default format when no options are provided" , ( ) => {
1102+ const error = new Error ( "Something broke" )
1103+ const result = handleAiSdkError ( error , "TestProvider" )
1104+
1105+ expect ( result . message ) . toBe ( "TestProvider: Something broke" )
1106+ } )
10581107 } )
10591108
10601109 describe ( "extractMessageFromResponseBody" , ( ) => {
0 commit comments