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) {
153
153
let crate = schema . crates . findBy ( { name } ) ;
154
154
if ( ! crate ) return notFound ( ) ;
155
155
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 ) ) ;
157
162
let total = versions . length ;
158
163
let include = request . queryParams ?. include ?? '' ;
159
164
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) {
108
108
} ) ;
109
109
} ) ;
110
110
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
+
111
126
test ( 'include `release_tracks` meta' , async function ( assert ) {
112
127
let user = this . server . create ( 'user' ) ;
113
128
let crate = this . server . create ( 'crate' , { name : 'rand' } ) ;
You can’t perform that action at this time.
0 commit comments