money 6.0.1.beta3 → 6.0.1.beta4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/money.rb +1 -9
- data/lib/money/core_extensions.rb +1 -1
- data/lib/money/core_extensions/numeric.rb +1 -3
- data/lib/money/core_extensions/string.rb +2 -4
- data/lib/money/core_extensions/symbol.rb +1 -3
- data/lib/money/deprecations.rb +5 -3
- data/lib/money/money.rb +93 -89
- data/lib/money/money/arithmetic.rb +3 -3
- data/lib/money/money/formatting.rb +16 -23
- data/lib/money/version.rb +1 -1
- data/spec/money/deprecations_spec.rb +37 -3
- data/spec/money_spec.rb +39 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f4c3a30959c99ab2533096b20f089c4d0700c90
|
4
|
+
data.tar.gz: 698dd9f7be9922faf38f75644aa18f380fabd546
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a18278df5e345754a702754fdf42b3d22645c7fb84af4ef45a996d58d18815322b96eefea624d2e36baae9f07502f3a63c907ead755984428cf14197cd26bdbe
|
7
|
+
data.tar.gz: 791835e4c32da05b0ffb916378da511f6d6b7ad51867b82c8b54102873f27512fea91c853a6ba565bf8dcdfbe97c632a76c66061da6c0dd30a202f29a210cbdb
|
data/lib/money.rb
CHANGED
@@ -1,17 +1,9 @@
|
|
1
1
|
require "bigdecimal"
|
2
2
|
require "bigdecimal/util"
|
3
|
-
require "i18n"
|
3
|
+
require "i18n"
|
4
4
|
require "money/currency"
|
5
5
|
require "money/money"
|
6
6
|
require "money/core_extensions/numeric"
|
7
7
|
require "money/core_extensions/string"
|
8
8
|
require "money/core_extensions/symbol"
|
9
9
|
require "money/deprecations"
|
10
|
-
|
11
|
-
class Money
|
12
|
-
class << self
|
13
|
-
attr_accessor :silence_core_extensions_deprecations
|
14
|
-
end
|
15
|
-
|
16
|
-
self.silence_core_extensions_deprecations = false
|
17
|
-
end
|
@@ -2,6 +2,6 @@ require "money/core_extensions/numeric"
|
|
2
2
|
require "money/core_extensions/string"
|
3
3
|
require "money/core_extensions/symbol"
|
4
4
|
|
5
|
-
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to use core extensions."
|
5
|
+
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to use core extensions. Please start using the Monetize gem from https://github.com/RubyMoney/monetize if you are not already doing so."
|
6
6
|
|
7
7
|
Money.silence_core_extensions_deprecations = true
|
@@ -1,9 +1,7 @@
|
|
1
1
|
class Numeric
|
2
2
|
alias_method :_to_money, :to_money
|
3
3
|
def to_money(*args)
|
4
|
-
|
5
|
-
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to use Numeric#to_money."
|
6
|
-
end
|
4
|
+
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to use Numeric#to_money. Please start using the Monetize gem from https://github.com/RubyMoney/monetize if you are not already doing so"
|
7
5
|
_to_money(*args)
|
8
6
|
end
|
9
7
|
end
|
@@ -1,15 +1,13 @@
|
|
1
1
|
class String
|
2
2
|
alias_method :_to_money, :to_money
|
3
3
|
def to_money(*args)
|
4
|
-
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to use String#to_money."
|
4
|
+
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to use String#to_money. Please start using the Monetize gem from https://github.com/RubyMoney/monetize if you are not already doing so"
|
5
5
|
_to_money(*args)
|
6
6
|
end
|
7
7
|
|
8
8
|
alias_method :_to_currency, :to_currency
|
9
9
|
def to_currency(*args)
|
10
|
-
|
11
|
-
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to use String#to_currency."
|
12
|
-
end
|
10
|
+
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to use String#to_currency. Please start using the Monetize gem from https://github.com/RubyMoney/monetize if you are not already doing so"
|
13
11
|
_to_currency(*args)
|
14
12
|
end
|
15
13
|
end
|
@@ -1,9 +1,7 @@
|
|
1
1
|
class Symbol
|
2
2
|
alias_method :_to_currency, :to_currency
|
3
3
|
def to_currency(*args)
|
4
|
-
|
5
|
-
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to use Symbol#to_currency."
|
6
|
-
end
|
4
|
+
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to use Symbol#to_currency. Please start using the Monetize gem from https://github.com/RubyMoney/monetize if you are not already doing so"
|
7
5
|
_to_currency(*args)
|
8
6
|
end
|
9
7
|
end
|
data/lib/money/deprecations.rb
CHANGED
@@ -5,9 +5,11 @@ class Money
|
|
5
5
|
#
|
6
6
|
# @return [nil]
|
7
7
|
def self.deprecate(message)
|
8
|
-
|
9
|
-
|
8
|
+
unless Money.silence_core_extensions_deprecations
|
9
|
+
file, line = caller(2).first.split(':', 2)
|
10
|
+
line = line.to_i
|
10
11
|
|
11
|
-
|
12
|
+
warn "DEPRECATION WARNING: #{message} (called from: #{file}:#{line})"
|
13
|
+
end
|
12
14
|
end
|
13
15
|
end
|
data/lib/money/money.rb
CHANGED
@@ -18,10 +18,7 @@ require "money/money/formatting"
|
|
18
18
|
#
|
19
19
|
# @see http://en.wikipedia.org/wiki/Money
|
20
20
|
class Money
|
21
|
-
include Comparable
|
22
|
-
include Arithmetic
|
23
|
-
include Formatting
|
24
|
-
include Parsing
|
21
|
+
include Comparable, Money::Arithmetic, Money::Formatting, Money::Parsing
|
25
22
|
|
26
23
|
# Convenience method for fractional part of the amount. Synonym of #fractional
|
27
24
|
#
|
@@ -67,17 +64,6 @@ class Money
|
|
67
64
|
end
|
68
65
|
end
|
69
66
|
|
70
|
-
def as_d(num)
|
71
|
-
if num.is_a?(Rational)
|
72
|
-
num.to_d(self.class.conversion_precision)
|
73
|
-
elsif num.respond_to?(:to_d)
|
74
|
-
num.to_d
|
75
|
-
else
|
76
|
-
BigDecimal.new(num.to_s)
|
77
|
-
end
|
78
|
-
end
|
79
|
-
private :as_d
|
80
|
-
|
81
67
|
# @attr_reader [Currency] currency The currency the money is in.
|
82
68
|
# @attr_reader [Money::Bank::*] bank The +Money::Bank+ based object used to
|
83
69
|
# perform currency exchanges with.
|
@@ -103,7 +89,8 @@ class Money
|
|
103
89
|
# @attr_accessor [Integer] conversion_precision Use this to specify
|
104
90
|
# precision for converting Rational to BigDecimal
|
105
91
|
attr_accessor :default_bank, :default_currency, :use_i18n,
|
106
|
-
:assume_from_symbol, :infinite_precision, :conversion_precision
|
92
|
+
:assume_from_symbol, :infinite_precision, :conversion_precision,
|
93
|
+
:silence_core_extensions_deprecations
|
107
94
|
|
108
95
|
# @attr_writer rounding_mode Use this to specify the rounding mode
|
109
96
|
attr_writer :rounding_mode
|
@@ -144,6 +131,9 @@ class Money
|
|
144
131
|
|
145
132
|
# Default the conversion of Rationals precision to 16
|
146
133
|
self.conversion_precision = 16
|
134
|
+
|
135
|
+
# Default alerting about deprecations
|
136
|
+
self.silence_core_extensions_deprecations = false
|
147
137
|
end
|
148
138
|
|
149
139
|
def self.inherited(base)
|
@@ -393,41 +383,19 @@ class Money
|
|
393
383
|
# @example
|
394
384
|
# Money.ca_dollar(100).to_s #=> "1.00"
|
395
385
|
def to_s
|
396
|
-
unit, subunit =
|
397
|
-
|
398
|
-
unit_str = ""
|
399
|
-
subunit_str = ""
|
400
|
-
fraction_str = ""
|
401
|
-
|
402
|
-
if self.class.infinite_precision
|
403
|
-
subunit, fraction = subunit.divmod(BigDecimal("1"))
|
404
|
-
|
405
|
-
unit_str = unit.to_i.to_s
|
406
|
-
subunit_str = subunit.to_i.to_s
|
407
|
-
fraction_str = fraction.to_s("F")[2..-1] # want fractional part "0.xxx"
|
408
|
-
|
409
|
-
fraction_str = "" if fraction_str =~ /^0+$/
|
410
|
-
else
|
411
|
-
unit_str, subunit_str = unit.to_s, subunit.to_s
|
412
|
-
end
|
413
|
-
|
414
|
-
absolute_str = if currency.decimal_places == 0
|
415
|
-
if fraction_str == ""
|
416
|
-
unit_str
|
417
|
-
else
|
418
|
-
"#{unit_str}#{decimal_mark}#{fraction_str}"
|
419
|
-
end
|
420
|
-
else
|
421
|
-
# need to pad subunit to right position,
|
422
|
-
# for example 1 usd 3 cents should be 1.03 not 1.3
|
423
|
-
subunit_str.insert(0, '0') while subunit_str.length < currency.decimal_places
|
386
|
+
unit, subunit, fraction = strings_from_fractional
|
424
387
|
|
425
|
-
|
426
|
-
|
388
|
+
str = if currency.decimal_places == 0
|
389
|
+
if fraction == ""
|
390
|
+
unit
|
391
|
+
else
|
392
|
+
"#{unit}#{decimal_mark}#{fraction}"
|
393
|
+
end
|
394
|
+
else
|
395
|
+
"#{unit}#{decimal_mark}#{pad_subunit(subunit)}#{fraction}"
|
396
|
+
end
|
427
397
|
|
428
|
-
|
429
|
-
str.insert(0, "-") if fractional() < 0
|
430
|
-
end
|
398
|
+
fractional < 0 ? "-#{str}" : str
|
431
399
|
end
|
432
400
|
|
433
401
|
# Return the amount of money as a BigDecimal.
|
@@ -544,28 +512,6 @@ class Money
|
|
544
512
|
amounts.collect { |fractional| Money.new(fractional, currency) }
|
545
513
|
end
|
546
514
|
|
547
|
-
def allocations_from_splits(splits)
|
548
|
-
splits.inject(0) { |sum, n| sum + as_d(n) }
|
549
|
-
end
|
550
|
-
private :allocations_from_splits
|
551
|
-
|
552
|
-
def amounts_from_splits(allocations, splits)
|
553
|
-
left_over = fractional
|
554
|
-
|
555
|
-
amounts = splits.map do |ratio|
|
556
|
-
if self.class.infinite_precision
|
557
|
-
fractional * ratio
|
558
|
-
else
|
559
|
-
(fractional * ratio / allocations).floor.tap do |frac|
|
560
|
-
left_over -= frac
|
561
|
-
end
|
562
|
-
end
|
563
|
-
end
|
564
|
-
|
565
|
-
[amounts, left_over]
|
566
|
-
end
|
567
|
-
private :amounts_from_splits
|
568
|
-
|
569
515
|
# Split money amongst parties evenly without loosing pennies.
|
570
516
|
#
|
571
517
|
# @param [Numeric] num number of parties.
|
@@ -584,24 +530,6 @@ class Money
|
|
584
530
|
end
|
585
531
|
end
|
586
532
|
|
587
|
-
def split_infinite(num)
|
588
|
-
amt = div(as_d(num))
|
589
|
-
1.upto(num).map{amt}
|
590
|
-
end
|
591
|
-
private :split_infinite
|
592
|
-
|
593
|
-
def split_flat(num)
|
594
|
-
low = Money.new(fractional / num, currency)
|
595
|
-
high = Money.new(low.fractional + 1, currency)
|
596
|
-
|
597
|
-
remainder = fractional % num
|
598
|
-
|
599
|
-
Array.new(num).each_with_index.map do |_, index|
|
600
|
-
index < remainder ? high : low
|
601
|
-
end
|
602
|
-
end
|
603
|
-
private :split_flat
|
604
|
-
|
605
533
|
# Round the monetary amount to smallest unit of coinage.
|
606
534
|
#
|
607
535
|
# @note
|
@@ -624,4 +552,80 @@ class Money
|
|
624
552
|
self
|
625
553
|
end
|
626
554
|
end
|
555
|
+
|
556
|
+
private
|
557
|
+
|
558
|
+
def as_d(num)
|
559
|
+
if num.is_a?(Rational)
|
560
|
+
num.to_d(self.class.conversion_precision)
|
561
|
+
else
|
562
|
+
num.to_d
|
563
|
+
end
|
564
|
+
rescue NoMethodError
|
565
|
+
BigDecimal.new(num.to_s)
|
566
|
+
end
|
567
|
+
|
568
|
+
def strings_from_fractional
|
569
|
+
unit, subunit = fractional().abs.divmod(currency.subunit_to_unit)
|
570
|
+
|
571
|
+
if self.class.infinite_precision
|
572
|
+
strings_for_infinite_precision(unit, subunit)
|
573
|
+
else
|
574
|
+
strings_for_base_precision(unit, subunit)
|
575
|
+
end
|
576
|
+
end
|
577
|
+
|
578
|
+
def strings_for_infinite_precision(unit, subunit)
|
579
|
+
subunit, fraction = subunit.divmod(BigDecimal("1"))
|
580
|
+
fraction = fraction.to_s("F")[2..-1] # want fractional part "0.xxx"
|
581
|
+
fraction = "" if fraction =~ /^0+$/
|
582
|
+
|
583
|
+
[unit.to_i.to_s, subunit.to_i.to_s, fraction]
|
584
|
+
end
|
585
|
+
|
586
|
+
def strings_for_base_precision(unit, subunit)
|
587
|
+
[unit.to_s, subunit.to_s, ""]
|
588
|
+
end
|
589
|
+
|
590
|
+
def pad_subunit(subunit)
|
591
|
+
cnt = currency.decimal_places
|
592
|
+
padding = "0" * cnt
|
593
|
+
"#{padding}#{subunit}"[-1 * cnt, cnt]
|
594
|
+
end
|
595
|
+
|
596
|
+
def allocations_from_splits(splits)
|
597
|
+
splits.inject(0) { |sum, n| sum + as_d(n) }
|
598
|
+
end
|
599
|
+
|
600
|
+
def amounts_from_splits(allocations, splits)
|
601
|
+
left_over = fractional
|
602
|
+
|
603
|
+
amounts = splits.map do |ratio|
|
604
|
+
if self.class.infinite_precision
|
605
|
+
fractional * ratio
|
606
|
+
else
|
607
|
+
(fractional * ratio / allocations).floor.tap do |frac|
|
608
|
+
left_over -= frac
|
609
|
+
end
|
610
|
+
end
|
611
|
+
end
|
612
|
+
|
613
|
+
[amounts, left_over]
|
614
|
+
end
|
615
|
+
|
616
|
+
def split_infinite(num)
|
617
|
+
amt = div(as_d(num))
|
618
|
+
1.upto(num).map{amt}
|
619
|
+
end
|
620
|
+
|
621
|
+
def split_flat(num)
|
622
|
+
low = Money.new(fractional / num, currency)
|
623
|
+
high = Money.new(low.fractional + 1, currency)
|
624
|
+
|
625
|
+
remainder = fractional % num
|
626
|
+
|
627
|
+
Array.new(num).each_with_index.map do |_, index|
|
628
|
+
index < remainder ? high : low
|
629
|
+
end
|
630
|
+
end
|
627
631
|
end
|
@@ -25,7 +25,7 @@ class Money
|
|
25
25
|
def ==(other_money)
|
26
26
|
if other_money.respond_to?(:to_money)
|
27
27
|
unless other_money.is_a?(Money)
|
28
|
-
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to compare Money to core classes.
|
28
|
+
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to compare Money to core classes. Please start using the Monetize gem from https://github.com/RubyMoney/monetize if you are not already doing so"
|
29
29
|
end
|
30
30
|
other_money = other_money.to_money
|
31
31
|
fractional == other_money.fractional && currency == other_money.currency
|
@@ -58,8 +58,8 @@ class Money
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def check_compare_deprecate(val)
|
61
|
-
unless val.is_a?(Money)
|
62
|
-
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to compare Money to core classes."
|
61
|
+
unless val.is_a?(Money)
|
62
|
+
Money.deprecate "as of Money 6.1.0 you must `require 'monetize/core_extensions'` to compare Money to core classes. Please start using the Monetize gem from https://github.com/RubyMoney/monetize if you are not already doing so"
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
@@ -1,37 +1,30 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
class Money
|
3
3
|
module Formatting
|
4
|
-
|
5
|
-
if Object.const_defined?("I18n")
|
4
|
+
def self.included(base)
|
6
5
|
[
|
7
6
|
[:thousands_separator, :delimiter, "."],
|
8
7
|
[:decimal_mark, :separator, ","]
|
9
8
|
].each do |method, name, character|
|
10
|
-
|
11
|
-
if self.class.use_i18n
|
12
|
-
I18n.t(
|
13
|
-
:"number.currency.format.#{name}",
|
14
|
-
:default => I18n.t(
|
15
|
-
:"number.format.#{name}",
|
16
|
-
:default => (currency.send(method) || character)
|
17
|
-
)
|
18
|
-
)
|
19
|
-
else
|
20
|
-
currency.send(method) || character
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
else
|
25
|
-
def thousands_separator
|
26
|
-
currency.thousands_separator || ","
|
9
|
+
define_i18n_method(method, name, character)
|
27
10
|
end
|
11
|
+
end
|
28
12
|
|
29
|
-
|
30
|
-
|
13
|
+
def self.define_i18n_method(method, name, character)
|
14
|
+
define_method(method) do
|
15
|
+
if self.class.use_i18n
|
16
|
+
I18n.t(
|
17
|
+
:"number.currency.format.#{name}", :default => I18n.t(
|
18
|
+
:"number.format.#{name}",
|
19
|
+
:default => (currency.send(method) || character)
|
20
|
+
)
|
21
|
+
)
|
22
|
+
else
|
23
|
+
currency.send(method) || character
|
24
|
+
end
|
31
25
|
end
|
26
|
+
alias_method name, method
|
32
27
|
end
|
33
|
-
alias_method :delimiter, :thousands_separator
|
34
|
-
alias_method :separator, :decimal_mark
|
35
28
|
|
36
29
|
# Creates a formatted price string according to several rules.
|
37
30
|
#
|
data/lib/money/version.rb
CHANGED
@@ -3,15 +3,49 @@
|
|
3
3
|
require "spec_helper"
|
4
4
|
|
5
5
|
describe Money do
|
6
|
-
describe "
|
7
|
-
let(:error_message) { "Deprecated method triggered here" }
|
8
|
-
|
6
|
+
describe "::deprecate" do
|
9
7
|
it "should send a deprecation message with caller" do
|
8
|
+
error_message = "Deprecated method triggered here"
|
9
|
+
|
10
10
|
Money.should_receive(:warn).with do |message|
|
11
11
|
message.should =~ /DEPRECATION WARNING: #{error_message} \(called from:.*:\d+\)/
|
12
12
|
end
|
13
13
|
|
14
14
|
Money.deprecate(error_message)
|
15
15
|
end
|
16
|
+
|
17
|
+
context "when silenced" do
|
18
|
+
it "should not warn" do
|
19
|
+
Money.should_not_receive(:warn)
|
20
|
+
|
21
|
+
while_silenced { Money.deprecate("anything") }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "core extensions" do
|
27
|
+
it "does not print deprecations when silenced" do
|
28
|
+
while_silenced do
|
29
|
+
expect_no_deprecation_for { "$1.00".to_money }
|
30
|
+
expect_no_deprecation_for { "USD".to_currency }
|
31
|
+
expect_no_deprecation_for { 1.to_money }
|
32
|
+
expect_no_deprecation_for { :USD.to_currency }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def expect_no_deprecation_for(&block)
|
37
|
+
Money.should_not_receive(:warn)
|
38
|
+
yield
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def while_silenced(&block)
|
43
|
+
begin
|
44
|
+
old_setting = Money.silence_core_extensions_deprecations
|
45
|
+
Money.silence_core_extensions_deprecations = true
|
46
|
+
yield
|
47
|
+
ensure
|
48
|
+
Money.silence_core_extensions_deprecations = old_setting
|
49
|
+
end
|
16
50
|
end
|
17
51
|
end
|
data/spec/money_spec.rb
CHANGED
@@ -43,6 +43,11 @@ describe Money do
|
|
43
43
|
it { should eq initializing_value }
|
44
44
|
end
|
45
45
|
|
46
|
+
context "given the initializing value doesn't respond to .to_d" do
|
47
|
+
let(:initializing_value) { :"1" }
|
48
|
+
it { should eq Money.new(1) }
|
49
|
+
end
|
50
|
+
|
46
51
|
context 'given a currency is not provided' do
|
47
52
|
subject(:money) { Money.new(initializing_value) }
|
48
53
|
its(:currency) { should eq Money.default_currency }
|
@@ -209,7 +214,7 @@ describe Money do
|
|
209
214
|
m.fractional.should be_a(Fixnum)
|
210
215
|
end
|
211
216
|
end
|
212
|
-
|
217
|
+
|
213
218
|
context "loading a serialized Money via YAML" do
|
214
219
|
|
215
220
|
let(:serialized) { <<YAML
|
@@ -341,7 +346,7 @@ YAML
|
|
341
346
|
def m.amount
|
342
347
|
5
|
343
348
|
end
|
344
|
-
|
349
|
+
|
345
350
|
m.dollars.should == 5
|
346
351
|
end
|
347
352
|
end
|
@@ -436,6 +441,10 @@ YAML
|
|
436
441
|
it "suppresses fractional cents when there is none" do
|
437
442
|
Money.new(1.0, "USD").to_s.should == "0.01"
|
438
443
|
end
|
444
|
+
|
445
|
+
it "shows fractional if needed when :subunut_to_unit == 1" do
|
446
|
+
Money.new(10_00.1, "CLP").to_s.should == "1000,1"
|
447
|
+
end
|
439
448
|
end
|
440
449
|
end
|
441
450
|
|
@@ -643,4 +652,32 @@ YAML
|
|
643
652
|
(MoneyChild.new(1000) - Money.new(500)).should eq Money.new(500)
|
644
653
|
end
|
645
654
|
end
|
655
|
+
|
656
|
+
describe "#as_*" do
|
657
|
+
before do
|
658
|
+
Money.default_bank = Money::Bank::VariableExchange.new
|
659
|
+
Money.add_rate("EUR", "USD", 1)
|
660
|
+
Money.add_rate("EUR", "CAD", 1)
|
661
|
+
Money.add_rate("USD", "EUR", 1)
|
662
|
+
end
|
663
|
+
|
664
|
+
after do
|
665
|
+
Money.default_bank = Money::Bank::VariableExchange.instance
|
666
|
+
end
|
667
|
+
|
668
|
+
specify "as_us_dollar converts Money object to USD" do
|
669
|
+
obj = Money.new(1, "EUR")
|
670
|
+
obj.as_us_dollar.should == Money.new(1, "USD")
|
671
|
+
end
|
672
|
+
|
673
|
+
specify "as_ca_dollar converts Money object to CAD" do
|
674
|
+
obj = Money.new(1, "EUR")
|
675
|
+
obj.as_ca_dollar.should == Money.new(1, "CAD")
|
676
|
+
end
|
677
|
+
|
678
|
+
specify "as_euro converts Money object to EUR" do
|
679
|
+
obj = Money.new(1, "USD")
|
680
|
+
obj.as_euro.should == Money.new(1, "EUR")
|
681
|
+
end
|
682
|
+
end
|
646
683
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: money
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.1.
|
4
|
+
version: 6.0.1.beta4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shane Emmons
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: i18n
|