spec/danconia/exchanges/currency_layer_spec.rb in danconia-0.2.8 vs spec/danconia/exchanges/currency_layer_spec.rb in danconia-0.2.9

- old
+ new

@@ -5,42 +5,25 @@ describe CurrencyLayer do subject { CurrencyLayer.new access_key: '[KEY]' } context 'fetch_rates' do it 'uses the API to retrive the rates' do - stub_request(:get, 'http://www.apilayer.net/api/live?access_key=[KEY]').to_return body: <<~END - { - "success": true, - "source": "USD", - "quotes": { - "USDARS": 27.110001, - "USDAUD": 1.346196 - } - } - END + stub_request(:get, 'http://www.apilayer.net/api/live?access_key=[KEY]').to_return body: fixture('success.json') expect(subject.fetch_rates).to eq 'USDARS' => 27.110001, 'USDAUD' => 1.346196 end it 'when the API returns an error' do - stub_request(:get, 'http://www.apilayer.net/api/live?access_key=[KEY]').to_return body: <<~END - { - "success": false, - "error": { - "code": 104, - "info": "Your monthly usage limit has been reached. Please upgrade your subscription plan." - } - } - END + stub_request(:get, 'http://www.apilayer.net/api/live?access_key=[KEY]').to_return body: fixture('failure.json') expect { subject.fetch_rates }.to raise_error Errors::APIError end end context 'update_rates!' do it 'fetches the rates and stores them' do expect(subject).to receive(:fetch_rates) { {'USDARS' => 3, 'USDAUD' => 4} } subject.update_rates! - expect(subject.rates.size).to eq 2 + expect(subject.store.rates.size).to eq 2 expect(subject.rate('USD', 'ARS')).to eq 3 expect(subject.rate('USD', 'AUD')).to eq 4 end it 'if a rate already exists should update it' do @@ -48,8 +31,12 @@ expect(subject).to receive(:fetch_rates) { {'USDARS' => 3.1} } subject.update_rates! expect(subject.rate('USD', 'ARS')).to eq 3.1 end end + + def fixture file + File.read("#{__dir__}/fixtures/currency_layer/#{file}") + end end end -end \ No newline at end of file +end