Skip to content

Commit d7d1e8c

Browse files
committed
maintenance: update/remove dependencies and move tests to mocha
1 parent c241c66 commit d7d1e8c

File tree

4 files changed

+119
-100
lines changed

4 files changed

+119
-100
lines changed

mongo-instances-tests.js

Lines changed: 0 additions & 70 deletions
This file was deleted.

mongo-instances.js

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,35 @@
1-
var instances = [];
1+
/* global CollectionExtensions */
2+
import { Mongo } from 'meteor/mongo'
3+
import { Meteor } from 'meteor/meteor'
4+
const instances = []
25

36
CollectionExtensions.addExtension(function (name, options) {
47
instances.push({
58
name: name,
69
instance: this,
710
options: options
8-
});
9-
});
11+
})
12+
})
1013

11-
Mongo.Collection.get = function(name, options) {
12-
options = options || {};
13-
var collection = _.find(instances, function(instance) {
14-
if (options.connection)
15-
return instance.name === name &&
16-
instance.options && instance.options.connection._lastSessionId === options.connection._lastSessionId;
17-
return instance.name === name;
18-
});
14+
Mongo.Collection.get = function (name, options) {
15+
options = options || {}
16+
const collection = instances.find(instance => {
17+
if (options.connection) {
18+
return (
19+
instance.name === name &&
20+
instance.options &&
21+
instance.options.connection._lastSessionId === options.connection._lastSessionId
22+
)
23+
}
24+
return instance.name === name
25+
})
1926

20-
return collection && collection.instance;
21-
};
27+
return collection && collection.instance
28+
}
2229

23-
Mongo.Collection.getAll = function() {
24-
return instances;
25-
};
30+
Mongo.Collection.getAll = function () {
31+
return instances
32+
}
2633

2734
// Meteor.Collection will lack ownProperties that are added back to Mongo.Collection
28-
Meteor.Collection = Mongo.Collection;
35+
Meteor.Collection = Mongo.Collection

mongo-instances.tests.js

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
/* eslint-env mocha */
2+
import { expect } from 'chai'
3+
import { Random } from 'meteor/random'
4+
import { Mongo } from 'meteor/mongo'
5+
import { Meteor } from 'meteor/meteor'
6+
7+
const randomName = () => `test${Random.id(6)}`
8+
const equal = (a, b) => expect(a).to.equal(b)
9+
10+
describe('unit tests', () => {
11+
let collectionName
12+
13+
beforeEach(() => {
14+
collectionName = randomName() // random ID, so a new collection every time
15+
})
16+
17+
it('basic - works Mongo.Collection', () => {
18+
const Test = new Mongo.Collection(collectionName)
19+
20+
Test.insert({ test: true })
21+
const find = Mongo.Collection.get(collectionName).find({ test: true })
22+
equal(find.count(), 1)
23+
24+
// get an existing collection again
25+
const ReGet = Mongo.Collection.get(collectionName)
26+
equal(ReGet.find().count(), 1)
27+
})
28+
29+
it('basic - works Meteor.Collection', function () {
30+
const Test = new Meteor.Collection(collectionName)
31+
Test.insert({ test: true })
32+
33+
const find = Meteor.Collection.get(collectionName).find({ test: true })
34+
equal(find.count(), 1)
35+
})
36+
37+
it('basic - collection already exists', () => {
38+
const createInstance = () => new Mongo.Collection(collectionName)
39+
createInstance()
40+
expect(createInstance).to.throw('is already')
41+
})
42+
43+
it('nonexistent - returns undefined', () => {
44+
const collection = Mongo.Collection.get('truly-non-existent')
45+
equal(collection, undefined)
46+
})
47+
48+
it('instanceof - matches Mongo.Collection', () => {
49+
const Test = new Mongo.Collection(collectionName)
50+
expect(Test).to.be.instanceOf(Mongo.Collection)
51+
})
52+
53+
it('instanceof - Meteor.Collection matches Mongo.Collection', () => {
54+
const Test = new Meteor.Collection(collectionName)
55+
expect(Test).to.be.instanceOf(Mongo.Collection)
56+
})
57+
58+
it('instanceof - Meteor.users matches (Mongo/Meteor).Collection', () => {
59+
expect(Meteor.users).to.be.instanceOf(Mongo.Collection)
60+
expect(Meteor.users).to.be.instanceOf(Meteor.Collection)
61+
})
62+
63+
it('constructor equality - Mongo/Meteor.Collection === Mongo/Meteor.Collection.prototype.constructor', () => {
64+
equal(Mongo.Collection, Mongo.Collection.prototype.constructor)
65+
equal(Meteor.Collection, Mongo.Collection.prototype.constructor)
66+
equal(Meteor.Collection, Meteor.Collection.prototype.constructor)
67+
})
68+
69+
it('use New - keep behavior of Mongo.Collection', () => {
70+
const createWithoutNew = () => Mongo.Collection(collectionName)
71+
expect(createWithoutNew).to.throw('this._maybeSetUpReplication is not a function')
72+
})
73+
74+
it('users - can Mongo.Collection.get Meteor.users instance', () => {
75+
const name = 'users'
76+
expect(Mongo.Collection.get(name)).to.be.instanceOf(Mongo.Collection)
77+
expect(Mongo.Collection.get(name)).to.be.instanceOf(Meteor.Collection)
78+
})
79+
})

package.js

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
1+
/* eslint-env meteor */
12
Package.describe({
23
name: 'dburles:mongo-collection-instances',
34
summary: 'Access your Mongo instances',
4-
version: '0.3.6',
5+
version: '0.4.0',
56
git: 'https://github.com/dburles/mongo-collection-instances.git'
6-
});
7+
})
78

8-
Package.onUse(function(api) {
9-
api.versionsFrom('1.0');
9+
Package.onUse(function (api) {
10+
api.versionsFrom(['1.0', '2.3', '2.8.0'])
1011
api.use([
1112
'mongo',
12-
'underscore',
13-
'lai:collection-extensions@0.3.0']);
14-
api.addFiles('mongo-instances.js');
15-
});
13+
'ecmascript',
14+
'lai:collection-extensions@0.4.0'])
15+
api.addFiles('mongo-instances.js')
16+
})
1617

17-
Package.onTest(function(api) {
18+
Package.onTest(function (api) {
1819
api.use([
19-
'tinytest',
20+
'ecmascript',
21+
'meteortesting:[email protected]',
2022
'accounts-base',
2123
'mongo',
22-
'dburles:mongo-collection-instances']);
23-
api.addFiles('mongo-instances-tests.js');
24-
});
24+
'dburles:mongo-collection-instances'
25+
])
26+
api.addFiles('mongo-instances.tests.js')
27+
})

0 commit comments

Comments
 (0)