test(plugins): plugin load + configure tests added
This commit is contained in:
parent
f97fda585f
commit
edffd2f595
11 changed files with 509 additions and 267 deletions
127
test/index.js
Normal file
127
test/index.js
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
'use strict'
|
||||
|
||||
var _ = require('lodash');
|
||||
var should = require('chai').should();
|
||||
var mockery = require('mockery');
|
||||
|
||||
|
||||
var config = require('./mocks/config');
|
||||
var CONFIG = _.cloneDeep(config);
|
||||
function requireFreshConfig() {
|
||||
return _.cloneDeep(CONFIG);
|
||||
};
|
||||
|
||||
|
||||
var currents = config.exchanges.plugins.current;
|
||||
|
||||
var walletMock = require('./mocks/wallet');
|
||||
var tickerMock = require('./mocks/ticker');
|
||||
var traderMock = require('./mocks/trader');
|
||||
var verifierMock = require('./mocks/verifier');
|
||||
|
||||
mockery.registerMock('lamassu-mockWallet', walletMock);
|
||||
mockery.registerMock('lamassu-mockTicker', tickerMock);
|
||||
mockery.registerMock('lamassu-mockTrader', traderMock);
|
||||
mockery.registerMock('lamassu-mockVerifier', verifierMock);
|
||||
|
||||
|
||||
describe('Plugins', function() {
|
||||
var plugins = null;
|
||||
|
||||
before(function() {
|
||||
mockery.enable({
|
||||
useCleanCache: true,
|
||||
warnOnReplace: false,
|
||||
warnOnUnregistered: false
|
||||
});
|
||||
|
||||
plugins = require('../lib/plugins');
|
||||
});
|
||||
|
||||
afterEach(function() {
|
||||
config = requireFreshConfig();
|
||||
});
|
||||
|
||||
it('should properly load', function() {
|
||||
should.exist(plugins);
|
||||
});
|
||||
|
||||
it('should throw when db is not provided', function() {
|
||||
plugins.init.should.throw(/db.*required/);
|
||||
});
|
||||
|
||||
it('should throw when invalid balance margin', function() {
|
||||
config.exchanges.settings.lowBalanceMargin = .99;
|
||||
|
||||
function configurer() {
|
||||
plugins.configure(config);
|
||||
};
|
||||
configurer.should.throw(/lowBalanceMargin/);
|
||||
});
|
||||
|
||||
it('should throw when module is not installed', function() {
|
||||
config.exchanges.plugins.current.ticker = 'inexistent-plugin';
|
||||
|
||||
function configurer() {
|
||||
plugins.configure(config);
|
||||
};
|
||||
configurer.should.throw(/module.*not installed/);
|
||||
});
|
||||
|
||||
it('should throw when used plugin has no SUPPORTED_MODULES', function() {
|
||||
var tmp = tickerMock.SUPPORTED_MODULES;
|
||||
delete tickerMock.SUPPORTED_MODULES;
|
||||
|
||||
function configurer() {
|
||||
plugins.configure(config);
|
||||
};
|
||||
configurer.should.throw(/required.*SUPPORTED_MODULES/);
|
||||
|
||||
tickerMock.SUPPORTED_MODULES = tmp;
|
||||
});
|
||||
|
||||
it('should throw when used plugin has required method missing', function() {
|
||||
var tmp = tickerMock.ticker;
|
||||
delete tickerMock.ticker;
|
||||
|
||||
function configurer() {
|
||||
plugins.configure(config);
|
||||
};
|
||||
configurer.should.throw(/fails.*implement.*method/);
|
||||
|
||||
tickerMock.ticker = tmp;
|
||||
});
|
||||
|
||||
describe('should configure all enabled plugins', function() {
|
||||
var confList = {};
|
||||
|
||||
before(function() {
|
||||
function configTest(name) {
|
||||
return function config(config) {
|
||||
should.exist(config);
|
||||
config.should.be.an.Object;
|
||||
confList[name] = config;
|
||||
};
|
||||
};
|
||||
|
||||
walletMock.config = configTest('wallet');
|
||||
tickerMock.config = configTest('ticker');
|
||||
traderMock.config = configTest('trader');
|
||||
verifierMock.config = configTest('verifier');
|
||||
|
||||
plugins.configure(config);
|
||||
});
|
||||
|
||||
['wallet', 'ticker', 'trader', 'verifier'].forEach(function(name) {
|
||||
it('should configure ' + name, function() {
|
||||
confList.should.have.property(name);
|
||||
should.exist(confList[name]);
|
||||
confList[name].should.be.an.Object;
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue