diff --git a/lib/networkmonitor.js b/lib/networkmonitor.js index 2cd4f151..434ce000 100644 --- a/lib/networkmonitor.js +++ b/lib/networkmonitor.js @@ -14,21 +14,23 @@ var Peer = p2p.Peer; var Messages = p2p.Messages; var logger = require('./logger'); -function NetworkMonitor(eventBus, opts) { - $.checkArgument(eventBus instanceof EventBus); +function NetworkMonitor(eventBus, peer) { + $.checkArgument(eventBus); + $.checkArgument(peer); this.bus = eventBus; - - opts = opts || {}; - opts.network = opts.network || Networks.defaultNetwork; - opts.host = opts.host || 'localhost'; - opts.port = opts.port || Networks.defaultNetwork.port; - - var peer = new Peer(opts.host, opts.port, opts.network); this.peer = peer; this.setupPeer(peer); } util.inherits(NetworkMonitor, EventEmitter); +NetworkMonitor.create = function(eventBus, opts) { + opts.network = opts.network || Networks.defaultNetwork; + opts.host = opts.host || 'localhost'; + opts.port = opts.port || Networks.defaultNetwork.port; + + var peer = new Peer(opts.host, opts.port, opts.network); + return new NetworkMonitor(eventBus, peer); +}; NetworkMonitor.prototype.setupPeer = function(peer) { var self = this; diff --git a/test/networkmonitor.js b/test/networkmonitor.js index 98437b78..535a9412 100644 --- a/test/networkmonitor.js +++ b/test/networkmonitor.js @@ -2,29 +2,38 @@ var chai = require('chai'); var should = chai.should(); -var sinon = require('sinon'); var bitcore = require('bitcore'); +var Transaction = bitcore.Transaction; +var EventEmitter = require('events').EventEmitter; var NetworkMonitor = require('../lib/networkmonitor'); var EventBus = require('../lib/eventbus'); -var util = require('util'); -var Promise = require('bluebird'); -Promise.longStackTraces(); -var bus = new EventBus(); //sinon.createStubInstance(EventBus); +describe('NetworkMonitor', function() { -describe.only('NetworkMonitor', function() { - - this.timeout(10000); + // mocks + var mockTx, busMock, peerMock; + beforeEach(function() { + mockTx = new Transaction(); + busMock = new EventBus(); + peerMock = new EventEmitter(); + peerMock.connect = function() { + this.emit('tx', { + transaction: mockTx + }); + }; + }); it('instantiate', function() { - var nm = new NetworkMonitor(bus); + var nm = new NetworkMonitor(busMock, peerMock); should.exist(nm); }); + it('start', function(cb) { - var nm = new NetworkMonitor(bus); - bus.register(bitcore.Transaction, function(tx) { - console.log('new tx: ', tx.id); + var nm = new NetworkMonitor(busMock, peerMock); + busMock.register(bitcore.Transaction, function(tx) { + tx.id.should.equal(mockTx.id); + cb(); }); nm.start(); });