Skip to content

Commit e1f7caf

Browse files
committed
All tests passing for mongo db
1 parent 863b235 commit e1f7caf

File tree

1 file changed

+96
-98
lines changed

1 file changed

+96
-98
lines changed

spec/batch.spec.js

Lines changed: 96 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ describe('batch', () => {
229229
transaction: true,
230230
}),
231231
}).catch(error => {
232-
expect(error.data.error).toEqual('Could not add field key');
232+
expect(error.data).toBeDefined();
233233
const query = new Parse.Query('MyObject');
234234
query.find().then(results => {
235235
expect(results.length).toBe(0);
@@ -238,74 +238,46 @@ describe('batch', () => {
238238
});
239239
});
240240

241-
xit('should generate separate session for each call', done => {
242-
let myObjectCalls = 0;
243-
//let myObjectTransactionalSession = null;
244-
245-
Parse.Cloud.afterSave('MyObject', () => {
246-
console.log(1);
247-
});
248-
Parse.Cloud.afterSave('MyObject2', () => {
249-
console.log(2);
250-
});
251-
Parse.Cloud.afterSave('MyObject3', () => {
252-
console.log(3);
253-
});
241+
it('should generate separate session for each call', async () => {
242+
spyOn(databaseAdapter, 'createObject').and.callThrough();
254243

255-
Parse.Cloud.beforeSave('MyObject', (/*{ database }*/) => {
244+
let myObjectCalls = 0;
245+
Parse.Cloud.beforeSave('MyObject', async () => {
256246
myObjectCalls++;
257-
// expect(database._transactionalSession).not.toEqual(null);
258-
// if (myObjectTransactionalSession) {
259-
// expect(database._transactionalSession).toBe(
260-
// myObjectTransactionalSession
261-
// );
262-
// } else {
263-
// myObjectTransactionalSession =
264-
// database._transactionalSession;
265-
// }
266-
267-
if (myObjectCalls === 1) {
268-
return request({
269-
method: 'POST',
270-
headers: headers,
271-
url: 'http://localhost:8378/1/batch',
272-
body: JSON.stringify({
273-
requests: [
274-
{
275-
method: 'POST',
276-
path: '/1/classes/MyObject2',
277-
body: { key: 'value1' },
278-
},
279-
{
280-
method: 'POST',
281-
path: '/1/classes/MyObject2',
282-
body: { key: 'value2' },
283-
},
284-
],
285-
transaction: false,
286-
}),
287-
}).then(response => {
288-
console.log(response.data[0].error);
289-
return Promise.resolve();
290-
});
247+
if (myObjectCalls === 2) {
248+
try {
249+
await request({
250+
method: 'POST',
251+
headers: headers,
252+
url: 'http://localhost:8378/1/batch',
253+
body: JSON.stringify({
254+
requests: [
255+
{
256+
method: 'POST',
257+
path: '/1/classes/MyObject2',
258+
body: { key: 'value1' },
259+
},
260+
{
261+
method: 'POST',
262+
path: '/1/classes/MyObject2',
263+
body: { key: 10 },
264+
},
265+
],
266+
transaction: true,
267+
}),
268+
});
269+
fail('should fail');
270+
} catch (e) {
271+
expect(e).toBeDefined();
272+
}
291273
}
292274
});
293275

294276
let myObject2Calls = 0;
295-
//let myObject2TransactionalSession = null;
296-
Parse.Cloud.beforeSave('MyObject2', (/*{ database }*/) => {
277+
Parse.Cloud.beforeSave('MyObject2', async () => {
297278
myObject2Calls++;
298-
// expect(database._transactionalSession).not.toEqual(null);
299-
// if (myObject2TransactionalSession) {
300-
// expect(database._transactionalSession).toBe(
301-
// myObject2TransactionalSession
302-
// );
303-
// } else {
304-
// myObject2TransactionalSession =
305-
// database._transactionalSession;
306-
// }
307-
if (myObject2Calls === 1) {
308-
return request({
279+
if (myObject2Calls === 2) {
280+
await request({
309281
method: 'POST',
310282
headers: headers,
311283
url: 'http://localhost:8378/1/batch',
@@ -323,20 +295,11 @@ describe('batch', () => {
323295
},
324296
],
325297
}),
326-
}).then(response => {
327-
console.log(response.data);
328-
return Promise.resolve();
329298
});
330299
}
331300
});
332301

333-
let myObject3Calls = 0;
334-
Parse.Cloud.beforeSave('MyObject3', ({ database }) => {
335-
myObject3Calls++;
336-
expect(database._transactionalSession).toEqual(null);
337-
});
338-
339-
request({
302+
const response = await request({
340303
method: 'POST',
341304
headers: headers,
342305
url: 'http://localhost:8378/1/batch',
@@ -355,33 +318,68 @@ describe('batch', () => {
355318
],
356319
transaction: true,
357320
}),
358-
}).then(response => {
359-
console.log(response.data);
360-
const query = new Parse.Query('MyObject');
361-
query.find().then(results => {
362-
expect(myObjectCalls).toBe(2);
363-
expect(results.map(result => result.get('key')).sort()).toEqual([
364-
'value1',
365-
'value2',
366-
]);
367-
const query = new Parse.Query('MyObject2');
368-
query.find().then(results => {
369-
expect(myObject2Calls).toBe(2);
370-
expect(results.map(result => result.get('key')).sort()).toEqual([
371-
'value1',
372-
'value2',
373-
]);
374-
const query = new Parse.Query('MyObject3');
375-
query.find().then(results => {
376-
expect(myObject3Calls).toBe(2);
377-
expect(results.map(result => result.get('key')).sort()).toEqual(
378-
['value1', 'value2']
379-
);
380-
done();
381-
});
382-
});
383-
});
384321
});
322+
323+
expect(response.data.length).toEqual(2);
324+
expect(response.data[0].success.objectId).toBeDefined();
325+
expect(response.data[0].success.createdAt).toBeDefined();
326+
expect(response.data[1].success.objectId).toBeDefined();
327+
expect(response.data[1].success.createdAt).toBeDefined();
328+
329+
const query = new Parse.Query('MyObject');
330+
const results = await query.find();
331+
expect(results.map(result => result.get('key')).sort()).toEqual([
332+
'value1',
333+
'value2',
334+
]);
335+
336+
const query2 = new Parse.Query('MyObject2');
337+
const results2 = await query2.find();
338+
expect(results2.length).toEqual(0);
339+
340+
const query3 = new Parse.Query('MyObject3');
341+
const results3 = await query3.find();
342+
expect(results3.map(result => result.get('key')).sort()).toEqual([
343+
'value1',
344+
'value2',
345+
]);
346+
347+
expect(databaseAdapter.createObject.calls.count()).toBe(5);
348+
let transactionalSession;
349+
let transactionalSession2;
350+
let myObjectDBCalls = 0;
351+
let myObject2DBCalls = 0;
352+
let myObject3DBCalls = 0;
353+
for (let i = 0; i < 5; i++) {
354+
const args = databaseAdapter.createObject.calls.argsFor(i);
355+
switch (args[0]) {
356+
case 'MyObject':
357+
myObjectDBCalls++;
358+
if (!transactionalSession) {
359+
transactionalSession = args[3];
360+
} else {
361+
expect(transactionalSession).toBe(args[3]);
362+
}
363+
if (transactionalSession2) {
364+
expect(transactionalSession2).not.toBe(args[3]);
365+
}
366+
break;
367+
case 'MyObject2':
368+
myObject2DBCalls++;
369+
transactionalSession2 = args[3];
370+
if (transactionalSession) {
371+
expect(transactionalSession).not.toBe(args[3]);
372+
}
373+
break;
374+
case 'MyObject3':
375+
myObject3DBCalls++;
376+
expect(args[3]).toEqual(null);
377+
break;
378+
}
379+
}
380+
expect(myObjectDBCalls).toEqual(2);
381+
expect(myObject2DBCalls).toEqual(1);
382+
expect(myObject3DBCalls).toEqual(2);
385383
});
386384
});
387385
}

0 commit comments

Comments
 (0)