diff --git a/index.js b/index.js index c769b0c..d3a21ae 100644 --- a/index.js +++ b/index.js @@ -493,9 +493,10 @@ var isMongojsDb = function(db) { }; var connect = function(config, collections) { - if (isMongojsDb(config)) return config; if (isDriverDb(config)) { var driverDb = config; + } else if (isMongojsDb(config)) { + var mongojsDb = config; } else { var connectionString = parseConfig(config); var dbName = (connectionString.match(/\/([^\/\?]+)(\?|$)/) || [])[1] || 'db'; @@ -519,6 +520,14 @@ var connect = function(config, collections) { callback(null, driverDb); }; } + if (mongojsDb) { + ondb = function(callback) { + mongojsDb.open(function(err, db) { + if (err) callback(err); + callback(null, db); + }); + } + } var that = new Database(dbName, ondb); that.bson = mongodb.BSONPure; // backwards compat (require('bson') instead) diff --git a/package.json b/package.json index 4febdff..a927152 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "test": "tape test/test-*.js; echo \"Harmony tests\"; node --harmony node_modules/tape/bin/tape test/test-*.js" }, "devDependencies": { + "each-series": "^0.2.0", "tape": "^2.13.4" } } diff --git a/test/test-pass-driver-db.js b/test/test-pass-driver-db.js index 2b7a9e7..7d97245 100644 --- a/test/test-pass-driver-db.js +++ b/test/test-pass-driver-db.js @@ -1,33 +1,39 @@ var test = require('tape'); var mongodb = require('mongodb'); var mongojs = require('../'); +var each = require('each-series'); -test('receive a driver db instance', function(t) { +test('receive a driver db or mongojs instance', function(t) { mongodb.Db.connect('mongodb://localhost/test', function(err, thedb) { - var db = mongojs(thedb, ['a']); - var afterFind = function() { - db.a.remove(function(err) { - t.ok(!err); - t.equal(db.toString(), 'test'); - t.end(); - }); - }; + var doTests = function(db, callback) { + var afterFind = function() { + db.a.remove(function(err) { + t.ok(!err); + t.equal(db.toString(), 'test'); + callback(); + }); + }; - var afterInsert = function(err) { - t.ok(!err); + var afterInsert = function(err) { + t.ok(!err); - db.a.findOne(function(err, data) { - t.equal(data.name, 'Pidgey'); - afterFind(); - }); - }; + db.a.findOne(function(err, data) { + t.equal(data.name, 'Pidgey'); + afterFind(); + }); + }; - var afterRemove = function(err) { - t.ok(!err); - db.a.insert({name: 'Pidgey'}, afterInsert); + var afterRemove = function(err) { + t.ok(!err); + db.a.insert({name: 'Pidgey'}, afterInsert); + }; + db.a.remove(afterRemove); }; - db.a.remove(afterRemove); + + each([mongojs(thedb, ['a']), mongojs(mongojs('test', []), ['a'])], function(db, i, cb) { + doTests(db, cb); + }, t.end.bind(t)); }); }); diff --git a/test/test-pass-mongojs-db.js b/test/test-pass-mongojs-db.js deleted file mode 100644 index 868a1f0..0000000 --- a/test/test-pass-mongojs-db.js +++ /dev/null @@ -1,9 +0,0 @@ -var test = require('tape'); -var mongojs = require('../'); -var db = mongojs('test'); - -test('receive a driver db instance', function(t) { - var thedb = mongojs(db); - t.ok(db === thedb); - t.end(); -});