@shelf/jest-mongodb
Version:
Run your tests using Jest & MongoDB in Memory server
42 lines (40 loc) • 1.6 kB
JavaScript
var _path = require("path");
var _fs = require("fs");
var _crypto = require("crypto");
var _jestEnvironmentNode = require("jest-environment-node");
var _mongodbMemoryServer = require("mongodb-memory-server");
var _helpers = require("./helpers");
const debug = require('debug')('jest-mongodb:environment');
module.exports = class MongoEnvironment extends _jestEnvironmentNode.TestEnvironment {
constructor(config, context) {
super(config, context);
this.globalConfigPath = (0, _path.join)(config.globalConfig.rootDir, 'globalConfig.json');
const options = (0, _helpers.getMongodbMemoryOptions)(config.globalConfig.rootDir);
const isReplSet = (0, _helpers.isMongoMemoryReplSetOptions)(options);
debug(`isReplSet`, isReplSet);
this.mongo = isReplSet ? new _mongodbMemoryServer.MongoMemoryReplSet(options) : new _mongodbMemoryServer.MongoMemoryServer(options);
}
async setup() {
debug('Setup MongoDB Test Environment');
const globalConfig = JSON.parse((0, _fs.readFileSync)(this.globalConfigPath, 'utf-8'));
if (globalConfig.mongoUri) {
this.global.__MONGO_URI__ = globalConfig.mongoUri;
} else {
await this.mongo.start();
this.global.__MONGO_URI__ = this.mongo.getUri();
}
this.global.__MONGO_DB_NAME__ = globalConfig.mongoDBName || (0, _crypto.randomUUID)();
await super.setup();
}
async teardown() {
debug('Teardown MongoDB Test Environment');
await this.mongo.stop();
await super.teardown();
}
// @ts-ignore
runScript(script) {
// @ts-ignore
return super.runScript(script);
}
};
;