@@ -8,6 +8,8 @@ import { preparePaginationResolver } from '../paginationResolver';
8
8
const { GraphQLInt } = graphql ;
9
9
10
10
describe ( 'paginationResolver' , ( ) => {
11
+ const spyFindManyResolve = jest . spyOn ( userTypeComposer . getResolver ( 'findMany' ) , 'resolve' ) ;
12
+ const spyCountResolve = jest . spyOn ( userTypeComposer . getResolver ( 'count' ) , 'resolve' ) ;
11
13
const paginationResolver = preparePaginationResolver ( userTypeComposer , {
12
14
countResolverName : 'count' ,
13
15
findResolverName : 'findMany' ,
@@ -252,6 +254,41 @@ describe('paginationResolver', () => {
252
254
} ) ;
253
255
254
256
describe ( 'filter tests with resolve' , ( ) => {
257
+ it ( 'should pass `filter` arg to `findResolverfindMany` and `count` resolvers' , async ( ) => {
258
+ spyFindManyResolve . mockClear ( ) ;
259
+ spyCountResolve . mockClear ( ) ;
260
+ await paginationResolver . resolve ( {
261
+ args : {
262
+ filter : {
263
+ gender : 'm' ,
264
+ } ,
265
+ } ,
266
+ projection : {
267
+ count : true ,
268
+ items : {
269
+ name : true ,
270
+ } ,
271
+ } ,
272
+ } ) ;
273
+ expect ( spyFindManyResolve . mock . calls ) . toEqual ( [
274
+ [
275
+ {
276
+ args : { filter : { gender : 'm' } , limit : 6 } ,
277
+ projection : { count : true , items : { name : true } , name : true } ,
278
+ } ,
279
+ ] ,
280
+ ] ) ;
281
+ expect ( spyCountResolve . mock . calls ) . toEqual ( [
282
+ [
283
+ {
284
+ args : { filter : { gender : 'm' } } ,
285
+ projection : { count : true , items : { name : true } } ,
286
+ rawQuery : undefined ,
287
+ } ,
288
+ ] ,
289
+ ] ) ;
290
+ } ) ;
291
+
255
292
it ( 'should add additional filtering' , async ( ) => {
256
293
const result = await paginationResolver . resolve ( {
257
294
args : {
@@ -284,6 +321,41 @@ describe('paginationResolver', () => {
284
321
} ) ;
285
322
} ) ;
286
323
324
+ describe ( 'sort tests with resolve' , ( ) => {
325
+ it ( 'should pass `sort` arg to `findResolverfindMany` but not to `count` resolvers' , async ( ) => {
326
+ spyFindManyResolve . mockClear ( ) ;
327
+ spyCountResolve . mockClear ( ) ;
328
+ await paginationResolver . resolve ( {
329
+ args : {
330
+ sort : { _id : 1 } ,
331
+ } ,
332
+ projection : {
333
+ count : true ,
334
+ items : {
335
+ name : true ,
336
+ } ,
337
+ } ,
338
+ } ) ;
339
+ expect ( spyFindManyResolve . mock . calls ) . toEqual ( [
340
+ [
341
+ {
342
+ args : { limit : 6 , sort : { _id : 1 } } ,
343
+ projection : { count : true , items : { name : true } , name : true } ,
344
+ } ,
345
+ ] ,
346
+ ] ) ;
347
+ expect ( spyCountResolve . mock . calls ) . toEqual ( [
348
+ [
349
+ {
350
+ args : { filter : { } } ,
351
+ projection : { count : true , items : { name : true } } ,
352
+ rawQuery : undefined ,
353
+ } ,
354
+ ] ,
355
+ ] ) ;
356
+ } ) ;
357
+ } ) ;
358
+
287
359
describe ( 'resolver payload' , ( ) => {
288
360
it ( 'should have correct pageInfo for first page' , async ( ) => {
289
361
const result = await paginationResolver . resolve ( {
0 commit comments