This repository has been archived on 2025-10-29. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
2021-06-06 20:25:14 +02:00

114 lines
2.7 KiB
JavaScript

// if you need to test Gekko against real mocked data
// uncomment the following:
// var fs = require('fs');
// var bitstamp = require('bitstamp');
// var bs = new bitstamp;
// bs.transactions('btcusd', (err, data) => {
// if(err)
// throw err;
// var json = JSON.stringify(data, null, 4);
// fs.writeFileSync('./data/bitstamp_trades.json', json);
// });
// return;
var chai = require('chai');
var expect = chai.expect;
var should = chai.should;
var sinon = require('sinon');
var proxyquire = require('proxyquire');
var _ = require('lodash');
var moment = require('moment');
var util = require(__dirname + '/../../core/util');
var config = util.getConfig();
var dirs = util.dirs();
var TRADES = require('./data/bitstamp_trades.json');
return; // TEMP
var FakeExchange = function() {};
FakeExchange.prototype = {
transactions: function(since, handler, descending) {
handler(
null,
TRADES
);
}
}
var transactionsSpy = sinon.spy(FakeExchange.prototype, 'transactions');
spoofer = {
bitstamp: FakeExchange
}
describe('exchanges/bitstamp', function() {
var Bitstamp = proxyquire(dirs.gekko + 'exchange/wrappers/bitstamp', spoofer);
var bs;
it('should instantiate', function() {
bs = new Bitstamp(config.watch);
});
it('should correctly fetch historical trades', function() {
bs.getTrades(null, _.noop, false);
expect(transactionsSpy.callCount).to.equal(1);
var args = transactionsSpy.lastCall.args;
expect(args.length).to.equal(2);
expect(args[0]).to.equal('btcusd');
});
it('should retry on exchange error', function() {
var ErrorFakeExchange = function() {};
ErrorFakeExchange.prototype = {
transactions: function(since, handler, descending) {
handler('Auth error');
}
}
spoofer = {
bitstamp: ErrorFakeExchange
}
var ErroringBitstamp = proxyquire(dirs.exchanges + 'bitstamp', spoofer);
var ebs = new ErroringBitstamp(config.watch);
ebs.retry = _.noop;
var retrySpy = sinon.spy(ebs, 'retry');
ebs.getTrades(null, _.noop)
expect(retrySpy.callCount).to.equal(1);
var args = retrySpy.lastCall.args;
expect(args[1].length).to.equal(2);
expect(args[1][0]).to.equal(null);
})
it('should correctly parse historical trades', function(done) {
var check = function(err, trades) {
expect(err).to.equal(null);
expect(trades.length).to.equal(TRADES.length);
var oldest = _.first(trades);
var OLDEST = _.last(TRADES);
expect(oldest.tid).to.equal(+OLDEST.tid);
expect(oldest.price).to.equal(+OLDEST.price);
expect(oldest.amount).to.equal(+OLDEST.amount);
expect(oldest.date).to.equal(OLDEST.date);
done();
}
bs.getTrades(null, check, false);
});
});