@@ -111,10 +111,10 @@ describe('batch', () => {
111
111
expect ( internalURL ) . toEqual ( '/classes/Object' ) ;
112
112
} ) ;
113
113
114
- it ( 'should handle a batch request without transaction' , async ( ) => {
114
+ it ( 'should handle a batch request without transaction' , async done => {
115
115
spyOn ( databaseAdapter , 'createObject' ) . and . callThrough ( ) ;
116
116
117
- const response = await request ( {
117
+ request ( {
118
118
method : 'POST' ,
119
119
headers : headers ,
120
120
url : 'http://localhost:8378/1/batch' ,
@@ -132,25 +132,28 @@ describe('batch', () => {
132
132
} ,
133
133
] ,
134
134
} ) ,
135
+ } ) . then ( response => {
136
+ expect ( response . data . length ) . toEqual ( 2 ) ;
137
+ expect ( response . data [ 0 ] . success . objectId ) . toBeDefined ( ) ;
138
+ expect ( response . data [ 0 ] . success . createdAt ) . toBeDefined ( ) ;
139
+ expect ( response . data [ 1 ] . success . objectId ) . toBeDefined ( ) ;
140
+ expect ( response . data [ 1 ] . success . createdAt ) . toBeDefined ( ) ;
141
+ const query = new Parse . Query ( 'MyObject' ) ;
142
+ query . find ( ) . then ( results => {
143
+ expect ( databaseAdapter . createObject . calls . count ( ) ) . toBe ( 2 ) ;
144
+ expect ( databaseAdapter . createObject . calls . argsFor ( 0 ) [ 3 ] ) . toEqual ( null ) ;
145
+ expect ( databaseAdapter . createObject . calls . argsFor ( 1 ) [ 3 ] ) . toEqual ( null ) ;
146
+ expect ( results . map ( result => result . get ( 'key' ) ) . sort ( ) ) . toEqual ( [ 'value1' , 'value2' ] ) ;
147
+ done ( ) ;
148
+ } ) ;
135
149
} ) ;
136
-
137
- expect ( response . data . length ) . toEqual ( 2 ) ;
138
- expect ( response . data [ 0 ] . success . objectId ) . toBeDefined ( ) ;
139
- expect ( response . data [ 0 ] . success . createdAt ) . toBeDefined ( ) ;
140
- expect ( response . data [ 1 ] . success . objectId ) . toBeDefined ( ) ;
141
- expect ( response . data [ 1 ] . success . createdAt ) . toBeDefined ( ) ;
142
- const query = new Parse . Query ( 'MyObject' ) ;
143
- const results = await query . find ( ) ;
144
- expect ( databaseAdapter . createObject . calls . count ( ) ) . toBe ( 2 ) ;
145
- expect ( databaseAdapter . createObject . calls . argsFor ( 0 ) [ 3 ] ) . toEqual ( null ) ;
146
- expect ( databaseAdapter . createObject . calls . argsFor ( 1 ) [ 3 ] ) . toEqual ( null ) ;
147
- expect ( results . map ( result => result . get ( 'key' ) ) . sort ( ) ) . toEqual ( [ 'value1' , 'value2' ] ) ;
148
150
} ) ;
149
151
150
- it ( 'should handle a batch request with transaction = false' , async ( ) => {
152
+ it ( 'should handle a batch request with transaction = false' , async done => {
153
+ await reconfigureServer ( ) ;
151
154
spyOn ( databaseAdapter , 'createObject' ) . and . callThrough ( ) ;
152
155
153
- const response = await request ( {
156
+ request ( {
154
157
method : 'POST' ,
155
158
headers : headers ,
156
159
url : 'http://localhost:8378/1/batch' ,
@@ -169,18 +172,21 @@ describe('batch', () => {
169
172
] ,
170
173
transaction : false ,
171
174
} ) ,
175
+ } ) . then ( response => {
176
+ expect ( response . data . length ) . toEqual ( 2 ) ;
177
+ expect ( response . data [ 0 ] . success . objectId ) . toBeDefined ( ) ;
178
+ expect ( response . data [ 0 ] . success . createdAt ) . toBeDefined ( ) ;
179
+ expect ( response . data [ 1 ] . success . objectId ) . toBeDefined ( ) ;
180
+ expect ( response . data [ 1 ] . success . createdAt ) . toBeDefined ( ) ;
181
+ const query = new Parse . Query ( 'MyObject' ) ;
182
+ query . find ( ) . then ( results => {
183
+ expect ( databaseAdapter . createObject . calls . count ( ) ) . toBe ( 2 ) ;
184
+ expect ( databaseAdapter . createObject . calls . argsFor ( 0 ) [ 3 ] ) . toEqual ( null ) ;
185
+ expect ( databaseAdapter . createObject . calls . argsFor ( 1 ) [ 3 ] ) . toEqual ( null ) ;
186
+ expect ( results . map ( result => result . get ( 'key' ) ) . sort ( ) ) . toEqual ( [ 'value1' , 'value2' ] ) ;
187
+ done ( ) ;
188
+ } ) ;
172
189
} ) ;
173
- expect ( response . data . length ) . toEqual ( 2 ) ;
174
- expect ( response . data [ 0 ] . success . objectId ) . toBeDefined ( ) ;
175
- expect ( response . data [ 0 ] . success . createdAt ) . toBeDefined ( ) ;
176
- expect ( response . data [ 1 ] . success . objectId ) . toBeDefined ( ) ;
177
- expect ( response . data [ 1 ] . success . createdAt ) . toBeDefined ( ) ;
178
- const query = new Parse . Query ( 'MyObject' ) ;
179
- const results = await query . find ( ) ;
180
- expect ( databaseAdapter . createObject . calls . count ( ) ) . toBe ( 2 ) ;
181
- expect ( databaseAdapter . createObject . calls . argsFor ( 0 ) [ 3 ] ) . toEqual ( null ) ;
182
- expect ( databaseAdapter . createObject . calls . argsFor ( 1 ) [ 3 ] ) . toEqual ( null ) ;
183
- expect ( results . map ( result => result . get ( 'key' ) ) . sort ( ) ) . toEqual ( [ 'value1' , 'value2' ] ) ;
184
190
} ) ;
185
191
186
192
if (
@@ -207,48 +213,58 @@ describe('batch', () => {
207
213
}
208
214
} ) ;
209
215
210
- it ( 'should handle a batch request with transaction = true' , async ( ) => {
216
+ it ( 'should handle a batch request with transaction = true' , async done => {
217
+ await reconfigureServer ( ) ;
211
218
const myObject = new Parse . Object ( 'MyObject' ) ; // This is important because transaction only works on pre-existing collections
212
- await myObject . save ( ) ;
213
- await myObject . destroy ( ) ;
214
- spyOn ( databaseAdapter , 'createObject' ) . and . callThrough ( ) ;
215
- const response = await request ( {
216
- method : 'POST' ,
217
- headers : headers ,
218
- url : 'http://localhost:8378/1/batch' ,
219
- body : JSON . stringify ( {
220
- requests : [
221
- {
222
- method : 'POST' ,
223
- path : '/1/classes/MyObject' ,
224
- body : { key : 'value1' } ,
225
- } ,
226
- {
227
- method : 'POST' ,
228
- path : '/1/classes/MyObject' ,
229
- body : { key : 'value2' } ,
230
- } ,
231
- ] ,
232
- transaction : true ,
233
- } ) ,
234
- } ) ;
235
- expect ( response . data . length ) . toEqual ( 2 ) ;
236
- expect ( response . data [ 0 ] . success . objectId ) . toBeDefined ( ) ;
237
- expect ( response . data [ 0 ] . success . createdAt ) . toBeDefined ( ) ;
238
- expect ( response . data [ 1 ] . success . objectId ) . toBeDefined ( ) ;
239
- expect ( response . data [ 1 ] . success . createdAt ) . toBeDefined ( ) ;
240
- const query = new Parse . Query ( 'MyObject' ) ;
241
- const results = await query . find ( ) ;
242
- expect ( databaseAdapter . createObject . calls . count ( ) % 2 ) . toBe ( 0 ) ;
243
- for ( let i = 0 ; i + 1 < databaseAdapter . createObject . calls . length ; i = i + 2 ) {
244
- expect ( databaseAdapter . createObject . calls . argsFor ( i ) [ 3 ] ) . toBe (
245
- databaseAdapter . createObject . calls . argsFor ( i + 1 ) [ 3 ]
246
- ) ;
247
- }
248
- expect ( results . map ( result => result . get ( 'key' ) ) . sort ( ) ) . toEqual ( [
249
- 'value1' ,
250
- 'value2' ,
251
- ] ) ;
219
+ myObject
220
+ . save ( )
221
+ . then ( ( ) => {
222
+ return myObject . destroy ( ) ;
223
+ } )
224
+ . then ( ( ) => {
225
+ spyOn ( databaseAdapter , 'createObject' ) . and . callThrough ( ) ;
226
+
227
+ request ( {
228
+ method : 'POST' ,
229
+ headers : headers ,
230
+ url : 'http://localhost:8378/1/batch' ,
231
+ body : JSON . stringify ( {
232
+ requests : [
233
+ {
234
+ method : 'POST' ,
235
+ path : '/1/classes/MyObject' ,
236
+ body : { key : 'value1' } ,
237
+ } ,
238
+ {
239
+ method : 'POST' ,
240
+ path : '/1/classes/MyObject' ,
241
+ body : { key : 'value2' } ,
242
+ } ,
243
+ ] ,
244
+ transaction : true ,
245
+ } ) ,
246
+ } ) . then ( response => {
247
+ expect ( response . data . length ) . toEqual ( 2 ) ;
248
+ expect ( response . data [ 0 ] . success . objectId ) . toBeDefined ( ) ;
249
+ expect ( response . data [ 0 ] . success . createdAt ) . toBeDefined ( ) ;
250
+ expect ( response . data [ 1 ] . success . objectId ) . toBeDefined ( ) ;
251
+ expect ( response . data [ 1 ] . success . createdAt ) . toBeDefined ( ) ;
252
+ const query = new Parse . Query ( 'MyObject' ) ;
253
+ query . find ( ) . then ( results => {
254
+ expect ( databaseAdapter . createObject . calls . count ( ) % 2 ) . toBe ( 0 ) ;
255
+ for ( let i = 0 ; i + 1 < databaseAdapter . createObject . calls . length ; i = i + 2 ) {
256
+ expect ( databaseAdapter . createObject . calls . argsFor ( i ) [ 3 ] ) . toBe (
257
+ databaseAdapter . createObject . calls . argsFor ( i + 1 ) [ 3 ]
258
+ ) ;
259
+ }
260
+ expect ( results . map ( result => result . get ( 'key' ) ) . sort ( ) ) . toEqual ( [
261
+ 'value1' ,
262
+ 'value2' ,
263
+ ] ) ;
264
+ done ( ) ;
265
+ } ) ;
266
+ } ) ;
267
+ } ) ;
252
268
} ) ;
253
269
254
270
it ( 'should not save anything when one operation fails in a transaction' , async ( ) => {
@@ -356,7 +372,6 @@ describe('batch', () => {
356
372
transaction : true ,
357
373
} ) ,
358
374
} ) ;
359
- fail ( ) ;
360
375
} catch ( error ) {
361
376
expect ( error ) . toBeDefined ( ) ;
362
377
const query = new Parse . Query ( 'MyObject' ) ;
0 commit comments