File tree Expand file tree Collapse file tree 8 files changed +85
-7
lines changed Expand file tree Collapse file tree 8 files changed +85
-7
lines changed Original file line number Diff line number Diff line change 22
33import { expect } from 'chai' ;
44import { GraphQLNonNull } from 'graphql' ;
5+ import { Query } from 'mongoose' ;
56import { Resolver , TypeComposer } from 'graphql-compose' ;
67import { UserModel } from '../../__mocks__/userModel.js' ;
78import removeById from '../removeById' ;
@@ -113,6 +114,20 @@ describe('removeById() ->', () => {
113114 } ) ;
114115 expect ( result . record ) . instanceof ( UserModel ) ;
115116 } ) ;
117+
118+ it ( 'should call `beforeQuery` method with non-executed `query` as arg' , async ( ) => {
119+ let beforeQueryCalled = false ;
120+ const result = await removeById ( UserModel , UserTypeComposer ) . resolve ( {
121+ args : { _id : user . id } ,
122+ beforeQuery : ( query ) => {
123+ expect ( query ) . instanceof ( Query ) ;
124+ beforeQueryCalled = true ;
125+ return query ;
126+ }
127+ } ) ;
128+ expect ( beforeQueryCalled ) . to . be . true ;
129+ expect ( result . record ) . instanceof ( UserModel ) ;
130+ } ) ;
116131 } ) ;
117132
118133 describe ( 'Resolver.getOutputType()' , ( ) => {
Original file line number Diff line number Diff line change 22
33import { expect } from 'chai' ;
44import { GraphQLInt , GraphQLNonNull } from 'graphql' ;
5+ import { Query } from 'mongoose' ;
56import Resolver from 'graphql-compose/lib/resolver/resolver' ;
67import TypeComposer from 'graphql-compose/lib/typeComposer' ;
78import { UserModel } from '../../__mocks__/userModel.js' ;
@@ -117,6 +118,22 @@ describe('removeMany() ->', () => {
117118 } ) ;
118119 expect ( result ) . have . property ( 'numAffected' , 2 ) ;
119120 } ) ;
121+
122+ it ( 'should call `beforeQuery` method with non-executed `query` as arg' , async ( ) => {
123+ let beforeQueryCalled = false ;
124+ const result = await removeMany ( UserModel , UserTypeComposer ) . resolve ( {
125+ args : {
126+ filter : { gender : 'female' } ,
127+ } ,
128+ beforeQuery : ( query ) => {
129+ expect ( query ) . instanceof ( Query ) ;
130+ beforeQueryCalled = true ;
131+ return query ;
132+ }
133+ } ) ;
134+ expect ( beforeQueryCalled ) . to . be . true ;
135+ expect ( result ) . have . property ( 'numAffected' , 2 ) ;
136+ } ) ;
120137 } ) ;
121138
122139 describe ( 'Resolver.getOutputType()' , ( ) => {
Original file line number Diff line number Diff line change 22
33import { expect } from 'chai' ;
44import { Resolver , TypeComposer } from 'graphql-compose' ;
5+ import { Query } from 'mongoose' ;
56import { UserModel } from '../../__mocks__/userModel.js' ;
67import removeOne from '../removeOne' ;
78import GraphQLMongoID from '../../types/mongoid' ;
@@ -143,6 +144,20 @@ describe('removeOne() ->', () => {
143144 } ) ;
144145 expect ( result . record ) . instanceof ( UserModel ) ;
145146 } ) ;
147+
148+ it ( 'should call `beforeQuery` method with non-executed `query` as arg' , async ( ) => {
149+ let beforeQueryCalled = false ;
150+ const result = await removeOne ( UserModel , UserTypeComposer ) . resolve ( {
151+ args : { } ,
152+ beforeQuery : ( query ) => {
153+ expect ( query ) . instanceof ( Query ) ;
154+ beforeQueryCalled = true ;
155+ return query ;
156+ }
157+ } ) ;
158+ expect ( beforeQueryCalled ) . to . be . true ;
159+ expect ( result . record ) . instanceof ( UserModel ) ;
160+ } ) ;
146161 } ) ;
147162
148163 describe ( 'Resolver.getOutputType()' , ( ) => {
Original file line number Diff line number Diff line change 22
33import { expect } from 'chai' ;
44import { GraphQLInt , GraphQLNonNull } from 'graphql' ;
5+ import { Query } from 'mongoose' ;
56import { Resolver , TypeComposer } from 'graphql-compose' ;
67import { UserModel } from '../../__mocks__/userModel.js' ;
78import updateMany from '../updateMany' ;
@@ -115,6 +116,23 @@ describe('updateMany() ->', () => {
115116 } ) ;
116117 expect ( result ) . have . deep . property ( 'numAffected' , 2 ) ;
117118 } ) ;
119+
120+ it ( 'should call `beforeQuery` method with non-executed `query` as arg' , async ( ) => {
121+ let beforeQueryCalled = false ;
122+ const result = await updateMany ( UserModel , UserTypeComposer ) . resolve ( {
123+ args : {
124+ record : { gender : 'female' } ,
125+ } ,
126+ beforeQuery : ( query ) => {
127+ expect ( query ) . instanceof ( Query ) ;
128+ beforeQueryCalled = true ;
129+ // modify query before execution
130+ return query . where ( { _id : user1 . id } )
131+ }
132+ } ) ;
133+ expect ( beforeQueryCalled ) . to . be . true ;
134+ expect ( result ) . have . deep . property ( 'numAffected' , 1 ) ;
135+ } ) ;
118136 } ) ;
119137
120138 describe ( 'Resolver.getOutputType()' , ( ) => {
Original file line number Diff line number Diff line change @@ -76,7 +76,11 @@ export default function removeById(
7676 resolveParams . query = model . findByIdAndRemove ( args . _id ) ;
7777 projectionHelper ( resolveParams ) ;
7878
79- return resolveParams . query . exec ( )
79+ return (
80+ resolveParams . beforeQuery
81+ ? Promise . resolve ( resolveParams . beforeQuery ( resolveParams . query ) )
82+ : resolveParams . query . exec ( )
83+ )
8084 . then ( record => {
8185 if ( record ) {
8286 return {
Original file line number Diff line number Diff line change @@ -75,8 +75,11 @@ export default function removeMany(
7575 filterHelper ( resolveParams ) ;
7676 resolveParams . query = resolveParams . query . remove ( ) ;
7777
78- return resolveParams . query
79- . exec ( )
78+ return (
79+ resolveParams . beforeQuery
80+ ? Promise . resolve ( resolveParams . beforeQuery ( resolveParams . query ) )
81+ : resolveParams . query . exec ( )
82+ )
8083 . then ( res => {
8184 if ( res . result && res . result . ok ) {
8285 return {
Original file line number Diff line number Diff line change @@ -74,8 +74,11 @@ export default function removeOne(
7474 sortHelper ( resolveParams ) ;
7575 projectionHelper ( resolveParams ) ;
7676
77- return resolveParams . query
78- . exec ( )
77+ return (
78+ resolveParams . beforeQuery
79+ ? Promise . resolve ( resolveParams . beforeQuery ( resolveParams . query ) )
80+ : resolveParams . query . exec ( )
81+ )
7982 . then ( record => {
8083 if ( record ) {
8184 return {
Original file line number Diff line number Diff line change @@ -96,8 +96,11 @@ export default function updateMany(
9696 resolveParams . query = resolveParams . query . setOptions ( { multi : true } ) ; // eslint-disable-line
9797 resolveParams . query . update ( { $set : toDottedObject ( recordData ) } ) ;
9898
99- return resolveParams . query
100- . exec ( )
99+ return (
100+ resolveParams . beforeQuery
101+ ? Promise . resolve ( resolveParams . beforeQuery ( resolveParams . query ) )
102+ : resolveParams . query . exec ( )
103+ )
101104 . then ( res => {
102105 if ( res . ok ) {
103106 return {
You can’t perform that action at this time.
0 commit comments