@shelf/jest-mongodb
Version:
Run your tests using Jest & MongoDB in Memory server
39 lines (33 loc) • 1.77 kB
JavaScript
var _fs = require("fs");
var _path = require("path");
var _mongodbMemoryServer = require("mongodb-memory-server");
var _helpers = require("./helpers");
/* eslint-disable multiline-ternary */
const debug = require('debug')('jest-mongodb:setup');
module.exports = async config => {
const globalConfigPath = (0, _path.join)(config.rootDir, 'globalConfig.json');
const mongoMemoryServerOptions = (0, _helpers.getMongodbMemoryOptions)(config.rootDir);
const isReplSet = (0, _helpers.isMongoMemoryReplSetOptions)(mongoMemoryServerOptions);
debug(`isReplSet ${isReplSet}`);
// @ts-ignore
const mongo = isReplSet ? new _mongodbMemoryServer.MongoMemoryReplSet(mongoMemoryServerOptions) : new _mongodbMemoryServer.MongoMemoryServer(mongoMemoryServerOptions);
const options = (0, _helpers.getMongodbMemoryOptions)(config.rootDir);
const mongoConfig = {};
debug(`shouldUseSharedDBForAllJestWorkers: ${(0, _helpers.shouldUseSharedDBForAllJestWorkers)(config.rootDir)}`);
// if we run one mongodb instance for all tests
if ((0, _helpers.shouldUseSharedDBForAllJestWorkers)(config.rootDir)) {
if (!mongo.isRunning) {
await mongo.start();
}
const mongoURLEnvName = (0, _helpers.getMongoURLEnvName)(config.rootDir);
mongoConfig.mongoUri = await mongo.getUri();
process.env[mongoURLEnvName] = mongoConfig.mongoUri;
// Set reference to mongod in order to close the server during teardown.
global.__MONGOD__ = mongo;
}
mongoConfig.mongoDBName = (0, _helpers.isMongoMemoryReplSetOptions)(options) ? '' : options?.instance?.dbName;
// Write global config to disk because all tests run in different contexts.
(0, _fs.writeFileSync)(globalConfigPath, JSON.stringify(mongoConfig));
debug('Config is written');
};
;