bitcore-node-zcash/test/bus.integration.js

105 lines
2.3 KiB
JavaScript

'use strict';
var sinon = require('sinon');
var Service = require('../lib/service');
var BitcoreNode = require('../lib/node');
var util = require('util');
var should = require('chai').should();
var index = require('../lib');
var log = index.log;
var TestService = function(options) {
this.node = options.node;
};
util.inherits(TestService, Service);
TestService.dependencies = [];
TestService.prototype.start = function(callback) {
callback();
};
TestService.prototype.stop = function(callback) {
callback();
};
TestService.prototype.close = function(callback) {
callback();
};
TestService.prototype.getPublishEvents = function() {
return [
{
name: 'test/testEvent',
scope: this,
subscribe: this.subscribe.bind(this, 'test/testEvent'),
unsubscribe: this.unsubscribe.bind(this, 'test/testEvent')
}
];
};
TestService.prototype.subscribe = function(name, emitter, params) {
emitter.emit(name, params);
};
TestService.prototype.unsubscribe = function(name, emitter) {
emitter.emit('unsubscribe');
};
describe('Bus Functionality', function() {
var sandbox = sinon.sandbox.create();
beforeEach(function() {
sandbox.stub(log, 'info');
});
afterEach(function() {
sandbox.restore();
});
it('should subscribe to testEvent', function(done) {
var node = new BitcoreNode({
datadir: './',
network: 'testnet',
port: 8888,
services: [
{
name: 'testService',
config: {},
module: TestService
}
]
});
node.start(function() {
var bus = node.openBus();
var params = 'somedata';
bus.on('test/testEvent', function(data) {
data.should.be.equal(params);
done();
});
bus.subscribe('test/testEvent', params);
});
});
it('should unsubscribe from a testEvent', function(done) {
var node = new BitcoreNode({
datadir: './',
network: 'testnet',
port: 8888,
services: [
{
name: 'testService',
config: {},
module: TestService
}
]
});
node.start(function() {
var bus = node.openBus();
var params = 'somedata';
bus.on('unsubscribe', function() {
done();
});
bus.subscribe('test/testEvent');
bus.unsubscribe('test/testEvent');
});
});
});