1 | const NodeEnvironment = require('jest-environment-node');
|
2 | const path = require('path');
|
3 | const fs = require('fs');
|
4 | const uuid = require('uuid');
|
5 | const {MongoMemoryServer, MongoMemoryReplSet} = require('mongodb-memory-server');
|
6 | const {getMongodbMemoryOptions} = require('./helpers');
|
7 |
|
8 | const debug = require('debug')('jest-mongodb:environment');
|
9 |
|
10 | const cwd = process.cwd();
|
11 |
|
12 | const globalConfigPath = path.join(cwd, 'globalConfig.json');
|
13 | const options = getMongodbMemoryOptions();
|
14 | const isReplSet = Boolean(options.replSet);
|
15 |
|
16 | const TestEnvironment = NodeEnvironment.default ? NodeEnvironment.default : NodeEnvironment;
|
17 |
|
18 | debug(`isReplSet`, isReplSet);
|
19 |
|
20 | let mongo = isReplSet ? new MongoMemoryReplSet(options) : new MongoMemoryServer(options);
|
21 |
|
22 | module.exports = class MongoEnvironment extends TestEnvironment {
|
23 | constructor(config, context) {
|
24 | super(config, context);
|
25 | }
|
26 |
|
27 | async setup() {
|
28 | debug('Setup MongoDB Test Environment');
|
29 |
|
30 | const globalConfig = JSON.parse(fs.readFileSync(globalConfigPath, 'utf-8'));
|
31 |
|
32 | if (globalConfig.mongoUri) {
|
33 | this.global.__MONGO_URI__ = globalConfig.mongoUri;
|
34 | } else {
|
35 | await mongo.start();
|
36 |
|
37 | this.global.__MONGO_URI__ = mongo.getUri();
|
38 | }
|
39 |
|
40 | this.global.__MONGO_DB_NAME__ = globalConfig.mongoDBName || uuid.v4();
|
41 |
|
42 | await super.setup();
|
43 | }
|
44 |
|
45 | async teardown() {
|
46 | debug('Teardown MongoDB Test Environment');
|
47 |
|
48 | await mongo.stop();
|
49 |
|
50 | await super.teardown();
|
51 | }
|
52 |
|
53 | runScript(script) {
|
54 | return super.runScript(script);
|
55 | }
|
56 | };
|