@@ -713,6 +713,12 @@ async fn index_include_yanked() {
713713 assert_eq ! ( json. crates[ 1 ] . name, "newest_yanked" ) ;
714714 assert_eq ! ( json. crates[ 2 ] . name, "oldest_yanked" ) ;
715715 assert_eq ! ( json. crates[ 3 ] . name, "unyanked" ) ;
716+ assert_eq ! (
717+ default_versions_iter( & json. crates)
718+ . flatten( )
719+ . collect:: <Vec <_>>( ) ,
720+ [ "2.0.0" , "1.0.0" , "2.0.0" , "2.0.0" , ]
721+ ) ;
716722 }
717723
718724 // Do not include fully yanked (all versions were yanked) crates
@@ -721,6 +727,12 @@ async fn index_include_yanked() {
721727 assert_eq ! ( json. crates[ 0 ] . name, "newest_yanked" ) ;
722728 assert_eq ! ( json. crates[ 1 ] . name, "oldest_yanked" ) ;
723729 assert_eq ! ( json. crates[ 2 ] . name, "unyanked" ) ;
730+ assert_eq ! (
731+ default_versions_iter( & json. crates)
732+ . flatten( )
733+ . collect:: <Vec <_>>( ) ,
734+ [ "1.0.0" , "2.0.0" , "2.0.0" , ]
735+ ) ;
724736 }
725737}
726738
@@ -738,6 +750,7 @@ async fn yanked_versions_are_not_considered_for_max_version() {
738750
739751 for json in search_both ( & anon, "q=foo" ) . await {
740752 assert_eq ! ( json. meta. total, 1 ) ;
753+ assert_eq ! ( json. crates[ 0 ] . default_version, Some ( "1.0.0" . into( ) ) ) ;
741754 assert_eq ! ( json. crates[ 0 ] . max_version, "1.0.0" ) ;
742755 }
743756}
@@ -759,6 +772,7 @@ async fn max_stable_version() {
759772
760773 for json in search_both ( & anon, "q=foo" ) . await {
761774 assert_eq ! ( json. meta. total, 1 ) ;
775+ assert_eq ! ( json. crates[ 0 ] . default_version, Some ( "1.0.0" . into( ) ) ) ;
762776 assert_eq ! ( json. crates[ 0 ] . max_stable_version, Some ( "1.0.0" . to_string( ) ) ) ;
763777 }
764778}
@@ -929,6 +943,9 @@ async fn pagination_links_included_if_applicable() {
929943 . iter( )
930944 . all( |w| * w == 3 ) ) ;
931945 assert_eq ! ( page4. meta. total, 0 ) ;
946+ for p in [ page1, page2, page3, page4] {
947+ assert ! ( default_versions_iter( & p. crates) . all( Option :: is_some) ) ;
948+ }
932949}
933950
934951#[ tokio:: test( flavor = "multi_thread" ) ]
@@ -960,6 +977,7 @@ async fn seek_based_pagination() {
960977 assert_that ! ( resp. crates, len( eq( 1 ) ) ) ;
961978 url = Some ( new_url) ;
962979 assert_eq ! ( resp. meta. total, 3 ) ;
980+ assert ! ( default_versions_iter( & resp. crates) . all( Option :: is_some) ) ;
963981 } else {
964982 assert_that ! ( resp. crates, empty( ) ) ;
965983 assert_eq ! ( resp. meta. total, 0 ) ;
@@ -993,11 +1011,13 @@ async fn test_pages_work_even_with_seek_based_pagination() {
9931011 let first = anon. search ( "per_page=1" ) . await ;
9941012 assert ! ( first. meta. next_page. unwrap( ) . contains( "seek=" ) ) ;
9951013 assert_eq ! ( first. meta. total, 3 ) ;
1014+ assert ! ( default_versions_iter( & first. crates) . all( Option :: is_some) ) ;
9961015
9971016 // Calling with page=2 will revert to offset-based pagination
9981017 let second = anon. search ( "page=2&per_page=1" ) . await ;
9991018 assert ! ( second. meta. next_page. unwrap( ) . contains( "page=3" ) ) ;
10001019 assert_eq ! ( second. meta. total, 3 ) ;
1020+ assert ! ( default_versions_iter( & second. crates) . all( Option :: is_some) ) ;
10011021}
10021022
10031023#[ tokio:: test( flavor = "multi_thread" ) ]
@@ -1096,6 +1116,8 @@ async fn search_both<U: RequestHelper>(anon: &U, query: &str) -> [crate::tests::
10961116 . as_deref( )
10971117 . unwrap_or( "seek=" )
10981118 . contains( "seek=" ) ) ;
1119+ assert ! ( default_versions_iter( & offset. crates) . all( Option :: is_some) ) ;
1120+ assert ! ( default_versions_iter( & seek. crates) . all( Option :: is_some) ) ;
10991121 [ offset, seek]
11001122}
11011123
@@ -1126,6 +1148,7 @@ async fn page_with_seek<U: RequestHelper>(
11261148 assert_that ! ( resp. crates, len( eq( 1 ) ) ) ;
11271149 url = Some ( new_url. to_owned ( ) ) ;
11281150 assert_ne ! ( resp. meta. total, 0 ) ;
1151+ assert ! ( default_versions_iter( & resp. crates) . all( Option :: is_some) ) ;
11291152 } else {
11301153 assert_that ! ( resp. crates, empty( ) ) ;
11311154 assert_eq ! ( resp. meta. total, 0 ) ;
@@ -1134,3 +1157,9 @@ async fn page_with_seek<U: RequestHelper>(
11341157 }
11351158 ( results, calls)
11361159}
1160+
1161+ fn default_versions_iter (
1162+ crates : & [ crate :: tests:: EncodableCrate ] ,
1163+ ) -> impl Iterator < Item = & Option < String > > {
1164+ crates. iter ( ) . map ( |c| & c. default_version )
1165+ }
0 commit comments