Initial commit
This commit is contained in:
107
spec/api/v2/coin_gecko/tickers_spec.rb
Normal file
107
spec/api/v2/coin_gecko/tickers_spec.rb
Normal file
@@ -0,0 +1,107 @@
|
||||
# encoding: UTF-8
|
||||
# frozen_string_literal: true
|
||||
|
||||
describe API::V2::CoinGecko::Tickers, type: :request do
|
||||
describe 'GET /api/v2/coingecko/tickers' do
|
||||
before(:each) { delete_measurments('trades') }
|
||||
after(:each) { delete_measurments('trades') }
|
||||
|
||||
before do
|
||||
create_list(:order_bid, 5, :btcusd)
|
||||
create_list(:order_ask, 5, :btcusd)
|
||||
end
|
||||
|
||||
context 'no trades executed yet' do
|
||||
let(:expected_btcusd_ticker) do
|
||||
{
|
||||
'ticker_id' => 'BTC_USD',
|
||||
'base_currency' => 'BTC',
|
||||
'target_currency' => 'USD',
|
||||
'last_price' => '0.0',
|
||||
'target_volume' => '0.0', 'base_volume' => '0.0',
|
||||
'bid' => '1.0', 'ask' => '1.0',
|
||||
'high' => '0.0', 'low' => '0.0'
|
||||
}
|
||||
end
|
||||
|
||||
let(:expected_btceth_ticker) do
|
||||
{
|
||||
'ticker_id' => 'BTC_ETH',
|
||||
'base_currency' => 'BTC',
|
||||
'target_currency' => 'ETH',
|
||||
'last_price' => '0.0',
|
||||
'target_volume' => '0.0', 'base_volume' => '0.0',
|
||||
'bid' => '0.0', 'ask' => '0.0',
|
||||
'high' => '0.0', 'low' => '0.0'
|
||||
}
|
||||
end
|
||||
|
||||
it 'returns tickers of all markets' do
|
||||
get '/api/v2/coingecko/tickers'
|
||||
expect(response).to be_successful
|
||||
|
||||
btc_usd_ticker = response_body.find {|ticker| ticker['ticker_id'] == 'BTC_USD'}
|
||||
btc_eth_ticker = response_body.find {|ticker| ticker['ticker_id'] == 'BTC_ETH'}
|
||||
expect(btc_usd_ticker).to eq expected_btcusd_ticker
|
||||
expect(btc_eth_ticker).to eq expected_btceth_ticker
|
||||
end
|
||||
end
|
||||
|
||||
context 'single trade was executed' do
|
||||
let!(:trade) { create(:trade, :btcusd, price: '5.0'.to_d, amount: '1.1'.to_d, total: '5.5'.to_d)}
|
||||
|
||||
let(:expected_ticker) do
|
||||
{
|
||||
'ticker_id' => 'BTC_USD',
|
||||
'base_currency' => 'BTC',
|
||||
'target_currency' => 'USD',
|
||||
'last_price' => '5.0',
|
||||
'target_volume' => '5.5', 'base_volume' => '1.1',
|
||||
'bid' => '1.0', 'ask' => '1.0',
|
||||
'high' => '5.0', 'low' => '5.0'
|
||||
}
|
||||
end
|
||||
|
||||
before do
|
||||
trade.write_to_influx
|
||||
end
|
||||
|
||||
it 'returns tickers of all markets' do
|
||||
get '/api/v2/coingecko/tickers'
|
||||
expect(response).to be_successful
|
||||
|
||||
btc_usd_ticker = response_body.find {|ticker| ticker['ticker_id'] == 'BTC_USD'}
|
||||
expect(btc_usd_ticker).to eq expected_ticker
|
||||
end
|
||||
end
|
||||
|
||||
context 'multiple trades were executed' do
|
||||
let!(:trade1) { create(:trade, :btcusd, price: '5.0'.to_d, amount: '1.1'.to_d, total: '5.5'.to_d)}
|
||||
let!(:trade2) { create(:trade, :btcusd, price: '6.0'.to_d, amount: '0.9'.to_d, total: '5.4'.to_d)}
|
||||
|
||||
let(:expected_ticker) do
|
||||
{
|
||||
'ticker_id' => 'BTC_USD',
|
||||
'base_currency' => 'BTC',
|
||||
'target_currency' => 'USD',
|
||||
'last_price' => '6.0',
|
||||
'target_volume' => '10.9', 'base_volume' => '2.0',
|
||||
'bid' => '1.0', 'ask' => '1.0',
|
||||
'high' => '6.0', 'low' => '5.0'
|
||||
}
|
||||
end
|
||||
before do
|
||||
trade1.write_to_influx
|
||||
trade2.write_to_influx
|
||||
end
|
||||
|
||||
it 'returns tickers of all markets' do
|
||||
get '/api/v2/coingecko/tickers'
|
||||
expect(response).to be_successful
|
||||
|
||||
btc_usd_ticker = response_body.find {|ticker| ticker['ticker_id'] == 'BTC_USD'}
|
||||
expect(btc_usd_ticker).to eq expected_ticker
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user