@@ -8,11 +8,12 @@ import {
88 addFieldsWithOperator ,
99 OPERATORS_FIELDNAME ,
1010} from '../filter' ;
11+ import GraphQLMongoID from '../../../types/mongoid' ;
1112import { UserModel } from '../../../__mocks__/userModel' ;
1213import { composeWithMongoose } from '../../../composeWithMongoose' ;
1314import typeStorage from '../../../typeStorage' ;
1415
15- const { GraphQLInputObjectType, GraphQLNonNull } = graphql ;
16+ const { GraphQLInputObjectType, GraphQLNonNull, GraphQLList } = graphql ;
1617
1718describe ( 'Resolver helper `filter` ->' , ( ) => {
1819 let UserTypeComposer ;
@@ -111,6 +112,15 @@ describe('Resolver helper `filter` ->', () => {
111112 expect ( args . filter . type ) . toBeInstanceOf ( GraphQLInputObjectType ) ;
112113 } ) ;
113114
115+ it ( 'should return filter with field _ids' , ( ) => {
116+ const args = filterHelperArgs ( UserTypeComposer , UserModel , {
117+ filterTypeName : 'FilterUserType' ,
118+ } ) ;
119+ const itc = new InputTypeComposer ( args . filter . type ) ;
120+ expect ( itc . getFieldType ( '_ids' ) ) . toBeInstanceOf ( GraphQLList ) ;
121+ expect ( itc . getFieldType ( '_ids' ) . ofType ) . toBe ( GraphQLMongoID ) ;
122+ } ) ;
123+
114124 it ( 'should for opts.isRequired=true return GraphQLNonNull' , ( ) => {
115125 const args = filterHelperArgs ( UserTypeComposer , UserModel , {
116126 filterTypeName : 'FilterUserType' ,
@@ -172,17 +182,12 @@ describe('Resolver helper `filter` ->', () => {
172182
173183 describe ( 'filterHelper()' , ( ) => {
174184 let spyWhereFn ;
175- let spyWhere2Fn ;
176185 let spyFindFn ;
177186 let resolveParams : any ;
178187
179188 beforeEach ( ( ) => {
180189 spyWhereFn = jest . fn ( ( ) => {
181- spyWhere2Fn = jest . fn ( ) ;
182- return {
183- ...UserModel . find ( ) ,
184- where : spyWhere2Fn ,
185- } ;
190+ return resolveParams . query ;
186191 } ) ;
187192
188193 spyFindFn = jest . fn ( ) ;
@@ -208,6 +213,17 @@ describe('Resolver helper `filter` ->', () => {
208213 expect ( spyWhereFn ) . toBeCalledWith ( { name : 'nodkz' } ) ;
209214 } ) ;
210215
216+ it ( 'should call query.where if args.filter provided with _ids' , ( ) => {
217+ resolveParams . args = {
218+ filter : {
219+ age : 30 ,
220+ _ids : [ 1 , 2 , 3 ] ,
221+ } ,
222+ } ;
223+ filterHelper ( resolveParams ) ;
224+ expect ( spyWhereFn . mock . calls ) . toEqual ( [ [ { _id : { $in : [ 1 , 2 , 3 ] } } ] , [ { age : 30 } ] ] ) ;
225+ } ) ;
226+
211227 it ( 'should convert deep object in args.filter to dotted object' , ( ) => {
212228 resolveParams . args = {
213229 filter : {
@@ -246,8 +262,10 @@ describe('Resolver helper `filter` ->', () => {
246262 } ;
247263
248264 filterHelper ( resolveParams ) ;
249- expect ( spyWhereFn ) . toBeCalledWith ( { age : { $gt : 10 , $lt : 20 } } ) ;
250- expect ( spyWhere2Fn ) . toBeCalledWith ( { age : { max : 30 } , active : true } ) ;
265+ expect ( spyWhereFn . mock . calls ) . toEqual ( [
266+ [ { age : { $gt : 10 , $lt : 20 } } ] ,
267+ [ { active : true , age : { max : 30 } } ] ,
268+ ] ) ;
251269 } ) ;
252270 } ) ;
253271} ) ;
0 commit comments