UNPKG

@shelf/jest-mongodb

Version:

Run your tests using Jest & MongoDB in Memory server

39 lines (33 loc) 1.77 kB
"use strict"; 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'); };