@@ -78,10 +78,8 @@ const mockSuccessResponse = {
78
78
text : jest . fn ( ) ,
79
79
} ,
80
80
} ;
81
- const mockGetRetryDecider = getRetryDecider as jest . Mock ;
82
- const mockRetryResponse = { retryable : true } ;
83
- const mockNoRetryResponse = { retryable : false } ;
84
- const mockRetryDeciderResponse = ( ) => Promise . resolve ( mockRetryResponse ) ;
81
+ const mockGetRetryDecider = jest . mocked ( getRetryDecider ) ;
82
+ const mockRetryDeciderResponse = ( ) => Promise . resolve ( { retryable : true } ) ;
85
83
86
84
describe ( 'public APIs' , ( ) => {
87
85
beforeEach ( ( ) => {
@@ -431,45 +429,51 @@ describe('public APIs', () => {
431
429
} ) ;
432
430
433
431
it ( 'should not retry when retry is set to "no-retry"' , async ( ) => {
434
- expect . assertions ( 2 ) ;
432
+ expect . assertions ( 3 ) ;
435
433
await fn ( mockAmplifyInstance , {
436
434
apiName : 'restApi1' ,
437
435
path : '/items' ,
438
- retryStrategy : {
439
- strategy : 'no-retry' ,
436
+ options : {
437
+ retryStrategy : {
438
+ strategy : 'no-retry' ,
439
+ } ,
440
440
} ,
441
441
} ) . response ;
442
442
expect ( mockAuthenticatedHandler ) . toHaveBeenCalledWith (
443
443
expect . any ( Object ) ,
444
444
expect . objectContaining ( { retryDecider : expect . any ( Function ) } ) ,
445
445
) ;
446
446
const callArgs = mockAuthenticatedHandler . mock . calls [ 0 ] ;
447
+ expect ( mockGetRetryDecider ) . not . toHaveBeenCalled ( ) ;
447
448
const { retryDecider } = callArgs [ 1 ] ;
448
449
const result = await retryDecider ( ) ;
449
- expect ( result ) . toEqual ( mockNoRetryResponse ) ;
450
+ expect ( result ) . toEqual ( { retryable : false } ) ;
450
451
} ) ;
451
452
452
453
it ( 'should retry when retry is set to "jittered-exponential-backoff"' , async ( ) => {
453
- expect . assertions ( 2 ) ;
454
+ expect . assertions ( 3 ) ;
454
455
await fn ( mockAmplifyInstance , {
455
456
apiName : 'restApi1' ,
456
457
path : '/items' ,
457
- retryStrategy : {
458
- strategy : 'jittered-exponential-backoff' ,
458
+ options : {
459
+ retryStrategy : {
460
+ strategy : 'jittered-exponential-backoff' ,
461
+ } ,
459
462
} ,
460
463
} ) . response ;
461
464
expect ( mockAuthenticatedHandler ) . toHaveBeenCalledWith (
462
465
expect . any ( Object ) ,
463
466
expect . objectContaining ( { retryDecider : expect . any ( Function ) } ) ,
464
467
) ;
465
468
const callArgs = mockAuthenticatedHandler . mock . calls [ 0 ] ;
469
+ expect ( mockGetRetryDecider ) . toHaveBeenCalled ( ) ;
466
470
const { retryDecider } = callArgs [ 1 ] ;
467
471
const result = await retryDecider ( ) ;
468
- expect ( result ) . toEqual ( mockRetryResponse ) ;
472
+ expect ( result ) . toEqual ( { retryable : true } ) ;
469
473
} ) ;
470
474
471
475
it ( 'should retry when retry strategy is not provided' , async ( ) => {
472
- expect . assertions ( 2 ) ;
476
+ expect . assertions ( 3 ) ;
473
477
await fn ( mockAmplifyInstance , {
474
478
apiName : 'restApi1' ,
475
479
path : '/items' ,
@@ -479,13 +483,14 @@ describe('public APIs', () => {
479
483
expect . objectContaining ( { retryDecider : expect . any ( Function ) } ) ,
480
484
) ;
481
485
const callArgs = mockAuthenticatedHandler . mock . calls [ 0 ] ;
486
+ expect ( mockGetRetryDecider ) . toHaveBeenCalled ( ) ;
482
487
const { retryDecider } = callArgs [ 1 ] ;
483
488
const result = await retryDecider ( ) ;
484
- expect ( result ) . toEqual ( mockRetryResponse ) ;
489
+ expect ( result ) . toEqual ( { retryable : true } ) ;
485
490
} ) ;
486
491
487
492
it ( 'should retry and prefer the individual retry strategy over the library options' , async ( ) => {
488
- expect . assertions ( 2 ) ;
493
+ expect . assertions ( 3 ) ;
489
494
const mockAmplifyInstanceWithNoRetry = {
490
495
...mockAmplifyInstance ,
491
496
libraryOptions : {
@@ -501,8 +506,10 @@ describe('public APIs', () => {
501
506
await fn ( mockAmplifyInstanceWithNoRetry , {
502
507
apiName : 'restApi1' ,
503
508
path : 'items' ,
504
- retryStrategy : {
505
- strategy : 'jittered-exponential-backoff' ,
509
+ options : {
510
+ retryStrategy : {
511
+ strategy : 'jittered-exponential-backoff' ,
512
+ } ,
506
513
} ,
507
514
} ) . response ;
508
515
@@ -511,13 +518,14 @@ describe('public APIs', () => {
511
518
expect . objectContaining ( { retryDecider : expect . any ( Function ) } ) ,
512
519
) ;
513
520
const callArgs = mockAuthenticatedHandler . mock . calls [ 0 ] ;
521
+ expect ( mockGetRetryDecider ) . toHaveBeenCalled ( ) ;
514
522
const { retryDecider } = callArgs [ 1 ] ;
515
523
const result = await retryDecider ( ) ;
516
- expect ( result ) . toEqual ( mockRetryResponse ) ;
524
+ expect ( result ) . toEqual ( { retryable : true } ) ;
517
525
} ) ;
518
526
519
527
it ( 'should not retry and prefer the individual retry strategy over the library options' , async ( ) => {
520
- expect . assertions ( 2 ) ;
528
+ expect . assertions ( 3 ) ;
521
529
const mockAmplifyInstanceWithRetry = {
522
530
...mockAmplifyInstance ,
523
531
libraryOptions : {
@@ -533,8 +541,10 @@ describe('public APIs', () => {
533
541
await fn ( mockAmplifyInstanceWithRetry , {
534
542
apiName : 'restApi1' ,
535
543
path : 'items' ,
536
- retryStrategy : {
537
- strategy : 'no-retry' ,
544
+ options : {
545
+ retryStrategy : {
546
+ strategy : 'no-retry' ,
547
+ } ,
538
548
} ,
539
549
} ) . response ;
540
550
@@ -543,13 +553,14 @@ describe('public APIs', () => {
543
553
expect . objectContaining ( { retryDecider : expect . any ( Function ) } ) ,
544
554
) ;
545
555
const callArgs = mockAuthenticatedHandler . mock . calls [ 0 ] ;
556
+ expect ( mockGetRetryDecider ) . not . toHaveBeenCalled ( ) ;
546
557
const { retryDecider } = callArgs [ 1 ] ;
547
558
const result = await retryDecider ( ) ;
548
- expect ( result ) . toEqual ( mockNoRetryResponse ) ;
559
+ expect ( result ) . toEqual ( { retryable : false } ) ;
549
560
} ) ;
550
561
551
562
it ( 'should not retry when configured through library options' , async ( ) => {
552
- expect . assertions ( 2 ) ;
563
+ expect . assertions ( 3 ) ;
553
564
const mockAmplifyInstanceWithRetry = {
554
565
...mockAmplifyInstance ,
555
566
libraryOptions : {
@@ -572,9 +583,10 @@ describe('public APIs', () => {
572
583
expect . objectContaining ( { retryDecider : expect . any ( Function ) } ) ,
573
584
) ;
574
585
const callArgs = mockAuthenticatedHandler . mock . calls [ 0 ] ;
586
+ expect ( mockGetRetryDecider ) . not . toHaveBeenCalled ( ) ;
575
587
const { retryDecider } = callArgs [ 1 ] ;
576
588
const result = await retryDecider ( ) ;
577
- expect ( result ) . toEqual ( mockNoRetryResponse ) ;
589
+ expect ( result ) . toEqual ( { retryable : false } ) ;
578
590
} ) ;
579
591
} ) ;
580
592
} ) ;
0 commit comments