Make fiat balance test use new Trader API
Leave out the trading part for now since nobody is using this feature in production.
This commit is contained in:
parent
06242fe78a
commit
206b33ec38
2 changed files with 48 additions and 57 deletions
|
|
@ -1,57 +0,0 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var assert = require('chai').assert;
|
|
||||||
|
|
||||||
var LamassuConfig = require('lamassu-config');
|
|
||||||
var con = 'psql://lamassu:lamassu@localhost/lamassu';
|
|
||||||
var config = new LamassuConfig(con);
|
|
||||||
|
|
||||||
var api = require('../lib/protocol/api/api.js');
|
|
||||||
var RATE = 100;
|
|
||||||
var SATOSHI_FACTOR = Math.pow(10, 8);
|
|
||||||
var cfg;
|
|
||||||
|
|
||||||
describe('fiatBalance test', function() {
|
|
||||||
before(function(done) {
|
|
||||||
config.load(function(err, result) {
|
|
||||||
assert.isNull(err);
|
|
||||||
cfg = result.exchanges;
|
|
||||||
api.init(cfg);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
after(function(done) {
|
|
||||||
config.end();
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should calculate balance correctly with transfer exchange only', function() {
|
|
||||||
// We have 2 bitcoins, want to trade 1 bitcoin for 100 fiat
|
|
||||||
var balance = api.fiatBalance(RATE / cfg.settings.commission, {
|
|
||||||
transferBalance: 2 * SATOSHI_FACTOR,
|
|
||||||
tradeBalance: null
|
|
||||||
}, 1 * SATOSHI_FACTOR, 100);
|
|
||||||
assert.equal(balance, 100 / cfg.settings.lowBalanceMargin);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should calculate balance correctly with both exchanges (trade > transfer)', function() {
|
|
||||||
// We have 2 bitcoins for transfer, 2000 fiat for trade, want to trade 1
|
|
||||||
// bitcoin for 100 fiat
|
|
||||||
var balance = api.fiatBalance(RATE / cfg.settings.commission, {
|
|
||||||
transferBalance: 2 * SATOSHI_FACTOR,
|
|
||||||
tradeBalance: 2000
|
|
||||||
}, 1 * SATOSHI_FACTOR, 100);
|
|
||||||
assert.equal(balance, 100 / cfg.settings.lowBalanceMargin);
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should calculate balance correctly with both exchanges (transfer > trade)', function() {
|
|
||||||
// We have 2 bitcoins for transfer, 150 fiat for trade, want to trade 1
|
|
||||||
// bitcoin for 100 fiat
|
|
||||||
var balance = api.fiatBalance(RATE / cfg.settings.commission, {
|
|
||||||
transferBalance: 2 * SATOSHI_FACTOR,
|
|
||||||
tradeBalance: 150
|
|
||||||
}, 1 * SATOSHI_FACTOR, 100);
|
|
||||||
assert.equal(balance, 50 / cfg.settings.lowBalanceMargin);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
48
test/unit/traderFiatBalanceTest.js
Normal file
48
test/unit/traderFiatBalanceTest.js
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var assert = require('chai').assert;
|
||||||
|
var Trader = require('../../lib/trader.js');
|
||||||
|
var PostgresqlInterface = require('../../lib/protocol/db/postgresql_interface.js');
|
||||||
|
|
||||||
|
var db = 'psql://lamassu:lamassu@localhost/lamassu-test';
|
||||||
|
var psqlInterface = new PostgresqlInterface(db);
|
||||||
|
|
||||||
|
var RATE = 100;
|
||||||
|
var CURRENCY = 'USD';
|
||||||
|
var SATOSHI_FACTOR = Math.pow(10, 8);
|
||||||
|
var LOW_BALANCE_MARGIN = 1.2;
|
||||||
|
var COMMISSION = 1.1;
|
||||||
|
|
||||||
|
var settings = {
|
||||||
|
currency: CURRENCY,
|
||||||
|
lowBalanceMargin: LOW_BALANCE_MARGIN,
|
||||||
|
commission: COMMISSION
|
||||||
|
};
|
||||||
|
|
||||||
|
describe('trader/fiatBalance', function() {
|
||||||
|
it('should calculate balance correctly with transfer exchange only', function() {
|
||||||
|
var trader = new Trader(db);
|
||||||
|
trader.configure({
|
||||||
|
exchanges: {
|
||||||
|
plugins: {
|
||||||
|
current: {
|
||||||
|
transfer: 'blockchain',
|
||||||
|
ticker: 'bitpay'
|
||||||
|
},
|
||||||
|
settings: { blockchain: {}, bitpay: {} }
|
||||||
|
},
|
||||||
|
settings: settings
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// We have 2 bitcoins, want to trade 1 bitcoin for 100 fiat
|
||||||
|
trader.balance = {
|
||||||
|
transferBalance: 2 * SATOSHI_FACTOR,
|
||||||
|
tradeBalance: null
|
||||||
|
};
|
||||||
|
trader.rates[CURRENCY] = { rate: RATE };
|
||||||
|
|
||||||
|
var balance = trader.fiatBalance(1 * SATOSHI_FACTOR, 100);
|
||||||
|
assert.equal(balance, (100 / LOW_BALANCE_MARGIN) * COMMISSION);
|
||||||
|
});
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue