@@ -191,4 +191,42 @@ module('Acceptance | search', function (hooks) {
191
191
await visit ( '/search?q=rust&page=3&per_page=15&sort=new&all_keywords=fire ball' ) ;
192
192
assert . verifySteps ( [ '/api/v1/crates' ] ) ;
193
193
} ) ;
194
+
195
+ test ( 'supports `keyword:bla` filters' , async function ( assert ) {
196
+ this . server . get ( '/api/v1/crates' , function ( schema , request ) {
197
+ assert . step ( '/api/v1/crates' ) ;
198
+
199
+ assert . deepEqual ( request . queryParams , {
200
+ all_keywords : 'fire ball' ,
201
+ page : '3' ,
202
+ per_page : '15' ,
203
+ q : 'rust' ,
204
+ sort : 'new' ,
205
+ } ) ;
206
+
207
+ return { crates : [ ] , meta : { total : 0 } } ;
208
+ } ) ;
209
+
210
+ await visit ( '/search?q=rust keywords:fire,ball&page=3&per_page=15&sort=new' ) ;
211
+ assert . verifySteps ( [ '/api/v1/crates' ] ) ;
212
+ } ) ;
213
+
214
+ test ( '`all_keywords` query parameter takes precedence over `keyword` filters' , async function ( assert ) {
215
+ this . server . get ( '/api/v1/crates' , function ( schema , request ) {
216
+ assert . step ( '/api/v1/crates' ) ;
217
+
218
+ assert . deepEqual ( request . queryParams , {
219
+ all_keywords : 'fire ball' ,
220
+ page : '3' ,
221
+ per_page : '15' ,
222
+ q : 'rust keywords:foo' ,
223
+ sort : 'new' ,
224
+ } ) ;
225
+
226
+ return { crates : [ ] , meta : { total : 0 } } ;
227
+ } ) ;
228
+
229
+ await visit ( '/search?q=rust keywords:foo&page=3&per_page=15&sort=new&all_keywords=fire ball' ) ;
230
+ assert . verifySteps ( [ '/api/v1/crates' ] ) ;
231
+ } ) ;
194
232
} ) ;
0 commit comments