@@ -191,4 +191,42 @@ module('Acceptance | search', function (hooks) {
191191 await visit ( '/search?q=rust&page=3&per_page=15&sort=new&all_keywords=fire ball' ) ;
192192 assert . verifySteps ( [ '/api/v1/crates' ] ) ;
193193 } ) ;
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+ } ) ;
194232} ) ;
0 commit comments