diff --git a/README.md b/README.md index d77256009..52c0cd46d 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ All options are optional. const mongod = new MongodbMemoryServer({ instance: { port?: ?number, // by default choose any free port + dbName?: string, // by default generate random dbName dbPath?: string, // by default create in temp directory storageEngine?: string, // by default `ephemeralForTest` debug?: boolean, // by default false diff --git a/src/MongoMemoryServer.js b/src/MongoMemoryServer.js index e613cca4c..a023298e4 100644 --- a/src/MongoMemoryServer.js +++ b/src/MongoMemoryServer.js @@ -13,6 +13,7 @@ export type MongoMemoryServerOptsT = { instance: { port?: ?number, dbPath?: string, + dbName?: string, storageEngine?: string, debug?: boolean | Function, }, @@ -32,6 +33,7 @@ export type MongoMemoryServerOptsT = { export type MongoInstanceDataT = { port: number, dbPath: string, + dbName: string, uri: string, storageEngine: string, childProcess: ChildProcess, @@ -41,9 +43,12 @@ export type MongoInstanceDataT = { }, }; -async function generateConnectionString(port: number, dbName: ?string): Promise { - const db = dbName || (await uuid()); - return `mongodb://localhost:${port}/${db}`; +async function generateDbName(dbName?: string): Promise { + return dbName || uuid(); +} + +async function generateConnectionString(port: number, dbName: string): Promise { + return `mongodb://localhost:${port}/${dbName}`; } export default class MongoMemoryServer { @@ -106,7 +111,8 @@ export default class MongoMemoryServer { data.port = await getport(instOpts.port); this.debug = Debug(`Mongo[${data.port}]`); this.debug.enabled = !!this.opts.debug; - data.uri = await generateConnectionString(data.port); + data.dbName = await generateDbName(instOpts.dbName); + data.uri = await generateConnectionString(data.port, data.dbName); data.storageEngine = instOpts.storageEngine || 'ephemeralForTest'; if (instOpts.dbPath) { data.dbPath = instOpts.dbPath; @@ -172,7 +178,7 @@ export default class MongoMemoryServer { return generateConnectionString(port, otherDbName); } // generate new random db name - return generateConnectionString(port); + return generateConnectionString(port, await generateDbName()); } return uri;