diff --git a/lib/storage.js b/lib/storage.js index f7105e4..c9c5180 100644 --- a/lib/storage.js +++ b/lib/storage.js @@ -19,13 +19,15 @@ var collections = { NOTIFICATIONS: 'notifications', }; -var Storage = function() {}; +var Storage = function(opts) { + opts = opts || {}; + this.db = opts.db; +}; Storage.prototype.connect = function(opts, cb) { var self = this; opts = opts || {}; - this.db = opts.db; if (this.db) return cb(); diff --git a/test/integration/server.js b/test/integration/server.js index 5a0140e..b51e49e 100644 --- a/test/integration/server.js +++ b/test/integration/server.js @@ -211,53 +211,51 @@ helpers.createAddresses = function(server, wallet, main, change, cb) { var db, storage, blockchainExplorer; function openDb(cb) { - function dropDb(cb) { - db.dropDatabase(function(err) { - should.not.exist(err); - return cb(); - }); - }; - if (db) { - return dropDb(cb); - } else { - var url = 'mongodb://localhost:27017/bws'; - mongodb.MongoClient.connect(url, function(err, _db) { - should.not.exist(err); - db = _db; - return dropDb(cb); - }); - } + var url = 'mongodb://localhost:27017/bws'; + mongodb.MongoClient.connect(url, function(err, _db) { + should.not.exist(err); + db = _db; + return cb(); + }); +}; + +function resetDb(cb) { + if (!db) return cb(); + db.dropDatabase(function(err) { + should.not.exist(err); + return cb(); + }); }; function closeDb(cb) { - if (db) { - db.close(true, function(err) { - should.not.exist(err); - db = null; - return cb(); - }); - } else { + if (!db) return cb(); + db.close(true, function(err) { + should.not.exist(err); + db = null; return cb(); - } + }); }; -describe('Wallet service', function() { - beforeEach(function(done) { - openDb(function() { - storage = new Storage(); - storage.connect({ - db: db - }, function(err) { - should.not.exist(err); - blockchainExplorer = sinon.stub(); - WalletService.initialize({ - storage: storage, - blockchainExplorer: blockchainExplorer, - }); - helpers.offset = 0; - done(); +describe('Wallet service', function() { + before(function(done) { + openDb(function() { + storage = new Storage({ + db: db }); + done(); + }); + }); + beforeEach(function(done) { + resetDb(function() { + blockchainExplorer = sinon.stub(); + + WalletService.initialize({ + storage: storage, + blockchainExplorer: blockchainExplorer, + }); + helpers.offset = 0; + done(); }); }); after(function(done) { @@ -3052,27 +3050,30 @@ describe('Wallet service', function() { describe('Blockchain monitor', function() { var addressSubscriber; + before(function(done) { + openDb(function() { + storage = new Storage({ + db: db + }); + done(); + }); + }); + beforeEach(function(done) { addressSubscriber = sinon.stub(); addressSubscriber.subscribe = sinon.stub(); sinon.stub(BlockchainMonitor.prototype, '_getAddressSubscriber').onFirstCall().returns(addressSubscriber); - openDb(function() { - storage = new Storage(); - storage.connect({ - db: db - }, function(err) { - should.not.exist(err); - blockchainExplorer = sinon.stub(); + resetDb(function() { + blockchainExplorer = sinon.stub(); - WalletService.initialize({ - storage: storage, - blockchainExplorer: blockchainExplorer, - }); - helpers.offset = 0; - - done(); + WalletService.initialize({ + storage: storage, + blockchainExplorer: blockchainExplorer, }); + helpers.offset = 0; + + done(); }); }); afterEach(function() { diff --git a/test/storage.js b/test/storage.js index 1748f58..f3240b7 100644 --- a/test/storage.js +++ b/test/storage.js @@ -12,7 +12,7 @@ var Model = require('../lib/model'); function initDb(cb) { - var url = 'mongodb://localhost:27017/bws'; + var url = 'mongodb://localhost:27017'; mongodb.MongoClient.connect(url, function(err, db) { should.not.exist(err); db.dropDatabase(function(err) { @@ -27,13 +27,10 @@ describe('Storage', function() { beforeEach(function(done) { initDb(function(err, db) { should.not.exist(err); - storage = new Storage(); - storage.connect({ + storage = new Storage({ db: db - }, function(err) { - should.not.exist(err); - done(); }); + done(); }); }); describe('Store & fetch wallet', function() {