money 6.0.1 → 6.1.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -4
- data/Gemfile +1 -0
- data/lib/money.rb +0 -4
- data/lib/money/money.rb +10 -58
- data/lib/money/money/arithmetic.rb +4 -17
- data/lib/money/version.rb +1 -1
- data/money.gemspec +0 -1
- data/spec/money/arithmetic_spec.rb +0 -87
- data/spec/money/formatting_spec.rb +0 -7
- data/spec/money_spec.rb +26 -65
- data/spec/spec_helper.rb +2 -2
- metadata +4 -32
- data/lib/money/core_extensions.rb +0 -7
- data/lib/money/core_extensions/numeric.rb +0 -7
- data/lib/money/core_extensions/string.rb +0 -13
- data/lib/money/core_extensions/symbol.rb +0 -7
- data/lib/money/deprecations.rb +0 -15
- data/lib/money/money/parsing.rb +0 -46
- data/spec/core_extensions_spec.rb +0 -160
- data/spec/money/deprecations_spec.rb +0 -51
- data/spec/money/parsing_spec.rb +0 -333
- data/spec/support/default_currency_helper.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11002632b6f2ab53b4691fbcf1824b65ee95f7da
|
4
|
+
data.tar.gz: 9d93fd3a69e74b5c4285f365c7587dc7b6072281
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4cb9248d5cb8bdb5342b76f1e49766ee614e74ef432023567ae1839b7aa587a9194520938c4b7d1ed091262da8a11d038b47a673c62649cde63097633c2a00d
|
7
|
+
data.tar.gz: 2640b8e18f2ce3ac3a6eee8923c5b57b083609345dfa10bf2ae76ce4124348109c077f1c2284385c37d57f13b9408735a6c4e789ad4ccc01a090c4003ac5ffe4
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## 6.
|
3
|
+
## 6.1.0
|
4
|
+
- Remove deprecated methods.
|
5
|
+
|
6
|
+
## 6.0.1
|
4
7
|
- Deprecated methods lists caller on print out for easier updating.
|
5
8
|
- Added support for Money::Currency#to_str and Money::Currency#to_sym
|
6
9
|
- Added ability to temporally change the rounding methond inside a given block
|
@@ -112,12 +115,10 @@
|
|
112
115
|
- Fixed position of Philippine peso sign (GH-124)
|
113
116
|
- Fixed position of Danish currency sign (GH-127)
|
114
117
|
|
115
|
-
|
116
118
|
## 4.0.1
|
117
119
|
|
118
120
|
- Add missing config dir.
|
119
121
|
|
120
|
-
|
121
122
|
Money 4.0.0
|
122
123
|
===========
|
123
124
|
|
@@ -305,7 +306,6 @@ Bugfixes
|
|
305
306
|
- Use BigDecimal when floating point calculations are needed.
|
306
307
|
- Ruby 1.9.2 compatibility enhancements.
|
307
308
|
|
308
|
-
|
309
309
|
Money 3.1.0
|
310
310
|
===========
|
311
311
|
|
data/Gemfile
CHANGED
data/lib/money.rb
CHANGED
data/lib/money/money.rb
CHANGED
@@ -1,11 +1,7 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require "monetize"
|
3
|
-
require "monetize/core_extensions"
|
4
|
-
|
5
2
|
require "money/bank/variable_exchange"
|
6
3
|
require "money/bank/single_currency"
|
7
4
|
require "money/money/arithmetic"
|
8
|
-
require "money/money/parsing"
|
9
5
|
require "money/money/formatting"
|
10
6
|
|
11
7
|
# "Money is any object or record that is generally accepted as payment for
|
@@ -18,7 +14,7 @@ require "money/money/formatting"
|
|
18
14
|
#
|
19
15
|
# @see http://en.wikipedia.org/wiki/Money
|
20
16
|
class Money
|
21
|
-
include Comparable, Money::Arithmetic, Money::Formatting
|
17
|
+
include Comparable, Money::Arithmetic, Money::Formatting
|
22
18
|
|
23
19
|
# Convenience method for fractional part of the amount. Synonym of #fractional
|
24
20
|
#
|
@@ -42,12 +38,6 @@ class Money
|
|
42
38
|
# Money representation of one Kuwaiti Dinar, the fractional interpretation is
|
43
39
|
# 1000.
|
44
40
|
#
|
45
|
-
# @example
|
46
|
-
# Money.new_with_amount(1, "USD").fractional #=> 100
|
47
|
-
# Money.new_with_amount(1, "KWD").fractional #=> 1000
|
48
|
-
# Money.new_with_amount(105.50, "USD").fractional #=> 10550
|
49
|
-
# Money.new_with_amount(15.763, 'KWD').fractional #=> 15763
|
50
|
-
#
|
51
41
|
# @return [Integer] when inifinte_precision is false
|
52
42
|
# @return [BigDecimal] when inifinte_precision is true
|
53
43
|
#
|
@@ -82,15 +72,12 @@ class Money
|
|
82
72
|
# valid +Money::Currency+ instance.
|
83
73
|
# @attr_accessor [true, false] use_i18n Use this to disable i18n even if
|
84
74
|
# it's used by other objects in your app.
|
85
|
-
# @attr_accessor [true, false] assume_from_symbol Use this to enable the
|
86
|
-
# ability to assume the currency from a passed symbol
|
87
75
|
# @attr_accessor [true, false] infinite_precision Use this to enable
|
88
76
|
# infinite precision cents
|
89
77
|
# @attr_accessor [Integer] conversion_precision Use this to specify
|
90
78
|
# precision for converting Rational to BigDecimal
|
91
79
|
attr_accessor :default_bank, :default_currency, :use_i18n,
|
92
|
-
:
|
93
|
-
:silence_core_extensions_deprecations
|
80
|
+
:infinite_precision, :conversion_precision
|
94
81
|
|
95
82
|
# @attr_writer rounding_mode Use this to specify the rounding mode
|
96
83
|
attr_writer :rounding_mode
|
@@ -110,6 +97,14 @@ class Money
|
|
110
97
|
alias_method :zero, :empty
|
111
98
|
end
|
112
99
|
|
100
|
+
def self.default_currency
|
101
|
+
if @default_currency.respond_to?(:call)
|
102
|
+
Money::Currency.new(@default_currency.call)
|
103
|
+
else
|
104
|
+
Money::Currency.new(@default_currency)
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
113
108
|
def self.setup_defaults
|
114
109
|
# Set the default bank for creating new +Money+ objects.
|
115
110
|
self.default_bank = Bank::VariableExchange.instance
|
@@ -120,9 +115,6 @@ class Money
|
|
120
115
|
# Default to using i18n
|
121
116
|
self.use_i18n = true
|
122
117
|
|
123
|
-
# Default to not using currency symbol assumptions when parsing
|
124
|
-
self.assume_from_symbol = false
|
125
|
-
|
126
118
|
# Default to not using infinite precision cents
|
127
119
|
self.infinite_precision = false
|
128
120
|
|
@@ -131,9 +123,6 @@ class Money
|
|
131
123
|
|
132
124
|
# Default the conversion of Rationals precision to 16
|
133
125
|
self.conversion_precision = 16
|
134
|
-
|
135
|
-
# Default alerting about deprecations
|
136
|
-
self.silence_core_extensions_deprecations = false
|
137
126
|
end
|
138
127
|
|
139
128
|
def self.inherited(base)
|
@@ -209,39 +198,6 @@ class Money
|
|
209
198
|
Money.new(cents, "EUR")
|
210
199
|
end
|
211
200
|
|
212
|
-
# Creates a new Money object of +amount+ value ,
|
213
|
-
# with given +currency+.
|
214
|
-
#
|
215
|
-
# The amount value is expressed in the main monetary unit,
|
216
|
-
# opposite to the subunit-based representation
|
217
|
-
# used internally by this library called +cents+.
|
218
|
-
#
|
219
|
-
# @param [Numeric] amount The money amount, in main monetary unit.
|
220
|
-
# @param [Currency, String, Symbol] currency The currency format.
|
221
|
-
# @param [Money::Bank::*] bank The exchange bank to use.
|
222
|
-
#
|
223
|
-
# @return [Money]
|
224
|
-
#
|
225
|
-
# @example
|
226
|
-
# Money.new_with_amount(100) #=> #<Money @fractional=10000 @currency="USD">
|
227
|
-
# Money.new_with_amount(100, "USD") #=> #<Money @fractional=10000 @currency="USD">
|
228
|
-
# Money.new_with_amount(100, "EUR") #=> #<Money @fractional=10000 @currency="EUR">
|
229
|
-
#
|
230
|
-
# @see Money.new
|
231
|
-
#
|
232
|
-
def self.new_with_amount(amount, currency = Money.default_currency, bank = Money.default_bank)
|
233
|
-
from_numeric(amount, currency).tap do |money|
|
234
|
-
money.instance_variable_set("@bank", bank) # Hack! You can't change a bank
|
235
|
-
end
|
236
|
-
end
|
237
|
-
|
238
|
-
# Synonym of #new_with_amount
|
239
|
-
#
|
240
|
-
# @see Money.new_with_amount
|
241
|
-
def self.new_with_dollars(*args)
|
242
|
-
self.new_with_amount(*args)
|
243
|
-
end
|
244
|
-
|
245
201
|
# Adds a new exchange rate to the default bank and return the rate.
|
246
202
|
#
|
247
203
|
# @param [Currency, String, Symbol] from_currency Currency to exchange from.
|
@@ -279,8 +235,6 @@ class Money
|
|
279
235
|
# Money.new(100, "USD") #=> #<Money @fractional=100 @currency="USD">
|
280
236
|
# Money.new(100, "EUR") #=> #<Money @fractional=100 @currency="EUR">
|
281
237
|
#
|
282
|
-
# @see Money.new_with_dollars
|
283
|
-
#
|
284
238
|
def initialize(obj, currency = Money.default_currency, bank = Money.default_bank)
|
285
239
|
@fractional = obj.fractional
|
286
240
|
@currency = obj.currency
|
@@ -301,7 +255,6 @@ class Money
|
|
301
255
|
#
|
302
256
|
# @example
|
303
257
|
# Money.new(1_00, "USD").dollars # => BigDecimal.new("1.00")
|
304
|
-
# Money.new_with_dollars(1).dollar # => BigDecimal.new("1.00")
|
305
258
|
#
|
306
259
|
# @see #amount
|
307
260
|
# @see #to_d
|
@@ -317,7 +270,6 @@ class Money
|
|
317
270
|
#
|
318
271
|
# @example
|
319
272
|
# Money.new(1_00, "USD").amount # => BigDecimal.new("1.00")
|
320
|
-
# Money.new_with_amount(1).amount # => BigDecimal.new("1.00")
|
321
273
|
#
|
322
274
|
# @see #to_d
|
323
275
|
# @see #fractional
|
@@ -23,15 +23,10 @@ class Money
|
|
23
23
|
# Money.new(100) == Money.new(101) #=> false
|
24
24
|
# Money.new(100) == Money.new(100) #=> true
|
25
25
|
def ==(other_money)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
other_money = other_money.to_money
|
31
|
-
fractional == other_money.fractional && currency == other_money.currency
|
32
|
-
else
|
33
|
-
false
|
34
|
-
end
|
26
|
+
other_money = other_money.to_money
|
27
|
+
fractional == other_money.fractional && currency == other_money.currency
|
28
|
+
rescue NoMethodError
|
29
|
+
false
|
35
30
|
end
|
36
31
|
|
37
32
|
# Synonymous with +#==+.
|
@@ -46,8 +41,6 @@ class Money
|
|
46
41
|
end
|
47
42
|
|
48
43
|
def <=>(val)
|
49
|
-
check_compare_deprecate(val)
|
50
|
-
|
51
44
|
val = val.to_money
|
52
45
|
unless fractional == 0 || val.fractional == 0 || currency == val.currency
|
53
46
|
val = val.exchange_to(currency)
|
@@ -57,12 +50,6 @@ class Money
|
|
57
50
|
raise ArgumentError, "Comparison of #{self.class} with #{val.inspect} failed"
|
58
51
|
end
|
59
52
|
|
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. Please start using the Monetize gem from https://github.com/RubyMoney/monetize if you are not already doing so"
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
53
|
# Test if the amount is positive. Returns +true+ if the money amount is
|
67
54
|
# greater than 0, +false+ otherwise.
|
68
55
|
#
|
data/lib/money/version.rb
CHANGED
data/money.gemspec
CHANGED
@@ -27,19 +27,6 @@ describe Money do
|
|
27
27
|
Money.new(1_00, "USD").should_not == nil
|
28
28
|
end
|
29
29
|
|
30
|
-
it "can be used to compare with a String money value" do
|
31
|
-
Money.new(1_00, "USD").should == "1.00"
|
32
|
-
Money.new(1_00, "USD").should_not == "2.00"
|
33
|
-
Money.new(1_00, "GBP").should_not == "1.00"
|
34
|
-
end
|
35
|
-
|
36
|
-
it "can be used to compare with a Numeric money value" do
|
37
|
-
Money.new(1_00, "USD").should == 1
|
38
|
-
Money.new(1_57, "USD").should == 1.57
|
39
|
-
Money.new(1_00, "USD").should_not == 2
|
40
|
-
Money.new(1_00, "GBP").should_not == 1
|
41
|
-
end
|
42
|
-
|
43
30
|
it "can be used to compare with an object that responds to #to_money" do
|
44
31
|
klass = Class.new do
|
45
32
|
def initialize(money)
|
@@ -74,19 +61,6 @@ describe Money do
|
|
74
61
|
Money.new(1_00, "USD").eql?(nil).should be false
|
75
62
|
end
|
76
63
|
|
77
|
-
it "can be used to compare with a String money value" do
|
78
|
-
Money.new(1_00, "USD").eql?("1.00").should be true
|
79
|
-
Money.new(1_00, "USD").eql?("2.00").should be false
|
80
|
-
Money.new(1_00, "GBP").eql?("1.00").should be false
|
81
|
-
end
|
82
|
-
|
83
|
-
it "can be used to compare with a Numeric money value" do
|
84
|
-
Money.new(1_00, "USD").eql?(1).should be true
|
85
|
-
Money.new(1_57, "USD").eql?(1.57).should be true
|
86
|
-
Money.new(1_00, "USD").eql?(2).should be false
|
87
|
-
Money.new(1_00, "GBP").eql?(1).should be false
|
88
|
-
end
|
89
|
-
|
90
64
|
it "can be used to compare with an object that responds to #to_money" do
|
91
65
|
klass = Class.new do
|
92
66
|
def initialize(money)
|
@@ -126,42 +100,6 @@ describe Money do
|
|
126
100
|
(Money.new(100_00, "USD") <=> target).should > 0
|
127
101
|
end
|
128
102
|
|
129
|
-
it "cannot compare objects with different currencies when no rate exists, unless one of the amounts is zero" do
|
130
|
-
expect { Money.new(100_00, "EUR") <=> Money.new(100_00, "USD") }.to raise_error(Money::Bank::UnknownRate)
|
131
|
-
|
132
|
-
(Money.new(100_00, "EUR") <=> Money.new(0, "USD")).should > 0
|
133
|
-
(Money.new(0, "EUR") <=> Money.new(100_00, "USD")).should < 0
|
134
|
-
(Money.new(0, "EUR") <=> Money.new(0, "USD")).should == 0
|
135
|
-
end
|
136
|
-
|
137
|
-
it "can be used to compare with a String money value when Money object is in default currency" do
|
138
|
-
(Money.new(1_00) <=> "1.00").should == 0
|
139
|
-
(Money.new(1_00) <=> ".99").should > 0
|
140
|
-
(Money.new(1_00) <=> "2.00").should < 0
|
141
|
-
end
|
142
|
-
|
143
|
-
it "can be used to compare with a String money value when Money object is not in default currency if String evaluates to zero" do
|
144
|
-
expect { Money.new(1_00, "EUR") <=> "1.00" }.to raise_error(Money::Bank::UnknownRate)
|
145
|
-
|
146
|
-
(Money.new(1_00, "EUR") <=> "0.00").should > 0
|
147
|
-
(Money.new(0_00, "EUR") <=> "0.00").should == 0
|
148
|
-
(Money.new(-1_00, "EUR") <=> "0.00").should < 0
|
149
|
-
end
|
150
|
-
|
151
|
-
it "can be used to compare with a Numeric money value when Money object is in default currency" do
|
152
|
-
(Money.new(1_00) <=> 1).should == 0
|
153
|
-
(Money.new(1_00) <=> 0.99).should > 0
|
154
|
-
(Money.new(1_00) <=> 2.00).should < 0
|
155
|
-
end
|
156
|
-
|
157
|
-
it "can be used to compare with a Numeric money value when Money object is not in default currency if String evaluates to zero" do
|
158
|
-
expect { Money.new(1_00, "EUR") <=> 1 }.to raise_error(Money::Bank::UnknownRate)
|
159
|
-
|
160
|
-
(Money.new(1_00, "EUR") <=> 0).should > 0
|
161
|
-
(Money.new(0_00, "EUR") <=> 0).should == 0
|
162
|
-
(Money.new(-1_00, "EUR") <=> 0).should < 0
|
163
|
-
end
|
164
|
-
|
165
103
|
it "can be used to compare with an object that responds to #to_money" do
|
166
104
|
klass = Class.new do
|
167
105
|
def initialize(money)
|
@@ -576,31 +514,6 @@ describe Money do
|
|
576
514
|
t[:a].remainder(t[:b]).should == t[:c]
|
577
515
|
end
|
578
516
|
end
|
579
|
-
|
580
|
-
it "calculates remainder with Money (same currency)" do
|
581
|
-
ts = [
|
582
|
-
{:a => Money.new( 13, :USD), :b => Money.new( 4, :USD), :c => Money.new( 1, :USD)},
|
583
|
-
{:a => Money.new( 13, :USD), :b => Money.new(-4, :USD), :c => Money.new( 1, :USD)},
|
584
|
-
{:a => Money.new(-13, :USD), :b => Money.new( 4, :USD), :c => Money.new(-1, :USD)},
|
585
|
-
{:a => Money.new(-13, :USD), :b => Money.new(-4, :USD), :c => Money.new(-1, :USD)},
|
586
|
-
]
|
587
|
-
ts.each do |t|
|
588
|
-
t[:a].remainder(t[:b]).should == t[:c]
|
589
|
-
end
|
590
|
-
end
|
591
|
-
|
592
|
-
it "calculates remainder with Money (different currency)" do
|
593
|
-
ts = [
|
594
|
-
{:a => Money.new( 13, :USD), :b => Money.new( 4, :EUR), :c => Money.new( 5, :USD)},
|
595
|
-
{:a => Money.new( 13, :USD), :b => Money.new(-4, :EUR), :c => Money.new( 5, :USD)},
|
596
|
-
{:a => Money.new(-13, :USD), :b => Money.new( 4, :EUR), :c => Money.new(-5, :USD)},
|
597
|
-
{:a => Money.new(-13, :USD), :b => Money.new(-4, :EUR), :c => Money.new(-5, :USD)},
|
598
|
-
]
|
599
|
-
ts.each do |t|
|
600
|
-
t[:b].should_receive(:exchange_to).once.with(t[:a].currency).and_return(Money.new(t[:b].cents * 2, :USD))
|
601
|
-
t[:a].remainder(t[:b]).should == t[:c]
|
602
|
-
end
|
603
|
-
end
|
604
517
|
end
|
605
518
|
|
606
519
|
describe "#abs" do
|
@@ -361,7 +361,6 @@ describe Money, "formatting" do
|
|
361
361
|
end
|
362
362
|
end
|
363
363
|
|
364
|
-
|
365
364
|
describe ":symbol_position option" do
|
366
365
|
it "inserts currency symbol before the amount when set to :before" do
|
367
366
|
Money.euro(1_234_567_12).format(:symbol_position => :before).should == "€1.234.567,12"
|
@@ -486,11 +485,6 @@ describe Money, "formatting" do
|
|
486
485
|
money.format(:display_free => 'gratis').should == 'gratis'
|
487
486
|
end
|
488
487
|
end
|
489
|
-
|
490
|
-
it "maintains floating point precision" do
|
491
|
-
"0.01".to_money("USD").format(:symbol => false).should == "0.01"
|
492
|
-
end
|
493
|
-
|
494
488
|
end
|
495
489
|
|
496
490
|
context "custom currencies with 4 decimal places" do
|
@@ -535,4 +529,3 @@ describe Money, "formatting" do
|
|
535
529
|
|
536
530
|
end
|
537
531
|
end
|
538
|
-
|
data/spec/money_spec.rb
CHANGED
@@ -71,59 +71,6 @@ describe Money do
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
describe ".new_with_dollars" do
|
75
|
-
it "is synonym of #new_with_amount" do
|
76
|
-
MoneyExpectation = Class.new(Money)
|
77
|
-
def MoneyExpectation.new_with_amount *args
|
78
|
-
args
|
79
|
-
end
|
80
|
-
MoneyExpectation.new_with_dollars("expectation").should == ["expectation"]
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
describe ".new_with_amount" do
|
85
|
-
it "converts given amount to cents" do
|
86
|
-
Money.new_with_amount(1).should == Money.new(100)
|
87
|
-
Money.new_with_amount(1, "USD").should == Money.new(100, "USD")
|
88
|
-
Money.new_with_amount(1, "EUR").should == Money.new(100, "EUR")
|
89
|
-
end
|
90
|
-
|
91
|
-
it "respects :subunit_to_unit currency property" do
|
92
|
-
Money.new_with_amount(1, "USD").should == Money.new(1_00, "USD")
|
93
|
-
Money.new_with_amount(1, "TND").should == Money.new(1_000, "TND")
|
94
|
-
Money.new_with_amount(1, "CLP").should == Money.new(1, "CLP")
|
95
|
-
end
|
96
|
-
|
97
|
-
it "does not loose precision" do
|
98
|
-
Money.new_with_amount(1234).cents.should == 1234_00
|
99
|
-
Money.new_with_amount(100.37).cents.should == 100_37
|
100
|
-
Money.new_with_amount(BigDecimal.new('1234')).cents.should == 1234_00
|
101
|
-
end
|
102
|
-
|
103
|
-
it "accepts optional currency" do
|
104
|
-
m = Money.new_with_amount(1)
|
105
|
-
m.currency.should == Money.default_currency
|
106
|
-
|
107
|
-
m = Money.new_with_amount(1, Money::Currency.wrap("EUR"))
|
108
|
-
m.currency.should == Money::Currency.wrap("EUR")
|
109
|
-
|
110
|
-
m = Money.new_with_amount(1, "EUR")
|
111
|
-
m.currency.should == Money::Currency.wrap("EUR")
|
112
|
-
end
|
113
|
-
|
114
|
-
it "accepts optional bank" do
|
115
|
-
m = Money.new_with_amount(1)
|
116
|
-
m.bank.should == Money.default_bank
|
117
|
-
|
118
|
-
m = Money.new_with_amount(1, "EUR", bank = Object.new)
|
119
|
-
m.bank.should == bank
|
120
|
-
end
|
121
|
-
|
122
|
-
it "is associated to the singleton instance of Bank::VariableExchange by default" do
|
123
|
-
Money.new_with_amount(0).bank.should be(Money::Bank::VariableExchange.instance)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
74
|
describe ".empty" do
|
128
75
|
it "creates a new Money object of 0 cents" do
|
129
76
|
Money.empty.should == Money.new(0)
|
@@ -205,14 +152,12 @@ describe Money do
|
|
205
152
|
describe "#fractional" do
|
206
153
|
it "returns the amount in fractional unit" do
|
207
154
|
Money.new(1_00).fractional.should == 1_00
|
208
|
-
Money.new_with_amount(1).fractional.should == 1_00
|
209
155
|
end
|
210
156
|
|
211
157
|
it "stores fractional as an integer regardless of what is passed into the constructor" do
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
end
|
158
|
+
m = Money.new(100)
|
159
|
+
m.fractional.should == 100
|
160
|
+
m.fractional.should be_a(Fixnum)
|
216
161
|
end
|
217
162
|
|
218
163
|
context "loading a serialized Money via YAML" do
|
@@ -304,14 +249,12 @@ YAML
|
|
304
249
|
|
305
250
|
it "returns the amount in fractional unit" do
|
306
251
|
Money.new(1_00).fractional.should == BigDecimal("100")
|
307
|
-
Money.new_with_amount(1).fractional.should == BigDecimal("100")
|
308
252
|
end
|
309
253
|
|
310
254
|
it "stores in fractional unit as an integer regardless of what is passed into the constructor" do
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
end
|
255
|
+
m = Money.new(100)
|
256
|
+
m.fractional.should == BigDecimal("100")
|
257
|
+
m.fractional.should be_a(BigDecimal)
|
315
258
|
end
|
316
259
|
end
|
317
260
|
end
|
@@ -319,7 +262,6 @@ YAML
|
|
319
262
|
describe "#amount" do
|
320
263
|
it "returns the amount of cents as dollars" do
|
321
264
|
Money.new(1_00).amount.should == 1
|
322
|
-
Money.new_with_amount(1).amount.should == 1
|
323
265
|
end
|
324
266
|
|
325
267
|
it "respects :subunit_to_unit currency property" do
|
@@ -330,7 +272,6 @@ YAML
|
|
330
272
|
|
331
273
|
it "does not loose precision" do
|
332
274
|
Money.new(100_37).amount.should == 100.37
|
333
|
-
Money.new_with_amount(100.37).amount.should == 100.37
|
334
275
|
end
|
335
276
|
|
336
277
|
it 'produces a BigDecimal' do
|
@@ -680,4 +621,24 @@ YAML
|
|
680
621
|
obj.as_euro.should == Money.new(1, "EUR")
|
681
622
|
end
|
682
623
|
end
|
624
|
+
|
625
|
+
describe ".default_currency" do
|
626
|
+
before do
|
627
|
+
@default_currency = Money.default_currency
|
628
|
+
end
|
629
|
+
|
630
|
+
it "accepts a lambda" do
|
631
|
+
Money.default_currency = lambda { :eur }
|
632
|
+
Money.default_currency.should == Money::Currency.new(:eur)
|
633
|
+
end
|
634
|
+
|
635
|
+
it "accepts a symbol" do
|
636
|
+
Money.default_currency = :eur
|
637
|
+
Money.default_currency.should == Money::Currency.new(:eur)
|
638
|
+
end
|
639
|
+
|
640
|
+
after do
|
641
|
+
Money.default_currency = @default_currency
|
642
|
+
end
|
643
|
+
end
|
683
644
|
end
|