Skip to content

Commit 7a6ac2d

Browse files
committed
chore: Use mongodb-memory-server package for spinning up a test MongoDB Server
1 parent f4f0fc9 commit 7a6ac2d

File tree

3 files changed

+17
-36
lines changed

3 files changed

+17
-36
lines changed

.travis.yml

-8
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,5 @@
11
sudo: false
22
language: node_js
3-
services:
4-
- mongodb
5-
addons:
6-
apt:
7-
sources:
8-
- mongodb-3.0-precise
9-
packages:
10-
- mongodb-org-server
113
cache:
124
yarn: true
135
directories:

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
"graphql-compose": "^1.18.1",
5959
"graphql-compose-connection": "^2.1.3",
6060
"mocha": "^3.3.0",
61+
"mongodb-memory-server": "^1.0.0",
6162
"mongoose": "^4.9.8",
6263
"nyc": "^10.3.2",
6364
"rimraf": "^2.6.1",

src/__mocks__/mongooseCommon.js

+16-28
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,29 @@
11
/* eslint-disable no-param-reassign, no-console */
22
import mongoose, { Schema } from 'mongoose';
3-
4-
function getRandomInt(min, max) {
5-
return Math.floor(Math.random() * (max - min)) + min;
6-
}
7-
8-
const dbName = `gqc-mongoose-test${getRandomInt(1, 1000000)}`;
9-
const uri = `mongodb://127.0.0.1:27017/${dbName}`;
3+
import MongodbMemoryServer from 'mongodb-memory-server';
104

115
mongoose.Promise = Promise;
12-
mongoose.connect(uri);
136

14-
mongoose.connection.on('error', (err) => {
15-
throw new Error(err);
16-
});
7+
const mongoServer = new MongodbMemoryServer();
178

18-
mongoose.connection.on('connected', () => {
19-
console.log(`Mongoose default connection open to ${uri}`);
20-
});
9+
mongoServer.getConnectionString().then((mongoUri) => {
10+
mongoose.connect(mongoUri);
2111

22-
function dropDBs(done) {
23-
try {
24-
mongoose.connection.db.dropDatabase(() => {
25-
if (done) done();
26-
});
27-
} catch (e) { // Pitty, but not deathly
28-
if (done) done();
29-
}
30-
}
12+
mongoose.connection.on('error', (e) => {
13+
if (e.message.code === 'ETIMEDOUT') {
14+
console.log(e);
15+
mongoose.connect(mongoUri);
16+
} else {
17+
throw e;
18+
}
19+
});
3120

32-
process.on('exit', () => { dropDBs(); });
33-
process.on('SIGINT', () => { dropDBs(); });
21+
mongoose.connection.once('open', () => {
22+
console.log(`MongoDB successfully connected to ${mongoUri}`);
23+
});
24+
});
3425

3526
export {
3627
mongoose,
3728
Schema,
38-
dropDBs,
39-
uri,
40-
dbName,
4129
};

0 commit comments

Comments
 (0)