* Initial itBit implementation * Add tests for calculatePrice in exchange/itbit.js * Add etherium to supported crypto codes in common/itbit.js * Apply standardjs to itbit files * itbit trade test. not important * test getCurrencyRates in ticker/itbit.js
78 lines
1.5 KiB
JavaScript
78 lines
1.5 KiB
JavaScript
import test from 'ava'
|
|
import rewire from 'rewire'
|
|
|
|
function rewireCalculatePrice (commonMock) {
|
|
const itbit = rewire('../../lib/plugins/exchange/itbit/itbit')
|
|
|
|
itbit.__set__('common', commonMock)
|
|
|
|
const calculatePrice = itbit.__get__('calculatePrice')
|
|
|
|
return calculatePrice
|
|
}
|
|
|
|
test('calculate minimum available price for buy', async t => {
|
|
const commonMock = {
|
|
request () {
|
|
return Promise.resolve({
|
|
asks: [
|
|
[2, 10],
|
|
[4, 15],
|
|
[4.5, 17]
|
|
],
|
|
bids: []
|
|
})
|
|
}
|
|
}
|
|
|
|
const calculatePrice = rewireCalculatePrice(commonMock)
|
|
|
|
let price = await calculatePrice('buy', 'XBTUSD', 20)
|
|
|
|
t.is(price, 4)
|
|
})
|
|
|
|
test('calculate minimum available price for sell', async t => {
|
|
const commonMock = {
|
|
request () {
|
|
return Promise.resolve({
|
|
bids: [
|
|
[2, 10],
|
|
[3, 15],
|
|
[4.5, 17]
|
|
],
|
|
asks: []
|
|
})
|
|
}
|
|
}
|
|
|
|
const calculatePrice = rewireCalculatePrice(commonMock)
|
|
|
|
let price = await calculatePrice('sell', 'XBTUSD', 20)
|
|
|
|
t.is(price, 3)
|
|
})
|
|
|
|
test('throw error on insufficient trade depth', async t => {
|
|
t.plan(1)
|
|
|
|
const commonMock = {
|
|
request () {
|
|
return Promise.resolve({
|
|
asks: [
|
|
[2, 10],
|
|
[4, 15],
|
|
[4.5, 17]
|
|
],
|
|
bids: []
|
|
})
|
|
}
|
|
}
|
|
|
|
const calculatePrice = rewireCalculatePrice(commonMock)
|
|
|
|
calculatePrice('buy', 'XBTUSD', 100)
|
|
.catch(err => {
|
|
t.is(err.message, 'Insufficient market depth')
|
|
})
|
|
})
|