Sha256: e8be653f4eea34da89f28d96100ec71c3c8c766db95b21a847d737b04f6248ee

Contents?: true

Size: 1.72 KB

Versions: 12

Compression:

Stored size: 1.72 KB

Contents

require 'spec_helper'

RSpec.describe CurrencyRate::AverageRateAdapter do

  before :each do
    VCR.insert_cassette 'exchange_rate_adapters/btc_adapters/average_rate_adapter'
  end

  after :each do
    VCR.eject_cassette
  end

  before(:each) do
    @average_rates_adapter = CurrencyRate::AverageRateAdapter.instance(
      CurrencyRate::BitstampAdapter,
      CurrencyRate::BitpayAdapter.instance,
    )
  end

  it "calculates average rate" do
    expect(@average_rates_adapter.rate_for('BTC', 'USD')).to eq 1016.38
  end

  it "fetches rates for all adapters" do
    expect(@average_rates_adapter.fetch_rates!).not_to be_empty
  end

  it 'raises error if all adapters failed to fetch rates' do
    adapter_mocks = [double('adapter_1'), double('adapter_2')]
    adapter_mocks.each do |adapter|
      expect(adapter).to receive(:fetch_rates!).and_raise(CurrencyRate::Adapter::FetchingFailed)
    end
    average_rates_adapter = CurrencyRate::AverageRateAdapter.instance(*adapter_mocks)
    expect( -> { average_rates_adapter.fetch_rates! }).to raise_error(CurrencyRate::Adapter::FetchingFailed)
  end

  it "raises exception if all adapters fail to get rates" do
    expect( -> { @average_rates_adapter.rate_for('BTC', 'FEDcoin') }).to raise_error(CurrencyRate::Adapter::CurrencyNotSupported)
  end

  it "raises exception if unallowed method is called" do # fetch_rates! is not to be used in AverageRateAdapter itself
    expect( -> { @average_rates_adapter.get_rate_value_from_hash(nil, 'nothing') }).to raise_error("This method is not supposed to be used in #{@average_rates_adapter.class}.")
    expect( -> { @average_rates_adapter.rate_to_f(nil) }).to raise_error("This method is not supposed to be used in #{@average_rates_adapter.class}.")
  end

end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
currency-rate-0.4.1 spec/lib/crypto_adapters/average_rate_adapter_spec.rb
currency-rate-0.4.0 spec/lib/crypto_adapters/average_rate_adapter_spec.rb
currency-rate-0.3.9 spec/lib/crypto_adapters/average_rate_adapter_spec.rb
currency-rate-0.3.8 spec/lib/btc_adapters/average_rate_adapter_spec.rb
currency-rate-0.3.7 spec/lib/btc_adapters/average_rate_adapter_spec.rb
currency-rate-0.3.6 spec/lib/btc_adapters/average_rate_adapter_spec.rb
currency-rate-0.3.5 spec/lib/btc_adapters/average_rate_adapter_spec.rb
currency-rate-0.3.4 spec/lib/btc_adapters/average_rate_adapter_spec.rb
currency-rate-0.3.3 spec/lib/btc_adapters/average_rate_adapter_spec.rb
currency-rate-0.3.2 spec/lib/btc_adapters/average_rate_adapter_spec.rb
currency-rate-0.3.1 spec/lib/btc_adapters/average_rate_adapter_spec.rb
currency-rate-0.3.0 spec/lib/btc_adapters/average_rate_adapter_spec.rb