@@ -526,6 +526,7 @@ pub(crate) use seek;
526
526
mod tests {
527
527
use super :: * ;
528
528
use http:: { Method , Request , StatusCode } ;
529
+ use insta:: assert_snapshot;
529
530
530
531
#[ test]
531
532
fn no_pagination_param ( ) {
@@ -536,17 +537,12 @@ mod tests {
536
537
537
538
#[ test]
538
539
fn page_param_parsing ( ) {
539
- let assert_error =
540
- |query, msg| assert_pagination_error ( PaginationOptions :: builder ( ) , query, msg) ;
541
-
542
- let expected = "Failed to deserialize query string: cannot parse integer from empty string" ;
543
- assert_error ( "page=" , expected) ;
544
- let expected = "Failed to deserialize query string: invalid digit found in string" ;
545
- assert_error ( "page=not_a_number" , expected) ;
546
- let expected = "Failed to deserialize query string: invalid digit found in string" ;
547
- assert_error ( "page=1.0" , expected) ;
548
- let expected = "Failed to deserialize query string: invalid value: integer `0`, expected a nonzero u32" ;
549
- assert_error ( "page=0" , expected) ;
540
+ let error = |query| pagination_error ( PaginationOptions :: builder ( ) , query) ;
541
+
542
+ assert_snapshot ! ( error( "page=" ) , @"Failed to deserialize query string: cannot parse integer from empty string" ) ;
543
+ assert_snapshot ! ( error( "page=not_a_number" ) , @"Failed to deserialize query string: invalid digit found in string" ) ;
544
+ assert_snapshot ! ( error( "page=1.0" ) , @"Failed to deserialize query string: invalid digit found in string" ) ;
545
+ assert_snapshot ! ( error( "page=0" ) , @"Failed to deserialize query string: invalid value: integer `0`, expected a nonzero u32" ) ;
550
546
551
547
let pagination = PaginationOptions :: builder ( )
552
548
. gather ( & mock ( "page=5" ) )
@@ -556,18 +552,13 @@ mod tests {
556
552
557
553
#[ test]
558
554
fn per_page_param_parsing ( ) {
559
- let assert_error =
560
- |query, msg| assert_pagination_error ( PaginationOptions :: builder ( ) , query, msg) ;
561
-
562
- let expected = "Failed to deserialize query string: cannot parse integer from empty string" ;
563
- assert_error ( "per_page=" , expected) ;
564
- let expected = "Failed to deserialize query string: invalid digit found in string" ;
565
- assert_error ( "per_page=not_a_number" , expected) ;
566
- let expected = "Failed to deserialize query string: invalid digit found in string" ;
567
- assert_error ( "per_page=1.0" , expected) ;
568
- assert_error ( "per_page=101" , "cannot request more than 100 items" ) ;
569
- let expected = "Failed to deserialize query string: invalid value: integer `0`, expected a nonzero u32" ;
570
- assert_error ( "per_page=0" , expected) ;
555
+ let error = |query| pagination_error ( PaginationOptions :: builder ( ) , query) ;
556
+
557
+ assert_snapshot ! ( error( "per_page=" ) , @"Failed to deserialize query string: cannot parse integer from empty string" ) ;
558
+ assert_snapshot ! ( error( "per_page=not_a_number" ) , @"Failed to deserialize query string: invalid digit found in string" ) ;
559
+ assert_snapshot ! ( error( "per_page=1.0" ) , @"Failed to deserialize query string: invalid digit found in string" ) ;
560
+ assert_snapshot ! ( error( "per_page=101" ) , @"cannot request more than 100 items" ) ;
561
+ assert_snapshot ! ( error( "per_page=0" ) , @"Failed to deserialize query string: invalid value: integer `0`, expected a nonzero u32" ) ;
571
562
572
563
let pagination = PaginationOptions :: builder ( )
573
564
. gather ( & mock ( "per_page=5" ) )
@@ -577,11 +568,8 @@ mod tests {
577
568
578
569
#[ test]
579
570
fn seek_param_parsing ( ) {
580
- assert_pagination_error (
581
- PaginationOptions :: builder ( ) ,
582
- "seek=OTg" ,
583
- "?seek= is not supported for this request" ,
584
- ) ;
571
+ let error = pagination_error ( PaginationOptions :: builder ( ) , "seek=OTg" ) ;
572
+ assert_snapshot ! ( error, @"?seek= is not supported for this request" ) ;
585
573
586
574
let pagination = PaginationOptions :: builder ( )
587
575
. enable_seek ( true )
@@ -600,25 +588,20 @@ mod tests {
600
588
601
589
#[ test]
602
590
fn both_page_and_seek ( ) {
603
- assert_pagination_error (
604
- PaginationOptions :: builder ( ) ,
605
- "page=1&seek=OTg" ,
606
- "providing both ?page= and ?seek= is unsupported" ,
607
- ) ;
608
- assert_pagination_error (
591
+ let error = pagination_error ( PaginationOptions :: builder ( ) , "page=1&seek=OTg" ) ;
592
+ assert_snapshot ! ( error, @"providing both ?page= and ?seek= is unsupported" ) ;
593
+
594
+ let error = pagination_error (
609
595
PaginationOptions :: builder ( ) . enable_seek ( true ) ,
610
596
"page=1&seek=OTg" ,
611
- "providing both ?page= and ?seek= is unsupported" ,
612
597
) ;
598
+ assert_snapshot ! ( error, @"providing both ?page= and ?seek= is unsupported" ) ;
613
599
}
614
600
615
601
#[ test]
616
602
fn disabled_pages ( ) {
617
- assert_pagination_error (
618
- PaginationOptions :: builder ( ) . enable_pages ( false ) ,
619
- "page=1" ,
620
- "?page= is not supported for this request" ,
621
- ) ;
603
+ let error = pagination_error ( PaginationOptions :: builder ( ) . enable_pages ( false ) , "page=1" ) ;
604
+ assert_snapshot ! ( error, @"?page= is not supported for this request" ) ;
622
605
}
623
606
624
607
#[ test]
@@ -751,11 +734,12 @@ mod tests {
751
734
. 0
752
735
}
753
736
754
- fn assert_pagination_error ( options : PaginationOptionsBuilder , query : & str , message : & str ) {
737
+ fn pagination_error ( options : PaginationOptionsBuilder , query : & str ) -> String {
755
738
let error = options. gather ( & mock ( query) ) . unwrap_err ( ) ;
756
- assert_eq ! ( error. to_string( ) , message) ;
757
739
758
740
let response = error. response ( ) ;
759
741
assert_eq ! ( response. status( ) , StatusCode :: BAD_REQUEST ) ;
742
+
743
+ error. to_string ( )
760
744
}
761
745
}
0 commit comments