Skip to content

Commit e105711

Browse files
committed
test: Mocking mongoose connect/disconnect with MongodbMemoryServer
1 parent 6254537 commit e105711

15 files changed

+55
-11
lines changed

src/__mocks__/mongooseCommon.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,19 @@ import MongodbMemoryServer from 'mongodb-memory-server';
66

77
mongoose.Promise = Promise;
88

9-
const mongoServer = new MongodbMemoryServer();
10-
119
jasmine.DEFAULT_TIMEOUT_INTERVAL = 60000;
1210

13-
mongoServer.getConnectionString().then(mongoUri => {
14-
mongoose.connect(mongoUri);
11+
const originalConnect = mongoose.connect;
12+
mongoose.connect = async () => {
13+
const mongoServer = new MongodbMemoryServer();
14+
15+
const mongoUri = await mongoServer.getConnectionString();
16+
17+
originalConnect.bind(mongoose)(mongoUri);
1518

1619
mongoose.connection.on('error', e => {
1720
if (e.message.code === 'ETIMEDOUT') {
1821
console.error(e);
19-
mongoose.connect(mongoUri);
2022
} else {
2123
throw e;
2224
}
@@ -25,6 +27,11 @@ mongoServer.getConnectionString().then(mongoUri => {
2527
mongoose.connection.once('open', () => {
2628
// console.log(`MongoDB successfully connected to ${mongoUri}`);
2729
});
28-
});
30+
31+
mongoose.connection.once('disconnected', () => {
32+
// console.log('MongoDB disconnected!');
33+
mongoServer.stop();
34+
});
35+
};
2936

3037
export { mongoose, Schema };

src/__tests__/composeWithMongoose-test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import { UserModel } from '../__mocks__/userModel';
77
import { composeWithMongoose } from '../composeWithMongoose';
88
import typeStorage from '../typeStorage';
99

10+
beforeAll(() => UserModel.base.connect());
11+
afterAll(() => UserModel.base.disconnect());
12+
1013
describe('composeWithMongoose ->', () => {
1114
beforeEach(() => {
1215
typeStorage.clear();

src/__tests__/fieldConverter-test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ import {
1919
import { composeWithMongoose } from '../composeWithMongoose';
2020
import GraphQLMongoID from '../types/mongoid';
2121

22+
beforeAll(() => UserModel.base.connect());
23+
afterAll(() => UserModel.base.disconnect());
24+
2225
const {
2326
GraphQLString,
2427
GraphQLFloat,

src/resolvers/__tests__/count-test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import typeStorage from '../../typeStorage';
88

99
const { GraphQLInt } = graphql;
1010

11+
beforeAll(() => UserModel.base.connect());
12+
afterAll(() => UserModel.base.disconnect());
13+
1114
describe('count() ->', () => {
1215
let UserTypeComposer;
1316

src/resolvers/__tests__/createOne-test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ import typeStorage from '../../typeStorage';
1010

1111
const { GraphQLNonNull, GraphQLObjectType } = graphql;
1212

13+
beforeAll(() => UserModel.base.connect());
14+
afterAll(() => UserModel.base.disconnect());
15+
1316
describe('createOne() ->', () => {
1417
let UserTypeComposer;
1518

src/resolvers/__tests__/findById-test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ import typeStorage from '../../typeStorage';
1010

1111
const { GraphQLNonNull } = graphql;
1212

13+
beforeAll(() => UserModel.base.connect());
14+
afterAll(() => UserModel.base.disconnect());
15+
1316
describe('findById() ->', () => {
1417
let UserTypeComposer;
1518
let PostTypeComposer;

src/resolvers/__tests__/findByIds-test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ import typeStorage from '../../typeStorage';
1010

1111
const { GraphQLNonNull, GraphQLList } = graphql;
1212

13+
beforeAll(() => UserModel.base.connect());
14+
afterAll(() => UserModel.base.disconnect());
15+
1316
describe('findByIds() ->', () => {
1417
let UserTypeComposer;
1518
let PostTypeComposer;

src/resolvers/__tests__/findMany-test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ import findMany from '../findMany';
66
import { composeWithMongoose } from '../../composeWithMongoose';
77
import typeStorage from '../../typeStorage';
88

9+
beforeAll(() => UserModel.base.connect());
10+
afterAll(() => UserModel.base.disconnect());
11+
912
describe('findMany() ->', () => {
1013
let UserTypeComposer;
1114

src/resolvers/__tests__/findOne-test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import typeStorage from '../../typeStorage';
88

99
const { GraphQLNonNull } = graphql;
1010

11+
beforeAll(() => UserModel.base.connect());
12+
afterAll(() => UserModel.base.disconnect());
13+
1114
describe('findOne() ->', () => {
1215
let UserTypeComposer;
1316

src/resolvers/__tests__/removeById-test.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ import typeStorage from '../../typeStorage';
1010

1111
const { GraphQLNonNull, GraphQLObjectType } = graphql;
1212

13+
beforeAll(() => UserModel.base.connect());
14+
afterAll(() => UserModel.base.disconnect());
15+
1316
describe('removeById() ->', () => {
1417
let UserTypeComposer;
1518

0 commit comments

Comments
 (0)