@@ -107,6 +107,10 @@ async fn test_sorting() {
107107 for ( json, expect) in resp. iter ( ) . zip ( expects) {
108108 assert_eq ! ( json. versions[ 0 ] . num, expect) ;
109109 assert_eq ! ( json. meta. total as usize , expects. len( ) ) ;
110+ assert_eq ! (
111+ json. meta. release_tracks,
112+ Some ( json!( { "1" : { "highest" : "1.0.0" } } ) )
113+ ) ;
110114 }
111115 assert_eq ! ( calls as usize , expects. len( ) + 1 ) ;
112116
@@ -131,7 +135,7 @@ async fn test_seek_based_pagination_semver_sorting() {
131135 let user = user. as_model ( ) ;
132136 app. db ( |conn| {
133137 CrateBuilder :: new ( "foo_versions" , user. id )
134- . version ( "0.5.1" )
138+ . version ( VersionBuilder :: new ( "0.5.1" ) . yanked ( true ) )
135139 . version ( VersionBuilder :: new ( "1.0.0" ) . rust_version ( "1.64" ) )
136140 . version ( "0.5.0" )
137141 . expect_build ( conn) ;
@@ -147,6 +151,10 @@ async fn test_seek_based_pagination_semver_sorting() {
147151
148152 let url = "/api/v1/crates/foo_versions/versions" ;
149153 let expects = [ "1.0.0" , "0.5.1" , "0.5.0" ] ;
154+ let release_tracks = Some ( json ! ( {
155+ "1" : { "highest" : "1.0.0" } ,
156+ "0.5" : { "highest" : "0.5.0" }
157+ } ) ) ;
150158
151159 // per_page larger than the number of versions
152160 let json: VersionList = anon
@@ -155,13 +163,15 @@ async fn test_seek_based_pagination_semver_sorting() {
155163 . good ( ) ;
156164 assert_eq ! ( nums( & json. versions) , expects) ;
157165 assert_eq ! ( json. meta. total as usize , expects. len( ) ) ;
166+ assert_eq ! ( json. meta. release_tracks, release_tracks) ;
158167
159168 let json: VersionList = anon
160169 . get_with_query ( url, "per_page=1&sort=semver" )
161170 . await
162171 . good ( ) ;
163172 assert_eq ! ( nums( & json. versions) , expects[ 0 ..1 ] ) ;
164173 assert_eq ! ( json. meta. total as usize , expects. len( ) ) ;
174+ assert_eq ! ( json. meta. release_tracks, release_tracks) ;
165175
166176 let seek = json
167177 . meta
@@ -178,6 +188,7 @@ async fn test_seek_based_pagination_semver_sorting() {
178188 assert_eq ! ( nums( & json. versions) , expects[ 1 ..] ) ;
179189 assert ! ( json. meta. next_page. is_none( ) ) ;
180190 assert_eq ! ( json. meta. total as usize , expects. len( ) ) ;
191+ assert_eq ! ( json. meta. release_tracks, release_tracks) ;
181192
182193 // per_page euqal to the number of remain versions
183194 let json: VersionList = anon
@@ -187,6 +198,7 @@ async fn test_seek_based_pagination_semver_sorting() {
187198 assert_eq ! ( nums( & json. versions) , expects[ 1 ..] ) ;
188199 assert ! ( json. meta. next_page. is_some( ) ) ;
189200 assert_eq ! ( json. meta. total as usize , expects. len( ) ) ;
201+ assert_eq ! ( json. meta. release_tracks, release_tracks) ;
190202
191203 // A decodable seek value, MTAwCg (100), but doesn't actually exist
192204 let json: VersionList = anon
@@ -196,6 +208,7 @@ async fn test_seek_based_pagination_semver_sorting() {
196208 assert_eq ! ( json. versions. len( ) , 0 ) ;
197209 assert ! ( json. meta. next_page. is_none( ) ) ;
198210 assert_eq ! ( json. meta. total, 0 ) ;
211+ assert_eq ! ( json. meta. release_tracks, release_tracks) ;
199212}
200213
201214#[ tokio:: test( flavor = "multi_thread" ) ]
@@ -242,6 +255,7 @@ pub struct VersionList {
242255pub struct ResponseMeta {
243256 pub total : i64 ,
244257 pub next_page : Option < String > ,
258+ pub release_tracks : Option < serde_json:: Value > ,
245259}
246260
247261fn nums ( versions : & [ EncodableVersion ] ) -> Vec < String > {
0 commit comments