@@ -344,60 +344,61 @@ describe('ensureError', () => {
344344 expect ( result ) . toBe ( originalError ) ;
345345 } ) ;
346346
347- it ( 'converts string to Error with string as message ' , ( ) => {
347+ it ( 'converts string to Error and preserves original as cause ' , ( ) => {
348348 const result = ensureError ( 'something went wrong' ) ;
349349
350350 expect ( result ) . toBeInstanceOf ( Error ) ;
351- expect ( result . message ) . toBe ( 'something went wrong' ) ;
352- } ) ;
353-
354- it ( 'converts number to Error' , ( ) => {
355- const result = ensureError ( 42 ) ;
356-
357- expect ( result ) . toBeInstanceOf ( Error ) ;
358- expect ( result . message ) . toBe ( '42' ) ;
351+ expect ( result . message ) . toBe ( 'Unknown error' ) ;
352+ expect ( result . cause ) . toBe ( 'something went wrong' ) ;
359353 } ) ;
360354
361- it ( 'converts object to Error using String()' , ( ) => {
362- const result = ensureError ( { some : 'object' } ) ;
355+ it ( 'converts object to Error and preserves original as cause' , ( ) => {
356+ const originalObject = { some : 'object' } ;
357+ const result = ensureError ( originalObject ) ;
363358
364359 expect ( result ) . toBeInstanceOf ( Error ) ;
365- expect ( result . message ) . toBe ( '[object Object]' ) ;
360+ expect ( result . message ) . toBe ( 'Unknown error' ) ;
361+ expect ( result . cause ) . toBe ( originalObject ) ;
366362 } ) ;
367363
368- it ( 'handles null with descriptive message' , ( ) => {
364+ it ( 'handles null with descriptive message and preserves as cause ' , ( ) => {
369365 const result = ensureError ( null ) ;
370366
371367 expect ( result ) . toBeInstanceOf ( Error ) ;
372368 expect ( result . message ) . toBe ( 'Unknown error' ) ;
369+ expect ( result . cause ) . toBeNull ( ) ;
373370 } ) ;
374371
375- it ( 'handles undefined with descriptive message' , ( ) => {
372+ it ( 'handles undefined with descriptive message and preserves as cause ' , ( ) => {
376373 const result = ensureError ( undefined ) ;
377374
378375 expect ( result ) . toBeInstanceOf ( Error ) ;
379376 expect ( result . message ) . toBe ( 'Unknown error' ) ;
377+ expect ( result . cause ) . toBeUndefined ( ) ;
380378 } ) ;
381379
382380 it ( 'appends context to message for null' , ( ) => {
383381 const result = ensureError ( null , 'fetchData' ) ;
384382
385383 expect ( result ) . toBeInstanceOf ( Error ) ;
386384 expect ( result . message ) . toBe ( 'Unknown error (fetchData)' ) ;
385+ expect ( result . cause ) . toBeNull ( ) ;
387386 } ) ;
388387
389388 it ( 'appends context to message for undefined' , ( ) => {
390389 const result = ensureError ( undefined , 'processInput' ) ;
391390
392391 expect ( result ) . toBeInstanceOf ( Error ) ;
393392 expect ( result . message ) . toBe ( 'Unknown error (processInput)' ) ;
393+ expect ( result . cause ) . toBeUndefined ( ) ;
394394 } ) ;
395395
396- it ( 'appends context for non-Error values' , ( ) => {
396+ it ( 'appends context for non-Error values and preserves original as cause ' , ( ) => {
397397 const result = ensureError ( 'network failure' , 'apiCall' ) ;
398398
399399 expect ( result ) . toBeInstanceOf ( Error ) ;
400- expect ( result . message ) . toBe ( 'network failure (apiCall)' ) ;
400+ expect ( result . message ) . toBe ( 'Unknown error (apiCall)' ) ;
401+ expect ( result . cause ) . toBe ( 'network failure' ) ;
401402 } ) ;
402403
403404 it ( 'does NOT add context to existing Error instances' , ( ) => {
0 commit comments