money 6.0.1 → 6.1.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|