Skip to content

Commit f6db41c

Browse files
committed
LiveQuery spec remove duplicates and listeners
1 parent 7f100f3 commit f6db41c

6 files changed

+34
-198
lines changed

spec/CloudCodeLogger.spec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ describe('Cloud Code Logger', () => {
1414
return reconfigureServer({
1515
// useful to flip to false for fine tuning :).
1616
silent: true,
17+
logLevel: undefined,
1718
})
1819
.then(() => {
1920
return Parse.User.signUp('tester', 'abc')

spec/ParseLiveQuery.spec.js

Lines changed: 5 additions & 179 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ describe('ParseLiveQuery', function () {
1515
verbose: false,
1616
silent: true,
1717
});
18+
Parse.CoreManager.getLiveQueryController().setDefaultLiveQueryClient(null);
1819
const requestedUser = new Parse.User();
1920
requestedUser.setUsername('username');
2021
requestedUser.setPassword('password');
2122
Parse.Cloud.onLiveQueryEvent(req => {
2223
const { event, sessionToken } = req;
2324
if (event === 'ws_disconnect') {
25+
Parse.Cloud._removeAllHooks();
2426
expect(sessionToken).toBeDefined();
2527
expect(sessionToken).toBe(requestedUser.getSessionToken());
2628
done();
@@ -356,185 +358,6 @@ describe('ParseLiveQuery', function () {
356358
await object.save();
357359
});
358360

359-
it('expect afterEvent create', async done => {
360-
await reconfigureServer({
361-
liveQuery: {
362-
classNames: ['TestObject'],
363-
},
364-
startLiveQueryServer: true,
365-
verbose: false,
366-
silent: true,
367-
});
368-
Parse.Cloud.afterLiveQueryEvent('TestObject', req => {
369-
expect(req.event).toBe('create');
370-
expect(req.user).toBeUndefined();
371-
expect(req.object.get('foo')).toBe('bar');
372-
});
373-
374-
const query = new Parse.Query(TestObject);
375-
const subscription = await query.subscribe();
376-
subscription.on('create', object => {
377-
expect(object.get('foo')).toBe('bar');
378-
done();
379-
});
380-
381-
const object = new TestObject();
382-
object.set('foo', 'bar');
383-
await object.save();
384-
});
385-
386-
it('expect afterEvent payload', async done => {
387-
await reconfigureServer({
388-
liveQuery: {
389-
classNames: ['TestObject'],
390-
},
391-
startLiveQueryServer: true,
392-
verbose: false,
393-
silent: true,
394-
});
395-
const object = new TestObject();
396-
await object.save();
397-
398-
Parse.Cloud.afterLiveQueryEvent('TestObject', req => {
399-
expect(req.event).toBe('update');
400-
expect(req.user).toBeUndefined();
401-
expect(req.object.get('foo')).toBe('bar');
402-
expect(req.original.get('foo')).toBeUndefined();
403-
done();
404-
});
405-
406-
const query = new Parse.Query(TestObject);
407-
query.equalTo('objectId', object.id);
408-
await query.subscribe();
409-
object.set({ foo: 'bar' });
410-
await object.save();
411-
});
412-
413-
it('expect afterEvent enter', async done => {
414-
await reconfigureServer({
415-
liveQuery: {
416-
classNames: ['TestObject'],
417-
},
418-
startLiveQueryServer: true,
419-
verbose: false,
420-
silent: true,
421-
});
422-
Parse.Cloud.afterLiveQueryEvent('TestObject', req => {
423-
expect(req.event).toBe('enter');
424-
expect(req.user).toBeUndefined();
425-
expect(req.object.get('foo')).toBe('bar');
426-
expect(req.original.get('foo')).toBeUndefined();
427-
});
428-
429-
const object = new TestObject();
430-
await object.save();
431-
432-
const query = new Parse.Query(TestObject);
433-
query.equalTo('foo', 'bar');
434-
const subscription = await query.subscribe();
435-
subscription.on('enter', object => {
436-
expect(object.get('foo')).toBe('bar');
437-
done();
438-
});
439-
440-
object.set('foo', 'bar');
441-
await object.save();
442-
});
443-
444-
it('expect afterEvent leave', async done => {
445-
await reconfigureServer({
446-
liveQuery: {
447-
classNames: ['TestObject'],
448-
},
449-
startLiveQueryServer: true,
450-
verbose: false,
451-
silent: true,
452-
});
453-
Parse.Cloud.afterLiveQueryEvent('TestObject', req => {
454-
expect(req.event).toBe('leave');
455-
expect(req.user).toBeUndefined();
456-
expect(req.object.get('foo')).toBeUndefined();
457-
expect(req.original.get('foo')).toBe('bar');
458-
});
459-
460-
const object = new TestObject();
461-
object.set('foo', 'bar');
462-
await object.save();
463-
464-
const query = new Parse.Query(TestObject);
465-
query.equalTo('foo', 'bar');
466-
const subscription = await query.subscribe();
467-
subscription.on('leave', object => {
468-
expect(object.get('foo')).toBeUndefined();
469-
done();
470-
});
471-
472-
object.unset('foo');
473-
await object.save();
474-
});
475-
476-
it('expect afterEvent delete', async done => {
477-
await reconfigureServer({
478-
liveQuery: {
479-
classNames: ['TestObject'],
480-
},
481-
startLiveQueryServer: true,
482-
verbose: false,
483-
silent: true,
484-
});
485-
Parse.Cloud.afterLiveQueryEvent('TestObject', req => {
486-
expect(req.event).toBe('delete');
487-
expect(req.user).toBeUndefined();
488-
req.object.set('foo', 'bar');
489-
});
490-
491-
const object = new TestObject();
492-
await object.save();
493-
494-
const query = new Parse.Query(TestObject);
495-
query.equalTo('objectId', object.id);
496-
497-
const subscription = await query.subscribe();
498-
subscription.on('delete', object => {
499-
expect(object.get('foo')).toBe('bar');
500-
done();
501-
});
502-
503-
await object.destroy();
504-
});
505-
506-
it('can handle afterEvent modification', async done => {
507-
await reconfigureServer({
508-
liveQuery: {
509-
classNames: ['TestObject'],
510-
},
511-
startLiveQueryServer: true,
512-
verbose: false,
513-
silent: true,
514-
});
515-
const object = new TestObject();
516-
await object.save();
517-
518-
Parse.Cloud.afterLiveQueryEvent('TestObject', req => {
519-
const current = req.object;
520-
current.set('foo', 'yolo');
521-
522-
const original = req.original;
523-
original.set('yolo', 'foo');
524-
});
525-
526-
const query = new Parse.Query(TestObject);
527-
query.equalTo('objectId', object.id);
528-
const subscription = await query.subscribe();
529-
subscription.on('update', (object, original) => {
530-
expect(object.get('foo')).toBe('yolo');
531-
expect(original.get('yolo')).toBe('foo');
532-
done();
533-
});
534-
object.set({ foo: 'bar' });
535-
await object.save();
536-
});
537-
538361
it('can handle async afterEvent modification', async done => {
539362
await reconfigureServer({
540363
liveQuery: {
@@ -622,6 +445,7 @@ describe('ParseLiveQuery', function () {
622445
Parse.Cloud.beforeConnect(() => {}, validatorFail);
623446
let complete = false;
624447
Parse.LiveQuery.on('error', error => {
448+
Parse.LiveQuery.removeAllListeners('error');
625449
if (complete) {
626450
return;
627451
}
@@ -695,6 +519,7 @@ describe('ParseLiveQuery', function () {
695519
throw new Error('You shall not pass!');
696520
});
697521
Parse.LiveQuery.on('error', error => {
522+
Parse.LiveQuery.removeAllListeners('error');
698523
expect(error).toBe('You shall not pass!');
699524
done();
700525
});
@@ -725,6 +550,7 @@ describe('ParseLiveQuery', function () {
725550
query.equalTo('objectId', object.id);
726551
const subscription = await query.subscribe();
727552
subscription.on('error', error => {
553+
Parse.LiveQuery.removeAllListeners('error');
728554
expect(error).toBe('You shall not subscribe!');
729555
done();
730556
});

spec/ParseQuery.Aggregate.spec.js

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1404,20 +1404,16 @@ describe('Parse.Query Aggregate testing', () => {
14041404
expect(results.length).toEqual(2);
14051405
expect(results[0].value).toEqual(2);
14061406
expect(results[1].value).toEqual(3);
1407+
await database.adapter.deleteAllClasses(false);
14071408
});
14081409

14091410
it_only_db('mongo')('aggregate geoNear with near GeoJSON point', async () => {
14101411
// Create geo index which is required for `geoNear` query
14111412
const database = Config.get(Parse.applicationId).database;
14121413
const schema = await new Parse.Schema('GeoObject').save();
1413-
await database.adapter.ensureIndex(
1414-
'GeoObject',
1415-
schema,
1416-
['location'],
1417-
undefined,
1418-
false,
1419-
'2dsphere'
1420-
);
1414+
await database.adapter.ensureIndex('GeoObject', schema, ['location'], undefined, false, {
1415+
indexType: '2dsphere',
1416+
});
14211417
// Create objects
14221418
const GeoObject = Parse.Object.extend('GeoObject');
14231419
const obj1 = new GeoObject({
@@ -1454,20 +1450,16 @@ describe('Parse.Query Aggregate testing', () => {
14541450
const results = await query.aggregate(pipeline);
14551451
// Check results
14561452
expect(results.length).toEqual(3);
1453+
await database.adapter.deleteAllClasses(false);
14571454
});
14581455

14591456
it_only_db('mongo')('aggregate geoNear with near legacy coordinate pair', async () => {
14601457
// Create geo index which is required for `geoNear` query
14611458
const database = Config.get(Parse.applicationId).database;
14621459
const schema = await new Parse.Schema('GeoObject').save();
1463-
await database.adapter.ensureIndex(
1464-
'GeoObject',
1465-
schema,
1466-
['location'],
1467-
undefined,
1468-
false,
1469-
'2dsphere'
1470-
);
1460+
await database.adapter.ensureIndex('GeoObject', schema, ['location'], undefined, false, {
1461+
indexType: '2dsphere',
1462+
});
14711463
// Create objects
14721464
const GeoObject = Parse.Object.extend('GeoObject');
14731465
const obj1 = new GeoObject({
@@ -1501,5 +1493,6 @@ describe('Parse.Query Aggregate testing', () => {
15011493
const results = await query.aggregate(pipeline);
15021494
// Check results
15031495
expect(results.length).toEqual(3);
1496+
await database.adapter.deleteAllClasses(false);
15041497
});
15051498
});

spec/helper.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
'use strict';
22
const semver = require('semver');
3+
const CurrentSpecReporter = require('./support/CurrentSpecReporter.js');
34

45
// Sets up a Parse API server for testing.
5-
jasmine.DEFAULT_TIMEOUT_INTERVAL = process.env.PARSE_SERVER_TEST_TIMEOUT || 5000;
6-
6+
jasmine.DEFAULT_TIMEOUT_INTERVAL = process.env.PARSE_SERVER_TEST_TIMEOUT || 10000;
7+
jasmine.getEnv().addReporter(new CurrentSpecReporter());
78
if (process.env.PARSE_SERVER_LOG_LEVEL === 'debug') {
89
const { SpecReporter } = require('jasmine-spec-reporter');
910
jasmine.getEnv().addReporter(new SpecReporter());

spec/schemas.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,8 @@ const masterKeyHeaders = {
141141

142142
describe('schemas', () => {
143143
beforeEach(async () => {
144-
config = Config.get('test');
145144
await reconfigureServer();
145+
config = Config.get('test');
146146
});
147147

148148
afterEach(async () => {

spec/support/CurrentSpecReporter.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Sets a global variable to the current test spec
2+
// ex: global.currentSpec.description
3+
4+
global.currentSpec = null;
5+
6+
class CurrentSpecReporter {
7+
specStarted(spec) {
8+
global.currentSpec = spec;
9+
}
10+
specDone() {
11+
global.currentSpec = null;
12+
}
13+
}
14+
15+
module.exports = CurrentSpecReporter;

0 commit comments

Comments
 (0)