@@ -108,17 +108,20 @@ describe('QueryCursor', function() {
108
108
} ) ;
109
109
110
110
describe ( 'with populate' , function ( ) {
111
+ let populateCalls = 0 ;
112
+
111
113
const bandSchema = new Schema ( {
112
114
name : String ,
113
115
members : [ { type : mongoose . Schema . ObjectId , ref : 'Person' } ]
114
116
} ) ;
115
117
const personSchema = new Schema ( {
116
118
name : String
117
119
} ) ;
120
+ personSchema . pre ( 'find' , ( ) => { ++ populateCalls ; } ) ;
118
121
119
122
let Band ;
120
123
121
- beforeEach ( function ( done ) {
124
+ beforeEach ( async function ( ) {
122
125
const Person = db . model ( 'Person' , personSchema ) ;
123
126
Band = db . model ( 'Band' , bandSchema ) ;
124
127
@@ -131,96 +134,81 @@ describe('QueryCursor', function() {
131
134
{ name : 'Thom Yorke' } ,
132
135
{ name : 'Billy Corgan' }
133
136
] ;
134
- Person . create ( people , function ( error , docs ) {
135
- assert . ifError ( error ) ;
136
- const bands = [
137
- { name : 'Guns N\' Roses' , members : [ docs [ 0 ] , docs [ 1 ] ] } ,
138
- { name : 'Motley Crue' , members : [ docs [ 2 ] , docs [ 3 ] ] } ,
139
- { name : 'Nine Inch Nails' , members : [ docs [ 4 ] ] } ,
140
- { name : 'Radiohead' , members : [ docs [ 5 ] ] } ,
141
- { name : 'The Smashing Pumpkins' , members : [ docs [ 6 ] ] }
142
- ] ;
143
- Band . create ( bands , function ( error ) {
144
- assert . ifError ( error ) ;
145
- done ( ) ;
146
- } ) ;
147
- } ) ;
137
+ const docs = await Person . create ( people ) ;
138
+
139
+ const bands = [
140
+ { name : 'Guns N\' Roses' , members : [ docs [ 0 ] , docs [ 1 ] ] } ,
141
+ { name : 'Motley Crue' , members : [ docs [ 2 ] , docs [ 3 ] ] } ,
142
+ { name : 'Nine Inch Nails' , members : [ docs [ 4 ] ] } ,
143
+ { name : 'Radiohead' , members : [ docs [ 5 ] ] } ,
144
+ { name : 'The Smashing Pumpkins' , members : [ docs [ 6 ] ] }
145
+ ] ;
146
+ await Band . create ( bands ) ;
148
147
} ) ;
149
148
150
- it ( 'with populate without specify batchSize' , function ( done ) {
151
- const cursor =
152
- Band . find ( ) . sort ( { name : 1 } ) . populate ( 'members' ) . cursor ( ) ;
153
- cursor . next ( function ( error , doc ) {
154
- assert . ifError ( error ) ;
155
- assert . equal ( doc . name , 'Guns N\' Roses' ) ;
156
- assert . equal ( doc . members . length , 2 ) ;
157
- assert . equal ( doc . members [ 0 ] . name , 'Axl Rose' ) ;
158
- assert . equal ( doc . members [ 1 ] . name , 'Slash' ) ;
159
- cursor . next ( function ( error , doc ) {
160
- assert . ifError ( error ) ;
161
- assert . equal ( doc . name , 'Motley Crue' ) ;
162
- assert . equal ( doc . members . length , 2 ) ;
163
- assert . equal ( doc . members [ 0 ] . name , 'Nikki Sixx' ) ;
164
- assert . equal ( doc . members [ 1 ] . name , 'Vince Neil' ) ;
165
- cursor . next ( function ( error , doc ) {
166
- assert . ifError ( error ) ;
167
- assert . equal ( doc . name , 'Nine Inch Nails' ) ;
168
- assert . equal ( doc . members . length , 1 ) ;
169
- assert . equal ( doc . members [ 0 ] . name , 'Trent Reznor' ) ;
170
- cursor . next ( function ( error , doc ) {
171
- assert . ifError ( error ) ;
172
- assert . equal ( doc . name , 'Radiohead' ) ;
173
- assert . equal ( doc . members . length , 1 ) ;
174
- assert . equal ( doc . members [ 0 ] . name , 'Thom Yorke' ) ;
175
- cursor . next ( function ( error , doc ) {
176
- assert . ifError ( error ) ;
177
- assert . equal ( doc . name , 'The Smashing Pumpkins' ) ;
178
- assert . equal ( doc . members . length , 1 ) ;
179
- assert . equal ( doc . members [ 0 ] . name , 'Billy Corgan' ) ;
180
- done ( ) ;
181
- } ) ;
182
- } ) ;
183
- } ) ;
184
- } ) ;
185
- } ) ;
149
+ it ( 'with populate without specify batchSize' , async function ( ) {
150
+ const cursor = Band . find ( ) . sort ( { name : 1 } ) . populate ( 'members' ) . cursor ( ) ;
151
+
152
+ let doc = await cursor . next ( ) ;
153
+ assert . equal ( doc . name , 'Guns N\' Roses' ) ;
154
+ assert . equal ( doc . members . length , 2 ) ;
155
+ assert . equal ( doc . members [ 0 ] . name , 'Axl Rose' ) ;
156
+ assert . equal ( doc . members [ 1 ] . name , 'Slash' ) ;
157
+
158
+ doc = await cursor . next ( ) ;
159
+ assert . equal ( doc . name , 'Motley Crue' ) ;
160
+ assert . equal ( doc . members . length , 2 ) ;
161
+ assert . equal ( doc . members [ 0 ] . name , 'Nikki Sixx' ) ;
162
+ assert . equal ( doc . members [ 1 ] . name , 'Vince Neil' ) ;
163
+
164
+ doc = await cursor . next ( ) ;
165
+ assert . equal ( doc . name , 'Nine Inch Nails' ) ;
166
+ assert . equal ( doc . members . length , 1 ) ;
167
+ assert . equal ( doc . members [ 0 ] . name , 'Trent Reznor' ) ;
168
+
169
+ doc = await cursor . next ( ) ;
170
+ assert . equal ( doc . name , 'Radiohead' ) ;
171
+ assert . equal ( doc . members . length , 1 ) ;
172
+ assert . equal ( doc . members [ 0 ] . name , 'Thom Yorke' ) ;
173
+
174
+ doc = await cursor . next ( ) ;
175
+ assert . equal ( doc . name , 'The Smashing Pumpkins' ) ;
176
+ assert . equal ( doc . members . length , 1 ) ;
177
+ assert . equal ( doc . members [ 0 ] . name , 'Billy Corgan' ) ;
186
178
} ) ;
187
179
188
- it ( 'with populate using custom batchSize' , function ( done ) {
180
+ it ( 'with populate using custom batchSize' , async function ( ) {
181
+ populateCalls = 0 ;
189
182
const cursor =
190
183
Band . find ( ) . sort ( { name : 1 } ) . populate ( 'members' ) . batchSize ( 3 ) . cursor ( ) ;
191
- cursor . next ( function ( error , doc ) {
192
- assert . ifError ( error ) ;
193
- assert . equal ( doc . name , 'Guns N\' Roses' ) ;
194
- assert . equal ( doc . members . length , 2 ) ;
195
- assert . equal ( doc . members [ 0 ] . name , 'Axl Rose' ) ;
196
- assert . equal ( doc . members [ 1 ] . name , 'Slash' ) ;
197
- cursor . next ( function ( error , doc ) {
198
- assert . ifError ( error ) ;
199
- assert . equal ( doc . name , 'Motley Crue' ) ;
200
- assert . equal ( doc . members . length , 2 ) ;
201
- assert . equal ( doc . members [ 0 ] . name , 'Nikki Sixx' ) ;
202
- assert . equal ( doc . members [ 1 ] . name , 'Vince Neil' ) ;
203
- cursor . next ( function ( error , doc ) {
204
- assert . ifError ( error ) ;
205
- assert . equal ( doc . name , 'Nine Inch Nails' ) ;
206
- assert . equal ( doc . members . length , 1 ) ;
207
- assert . equal ( doc . members [ 0 ] . name , 'Trent Reznor' ) ;
208
- cursor . next ( function ( error , doc ) {
209
- assert . ifError ( error ) ;
210
- assert . equal ( doc . name , 'Radiohead' ) ;
211
- assert . equal ( doc . members . length , 1 ) ;
212
- assert . equal ( doc . members [ 0 ] . name , 'Thom Yorke' ) ;
213
- cursor . next ( function ( error , doc ) {
214
- assert . ifError ( error ) ;
215
- assert . equal ( doc . name , 'The Smashing Pumpkins' ) ;
216
- assert . equal ( doc . members . length , 1 ) ;
217
- assert . equal ( doc . members [ 0 ] . name , 'Billy Corgan' ) ;
218
- done ( ) ;
219
- } ) ;
220
- } ) ;
221
- } ) ;
222
- } ) ;
223
- } ) ;
184
+
185
+ let doc = await cursor . next ( ) ;
186
+ assert . equal ( doc . name , 'Guns N\' Roses' ) ;
187
+ assert . equal ( doc . members . length , 2 ) ;
188
+ assert . equal ( doc . members [ 0 ] . name , 'Axl Rose' ) ;
189
+ assert . equal ( doc . members [ 1 ] . name , 'Slash' ) ;
190
+
191
+ doc = await cursor . next ( ) ;
192
+ assert . equal ( doc . name , 'Motley Crue' ) ;
193
+ assert . equal ( doc . members . length , 2 ) ;
194
+ assert . equal ( doc . members [ 0 ] . name , 'Nikki Sixx' ) ;
195
+ assert . equal ( doc . members [ 1 ] . name , 'Vince Neil' ) ;
196
+
197
+ doc = await cursor . next ( ) ;
198
+ assert . equal ( doc . name , 'Nine Inch Nails' ) ;
199
+ assert . equal ( doc . members . length , 1 ) ;
200
+ assert . equal ( doc . members [ 0 ] . name , 'Trent Reznor' ) ;
201
+
202
+ doc = await cursor . next ( ) ;
203
+ assert . equal ( doc . members . length , 1 ) ;
204
+ assert . equal ( doc . members [ 0 ] . name , 'Thom Yorke' ) ;
205
+
206
+ doc = await cursor . next ( ) ;
207
+ assert . equal ( doc . name , 'The Smashing Pumpkins' ) ;
208
+ assert . equal ( doc . members . length , 1 ) ;
209
+ assert . equal ( doc . members [ 0 ] . name , 'Billy Corgan' ) ;
210
+
211
+ assert . equal ( populateCalls , 2 ) ;
224
212
} ) ;
225
213
} ) ;
226
214
0 commit comments