File tree Expand file tree Collapse file tree 2 files changed +21
-1
lines changed
tests/mirage/crates/versions Expand file tree Collapse file tree 2 files changed +21
-1
lines changed Original file line number Diff line number Diff line change @@ -153,7 +153,12 @@ export function register(server) {
153153 let crate = schema . crates . findBy ( { name } ) ;
154154 if ( ! crate ) return notFound ( ) ;
155155
156- let versions = crate . versions . sort ( ( a , b ) => compareIsoDates ( b . created_at , a . created_at ) ) ;
156+ let versions = crate . versions ;
157+ let { ids } = request . queryParams ;
158+ if ( ids ) {
159+ versions = versions . filter ( version => ids . includes ( version . num ) ) ;
160+ }
161+ versions = versions . sort ( ( a , b ) => compareIsoDates ( b . created_at , a . created_at ) ) ;
157162 let total = versions . length ;
158163 let include = request . queryParams ?. include ?? '' ;
159164 let release_tracks = include . split ( ',' ) . includes ( 'release_tracks' ) && releaseTracks ( crate . versions ) ;
Original file line number Diff line number Diff line change @@ -108,6 +108,21 @@ module('Mirage | GET /api/v1/crates/:id/versions', function (hooks) {
108108 } ) ;
109109 } ) ;
110110
111+ test ( 'supports multiple `ids[]` parameters' , async function ( assert ) {
112+ let user = this . server . create ( 'user' ) ;
113+ let crate = this . server . create ( 'crate' , { name : 'rand' } ) ;
114+ this . server . create ( 'version' , { crate, num : '1.0.0' } ) ;
115+ this . server . create ( 'version' , { crate, num : '1.1.0' , publishedBy : user } ) ;
116+ this . server . create ( 'version' , { crate, num : '1.2.0' , rust_version : '1.69' } ) ;
117+ let response = await fetch ( '/api/v1/crates/rand/versions?ids[]=1.0.0&ids[]=1.2.0' ) ;
118+ assert . strictEqual ( response . status , 200 ) ;
119+ let json = await response . json ( ) ;
120+ assert . deepEqual (
121+ json . versions . map ( v => v . num ) ,
122+ [ '1.0.0' , '1.2.0' ] ,
123+ ) ;
124+ } ) ;
125+
111126 test ( 'include `release_tracks` meta' , async function ( assert ) {
112127 let user = this . server . create ( 'user' ) ;
113128 let crate = this . server . create ( 'crate' , { name : 'rand' } ) ;
You can’t perform that action at this time.
0 commit comments