Sha256: 066882e91b1bda22b0d5a2a9c09a570c54cf7c687d424c07cdf19a8dcaad7344

Contents?: true

Size: 1.59 KB

Versions: 10

Compression:

Stored size: 1.59 KB

Contents

$LOAD_PATH << File.expand_path(File.dirname(__FILE__) + "/../lib")
require 'money/variable_exchange_bank'
require 'money/errors'

describe Money::VariableExchangeBank do

  before :each do
    @bank = Money::VariableExchangeBank.new
  end

  it "returns the previously specified conversion rate" do
    @bank.add_rate("USD", "EUR", 0.788332676)
    @bank.add_rate("EUR", "YEN", 122.631477)
    @bank.get_rate("USD", "EUR").should == 0.788332676
    @bank.get_rate("EUR", "YEN").should == 122.631477
  end

  it "treats currency names case-insensitively" do
    @bank.add_rate("usd", "eur", 1)
    @bank.get_rate("USD", "EUR").should == 1
    @bank.same_currency?("USD", "usd").should be_true
    @bank.same_currency?("EUR", "usd").should be_false
  end

  it "returns nil if the conversion rate is unknown" do
    @bank.get_rate("American Pesos", "EUR").should be_nil
  end

  it "exchanges money from one currency to another according to the specified conversion rates" do
    @bank.add_rate("USD", "EUR", 0.5)
    @bank.add_rate("EUR", "YEN", 10)
    @bank.exchange(10_00, "USD", "EUR").should == 5_00
    @bank.exchange(500_00, "EUR", "YEN").should == 5000_00
  end

  it "rounds the exchanged result down" do
    @bank.add_rate("USD", "EUR", 0.788332676)
    @bank.add_rate("EUR", "YEN", 122.631477)
    @bank.exchange(10_00, "USD", "EUR").should == 788
    @bank.exchange(500_00, "EUR", "YEN").should == 6131573
  end

  it "raises Money::UnknownRate upon conversion if the conversion rate is unknown" do
    block = lambda { @bank.exchange(10, "USD", "EUR") }
    block.should raise_error(Money::UnknownRate)
  end

end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
sevenwire-money-2.1.0 test/exchange_bank_spec.rb
sevenwire-money-2.1.1 test/exchange_bank_spec.rb
sevenwire-money-2.2.0 test/exchange_bank_spec.rb
sevenwire-money-2.3.0 test/exchange_bank_spec.rb
sevenwire-money-2.3.1 test/exchange_bank_spec.rb
sevenwire-money-2.3.2 test/exchange_bank_spec.rb
sevenwire-money-2.3.3 test/exchange_bank_spec.rb
sevenwire-money-2.3.4 test/exchange_bank_spec.rb
sevenwire-money-2.3.5 test/exchange_bank_spec.rb
sevenwire-money-2.3.6 test/exchange_bank_spec.rb