From b863ca352f900755375a2173a8725dbdb2493f5a Mon Sep 17 00:00:00 2001 From: Luke Childs Date: Thu, 27 Dec 2018 19:12:52 +0700 Subject: [PATCH] Revert "Revert "Support passing both URL and collection name to constructor (#25)"" And fix version number change This reverts commit 8f06df9bf96f9201f0cbbbf5825a5778f46da780. --- packages/keyv-mongo/.gitignore | 4 +--- packages/keyv-mongo/package.json | 3 ++- packages/keyv-mongo/src/index.js | 14 +++++++------- packages/keyv-mongo/test/test.js | 15 +++++++++++++-- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/packages/keyv-mongo/.gitignore b/packages/keyv-mongo/.gitignore index c501f33a..2e3391d6 100644 --- a/packages/keyv-mongo/.gitignore +++ b/packages/keyv-mongo/.gitignore @@ -1,4 +1,5 @@ ## Node +.env #npm5 package-lock.json @@ -23,9 +24,6 @@ coverage # nyc test coverage .nyc_output -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - # node-waf configuration .lock-wscript diff --git a/packages/keyv-mongo/package.json b/packages/keyv-mongo/package.json index b0190829..251ea9da 100644 --- a/packages/keyv-mongo/package.json +++ b/packages/keyv-mongo/package.json @@ -42,11 +42,12 @@ "pify": "3.0.0" }, "devDependencies": { + "@keyv/test-suite": "*", "ava": "^0.25.0", "coveralls": "^3.0.0", + "dotenv": "^6.2.0", "eslint-config-xo-lukechilds": "^1.0.0", "keyv": "*", - "@keyv/test-suite": "*", "nyc": "^11.0.3", "requirable": "^1.0.1", "this": "^1.0.2", diff --git a/packages/keyv-mongo/src/index.js b/packages/keyv-mongo/src/index.js index cc3fa39b..c14a6f0d 100644 --- a/packages/keyv-mongo/src/index.js +++ b/packages/keyv-mongo/src/index.js @@ -5,20 +5,20 @@ const mongojs = require('mongojs'); const pify = require('pify'); class KeyvMongo extends EventEmitter { - constructor(opts) { + constructor(url, opts) { super(); this.ttlSupport = false; - opts = opts || {}; - if (typeof opts === 'string') { - opts = { url: opts }; + url = url || {}; + if (typeof url === 'string') { + url = { url }; } - if (opts.uri) { - opts = Object.assign({ url: opts.uri }, opts); + if (url.uri) { + url = Object.assign({ url: url.uri }, url); } this.opts = Object.assign({ url: 'mongodb://127.0.0.1:27017', collection: 'keyv' - }, opts); + }, url, opts); this.db = mongojs(this.opts.url); const collection = this.db.collection(this.opts.collection); diff --git a/packages/keyv-mongo/test/test.js b/packages/keyv-mongo/test/test.js index e19a06ec..792f5d69 100644 --- a/packages/keyv-mongo/test/test.js +++ b/packages/keyv-mongo/test/test.js @@ -1,11 +1,14 @@ +import 'dotenv/config'; // eslint-disable-line import/no-unassigned-import import test from 'ava'; import keyvTestSuite, { keyvOfficialTests } from '@keyv/test-suite'; import Keyv from 'keyv'; import KeyvMongo from 'this'; -keyvOfficialTests(test, Keyv, 'mongodb://127.0.0.1:27017', 'mongodb://127.0.0.1:1234'); +const mongoURL = process.env.MONGO_URL || 'mongodb://127.0.0.1:27017'; -const store = () => new KeyvMongo(); +keyvOfficialTests(test, Keyv, mongoURL, 'mongodb://127.0.0.1:1234'); + +const store = () => new KeyvMongo(mongoURL); keyvTestSuite(test, Keyv, store); test('Collection option merges into default options', t => { @@ -16,6 +19,14 @@ test('Collection option merges into default options', t => { }); }); +test('Collection option merges into default options if URL is passed', t => { + const store = new KeyvMongo(mongoURL, { collection: 'foo' }); + t.deepEqual(store.opts, { + url: mongoURL, + collection: 'foo' + }); +}); + test('.delete() with no args doesn\'t empty the collection', async t => { const store = new KeyvMongo('foo'); // Make sure we don't actually connect t.false(await store.delete());