Skip to content

Commit 36874e2

Browse files
committed
test(Disconnect): Add closing db connection and shut downing mongod.
1 parent f475fbd commit 36874e2

File tree

7 files changed

+126
-76
lines changed

7 files changed

+126
-76
lines changed

README.md

+27-13
Original file line numberDiff line numberDiff line change
@@ -169,21 +169,28 @@ const User = mongoose.model('User', new mongoose.Schema({ name: String })); // d
169169
import mongoose from 'mongoose';
170170
import MongodbMemoryServer from 'mongodb-memory-server';
171171

172+
let mongoServer;
173+
172174
before((done) => {
173-
const mongoServer = new MongodbMemoryServer();
175+
mongoServer = new MongodbMemoryServer();
174176
mongoServer.getConnectionString().then((mongoUri) => {
175177
mongoose.connect(mongoUri, (err) => {
176178
done(err);
177179
});
178180
});
179181
});
180182

183+
after(() => {
184+
mongoose.disconnect();
185+
mongoServer.stop();
186+
});
187+
181188
describe('...', () => {
182-
it("...", async () => {
183-
const User = mongoose.model('User', new mongoose.Schema({ name: String }));
184-
const cnt = await User.count();
185-
expect(cnt).to.equal(0);
186-
});
189+
it("...", async () => {
190+
const User = mongoose.model('User', new mongoose.Schema({ name: String }));
191+
const cnt = await User.count();
192+
expect(cnt).to.equal(0);
193+
});
187194
});
188195
```
189196

@@ -195,25 +202,32 @@ import MongodbMemoryServer from 'mongodb-memory-server';
195202
// May require additional time for downloading MongoDB binaries
196203
jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000;
197204

205+
let mongoServer;
206+
198207
beforeAll(async () => {
199-
const mongoServer = new MongodbMemoryServer();
208+
mongoServer = new MongodbMemoryServer();
200209
const mongoUri = await mongoServer.getConnectionString();
201210
mongoose.connect(mongoUri, (err) => {
202211
console.error(err);
203212
});
204213
});
205214

215+
afterAll(() => {
216+
mongoose.disconnect();
217+
mongoServer.stop();
218+
});
219+
206220
describe('...', () => {
207-
it("...", async () => {
208-
const User = mongoose.model('User', new mongoose.Schema({ name: String }));
209-
const cnt = await User.count();
210-
expect(cnt).toEqual(0);
211-
});
221+
it("...", async () => {
222+
const User = mongoose.model('User', new mongoose.Schema({ name: String }));
223+
const cnt = await User.count();
224+
expect(cnt).toEqual(0);
225+
});
212226
});
213227
```
214228

215229
Additional examples of Jest tests:
216-
- simple example with `mongodb` in [tests in current package](https://github.com/nodkz/mongodb-memory-server/blob/master/src/__tests__/index-test.js)
230+
- simple example with `mongodb` in [tests in current package](https://github.com/nodkz/mongodb-memory-server/blob/master/src/__tests__/)
217231
- more complex example with `mongoose` in [graphql-compose-mongoose](https://github.com/nodkz/graphql-compose-mongoose/blob/master/src/__mocks__/mongooseCommon.js)
218232

219233

src/__tests__/__snapshots__/index-test.js.snap

-22
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`Multiple mongoServers should start several servers 1`] = `
4+
Object {
5+
"n": 2,
6+
"ok": 1,
7+
}
8+
`;
9+
10+
exports[`Multiple mongoServers should start several servers 2`] = `
11+
Object {
12+
"n": 2,
13+
"ok": 1,
14+
}
15+
`;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`Single mongoServer should start mongo server 1`] = `
4+
Object {
5+
"n": 2,
6+
"ok": 1,
7+
}
8+
`;

src/__tests__/index-test.js

-41
This file was deleted.

src/__tests__/multipleDB-test.js

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/* @flow */
2+
3+
import MongoDBMemoryServer from '../index';
4+
import { MongoClient } from 'mongodb';
5+
6+
jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000;
7+
8+
let db1;
9+
let db2;
10+
let mongoServer1;
11+
let mongoServer2;
12+
beforeAll(async () => {
13+
mongoServer1 = new MongoDBMemoryServer();
14+
const mongoUri = await mongoServer1.getConnectionString();
15+
db1 = await MongoClient.connect(mongoUri);
16+
17+
mongoServer2 = new MongoDBMemoryServer();
18+
const mongoUri2 = await mongoServer2.getConnectionString();
19+
db2 = await MongoClient.connect(mongoUri2);
20+
});
21+
22+
afterAll(() => {
23+
db1.close();
24+
db2.close();
25+
mongoServer1.stop();
26+
mongoServer2.stop();
27+
});
28+
29+
describe('Multiple mongoServers', () => {
30+
it('should start several servers', async () => {
31+
const col1 = db1.collection('test');
32+
const result1 = await col1.insert([{ a: 1 }, { b: 1 }]);
33+
expect(result1.result).toMatchSnapshot();
34+
expect(await col1.count({})).toBe(2);
35+
36+
const col2 = db2.collection('test');
37+
const result2 = await col2.insert([{ a: 2 }, { b: 2 }]);
38+
expect(result2.result).toMatchSnapshot();
39+
expect(await col2.count({})).toBe(2);
40+
});
41+
42+
it('should have different uri', async () => {
43+
const uri1 = await mongoServer1.getConnectionString();
44+
const uri2 = await mongoServer2.getConnectionString();
45+
46+
expect(uri1).not.toEqual(uri2);
47+
});
48+
});

src/__tests__/singleDB-test.js

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/* @flow */
2+
3+
import MongoDBMemoryServer from '../index';
4+
import { MongoClient } from 'mongodb';
5+
6+
jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000;
7+
8+
let db;
9+
let mongoServer;
10+
beforeAll(async () => {
11+
mongoServer = new MongoDBMemoryServer();
12+
const mongoUri = await mongoServer.getConnectionString();
13+
db = await MongoClient.connect(mongoUri);
14+
});
15+
16+
afterAll(() => {
17+
db.close();
18+
mongoServer.stop();
19+
});
20+
21+
describe('Single mongoServer', () => {
22+
it('should start mongo server', async () => {
23+
const col = db.collection('test');
24+
const result = await col.insert([{ a: 1 }, { b: 1 }]);
25+
expect(result.result).toMatchSnapshot();
26+
expect(await col.count({})).toBe(2);
27+
});
28+
});

0 commit comments

Comments
 (0)