Skip to content

Commit 2733c09

Browse files
committed
Remove direct mongo access from Schema.spec.js.
1 parent 6893895 commit 2733c09

File tree

3 files changed

+36
-19
lines changed

3 files changed

+36
-19
lines changed

spec/Schema.spec.js

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
'use strict';
2+
13
var Config = require('../src/Config');
24
var Schema = require('../src/Schema');
35
var dd = require('deep-diff');
@@ -512,24 +514,31 @@ describe('Schema', () => {
512514
it('drops related collection when deleting relation field', done => {
513515
var obj1 = hasAllPODobject();
514516
obj1.save()
515-
.then(savedObj1 => {
516-
var obj2 = new Parse.Object('HasPointersAndRelations');
517-
obj2.set('aPointer', savedObj1);
518-
var relation = obj2.relation('aRelation');
519-
relation.add(obj1);
520-
return obj2.save();
521-
})
522-
.then(() => {
523-
config.database.adapter.database.collection('test__Join:aRelation:HasPointersAndRelations', { strict: true }, (err, coll) => {
524-
expect(err).toEqual(null);
525-
config.database.loadSchema()
526-
.then(schema => schema.deleteField('aRelation', 'HasPointersAndRelations', config.database))
527-
.then(() => config.database.adapter.database.collection('test__Join:aRelation:HasPointersAndRelations', { strict: true }, (err, coll) => {
528-
expect(err).not.toEqual(null);
529-
done();
530-
}));
517+
.then(savedObj1 => {
518+
var obj2 = new Parse.Object('HasPointersAndRelations');
519+
obj2.set('aPointer', savedObj1);
520+
var relation = obj2.relation('aRelation');
521+
relation.add(obj1);
522+
return obj2.save();
523+
})
524+
.then(() => config.database.collectionExists('_Join:aRelation:HasPointersAndRelations'))
525+
.then(exists => {
526+
if (!exists) {
527+
fail('Relation collection should exist after save.');
528+
}
529+
})
530+
.then(() => config.database.loadSchema())
531+
.then(schema => schema.deleteField('aRelation', 'HasPointersAndRelations', config.database))
532+
.then(() => config.database.collectionExists('_Join:aRelation:HasPointersAndRelations'))
533+
.then(exists => {
534+
if (exists) {
535+
fail('Relation collection should not exist after deleting relation field.');
536+
}
537+
done();
538+
}, error => {
539+
fail(error);
540+
done();
531541
});
532-
})
533542
});
534543

535544
it('can delete string fields and resave as number field', done => {

src/Adapters/Storage/Mongo/MongoStorageAdapter.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,12 @@ export class MongoStorageAdapter {
3030
});
3131
}
3232

33-
dropCollection(name: string) {
34-
return this.connect.then(() => this.collection(name).then(collection => collection.drop()));
33+
collectionExists(name: string) {
34+
return this.connect().then(() => {
35+
return this.database.listCollections({ name: name }).toArray();
36+
}).then(collections => {
37+
return collections.length > 0;
38+
});
3539
}
3640

3741
dropCollection(name: string) {

src/Controllers/DatabaseController.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ DatabaseController.prototype.collection = function(className) {
3838
return this.rawCollection(className);
3939
};
4040

41+
DatabaseController.prototype.collectionExists = function(className) {
42+
return this.adapter.collectionExists(this.collectionPrefix + className);
43+
};
44+
4145
DatabaseController.prototype.rawCollection = function(className) {
4246
return this.adapter.collection(this.collectionPrefix + className);
4347
};

0 commit comments

Comments
 (0)