money 6.13.0 → 6.13.8

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.
Files changed (46) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +49 -2
  3. data/README.md +93 -3
  4. data/config/currency_backwards_compatible.json +31 -0
  5. data/config/currency_iso.json +18 -18
  6. data/lib/money/bank/variable_exchange.rb +14 -6
  7. data/lib/money/currency.rb +4 -4
  8. data/lib/money/currency/loader.rb +15 -13
  9. data/lib/money/locale_backend/currency.rb +11 -0
  10. data/lib/money/locale_backend/i18n.rb +2 -1
  11. data/lib/money/locale_backend/legacy.rb +2 -2
  12. data/lib/money/money.rb +100 -52
  13. data/lib/money/money/allocation.rb +8 -5
  14. data/lib/money/money/arithmetic.rb +20 -10
  15. data/lib/money/money/formatter.rb +3 -0
  16. data/lib/money/money/formatting_rules.rb +15 -5
  17. data/lib/money/money/locale_backend.rb +3 -1
  18. data/lib/money/rates_store/memory.rb +24 -23
  19. data/lib/money/version.rb +1 -1
  20. data/money.gemspec +4 -4
  21. metadata +11 -51
  22. data/.coveralls.yml +0 -1
  23. data/.gitignore +0 -23
  24. data/.rspec +0 -2
  25. data/.travis.yml +0 -32
  26. data/AUTHORS +0 -131
  27. data/CONTRIBUTING.md +0 -17
  28. data/Gemfile +0 -16
  29. data/Rakefile +0 -17
  30. data/spec/bank/base_spec.rb +0 -79
  31. data/spec/bank/single_currency_spec.rb +0 -13
  32. data/spec/bank/variable_exchange_spec.rb +0 -265
  33. data/spec/currency/heuristics_spec.rb +0 -11
  34. data/spec/currency/loader_spec.rb +0 -19
  35. data/spec/currency_spec.rb +0 -400
  36. data/spec/locale_backend/i18n_spec.rb +0 -62
  37. data/spec/locale_backend/legacy_spec.rb +0 -74
  38. data/spec/money/allocation_spec.rb +0 -130
  39. data/spec/money/arithmetic_spec.rb +0 -756
  40. data/spec/money/constructors_spec.rb +0 -91
  41. data/spec/money/formatting_spec.rb +0 -855
  42. data/spec/money/locale_backend_spec.rb +0 -14
  43. data/spec/money_spec.rb +0 -880
  44. data/spec/rates_store/memory_spec.rb +0 -80
  45. data/spec/spec_helper.rb +0 -30
  46. data/spec/support/shared_examples/money_examples.rb +0 -14
@@ -1,91 +0,0 @@
1
- # encoding: utf-8
2
-
3
- describe Money::Constructors do
4
-
5
- describe "::empty" do
6
- it "creates a new Money object of 0 cents" do
7
- expect(Money.empty).to eq Money.new(0)
8
- end
9
-
10
- it "instantiates a subclass when inheritance is used" do
11
- special_money_class = Class.new(Money)
12
- expect(special_money_class.empty).to be_a special_money_class
13
- end
14
- end
15
-
16
-
17
- describe "::zero" do
18
- subject { Money.zero }
19
- it { is_expected.to eq Money.empty }
20
-
21
- it "instantiates a subclass when inheritance is used" do
22
- special_money_class = Class.new(Money)
23
- expect(special_money_class.zero).to be_a special_money_class
24
- end
25
- end
26
-
27
-
28
- describe "::ca_dollar" do
29
- it "creates a new Money object of the given value in CAD" do
30
- expect(Money.ca_dollar(50)).to eq Money.new(50, "CAD")
31
- end
32
-
33
- it "is aliased to ::cad" do
34
- expect(Money.cad(50)).to eq Money.ca_dollar(50)
35
- end
36
-
37
- it "instantiates a subclass when inheritance is used" do
38
- special_money_class = Class.new(Money)
39
- expect(special_money_class.ca_dollar(0)).to be_a special_money_class
40
- end
41
- end
42
-
43
-
44
- describe "::us_dollar" do
45
- it "creates a new Money object of the given value in USD" do
46
- expect(Money.us_dollar(50)).to eq Money.new(50, "USD")
47
- end
48
-
49
- it "is aliased to ::usd" do
50
- expect(Money.usd(50)).to eq Money.us_dollar(50)
51
- end
52
-
53
- it "instantiates a subclass when inheritance is used" do
54
- special_money_class = Class.new(Money)
55
- expect(special_money_class.us_dollar(0)).to be_a special_money_class
56
- end
57
- end
58
-
59
-
60
- describe "::euro" do
61
- it "creates a new Money object of the given value in EUR" do
62
- expect(Money.euro(50)).to eq Money.new(50, "EUR")
63
- end
64
-
65
- it "is aliased to ::eur" do
66
- expect(Money.eur(50)).to eq Money.euro(50)
67
- end
68
-
69
- it "instantiates a subclass when inheritance is used" do
70
- special_money_class = Class.new(Money)
71
- expect(special_money_class.euro(0)).to be_a special_money_class
72
- end
73
- end
74
-
75
-
76
- describe "::pound_sterling" do
77
- it "creates a new Money object of the given value in GBP" do
78
- expect(Money.pound_sterling(50)).to eq Money.new(50, "GBP")
79
- end
80
-
81
- it "is aliased to ::gbp" do
82
- expect(Money.gbp(50)).to eq Money.pound_sterling(50)
83
- end
84
-
85
- it "instantiates a subclass when inheritance is used" do
86
- special_money_class = Class.new(Money)
87
- expect(special_money_class.pound_sterling(0)).to be_a special_money_class
88
- end
89
- end
90
-
91
- end
@@ -1,855 +0,0 @@
1
- # encoding: utf-8
2
-
3
- describe Money, "formatting" do
4
-
5
- BAR = '{ "priority": 1, "iso_code": "BAR", "iso_numeric": "840", "name": "Dollar with 4 decimal places", "symbol": "$", "subunit": "Cent", "subunit_to_unit": 10000, "symbol_first": true, "html_entity": "$", "decimal_mark": ".", "thousands_separator": ",", "smallest_denomination": 1 }'
6
- INDIAN_BAR = '{ "priority": 1, "iso_code": "INDIAN_BAR", "iso_numeric": "840", "name": "Dollar with 4 decimal places", "symbol": "$", "subunit": "Cent", "subunit_to_unit": 10000, "symbol_first": true, "html_entity": "$", "decimal_mark": ".", "thousands_separator": ",", "south_asian_number_formatting": true, "smallest_denomination": 1}'
7
- EU4 = '{ "priority": 1, "iso_code": "EU4", "iso_numeric": "841", "name": "Euro with 4 decimal places", "symbol": "€", "subunit": "Cent", "subunit_to_unit": 10000, "symbol_first": true, "html_entity": "€", "decimal_mark": ",", "thousands_separator": ".", "smallest_denomination": 1 }'
8
-
9
- context "without i18n" do
10
- subject(:money) { Money.empty("USD") }
11
-
12
- it "should use ',' as the thousands separator" do
13
- expect(money.thousands_separator).to eq ','
14
- end
15
-
16
- it "should use '.' as the decimal mark" do
17
- expect(money.decimal_mark).to eq '.'
18
- end
19
- end
20
-
21
- context 'without locale_backend' do
22
- before { Money.locale_backend = nil }
23
- after { Money.locale_backend = :legacy }
24
-
25
- subject(:money) { Money.new(1099_99, 'USD') }
26
-
27
- it 'falls back to using defaults' do
28
- expect(money.thousands_separator).to eq('')
29
- expect(money.decimal_mark).to eq('.')
30
- expect(money.format).to eq('$1099.99')
31
- end
32
- end
33
-
34
- context "with i18n but use_i18n = false" do
35
- before :each do
36
- reset_i18n
37
- I18n.locale = :de
38
- I18n.backend.store_translations(
39
- :de,
40
- number: { currency: { format: { delimiter: ".", separator: "," } } }
41
- )
42
- Money.use_i18n = false
43
- end
44
-
45
- after :each do
46
- reset_i18n
47
- I18n.locale = :en
48
- Money.use_i18n = true
49
- end
50
-
51
- subject(:money) { Money.empty("USD") }
52
-
53
- it "should use ',' as the thousands separator" do
54
- expect(money.thousands_separator).to eq ','
55
- end
56
-
57
- it "should use '.' as the decimal mark" do
58
- expect(money.decimal_mark).to eq '.'
59
- end
60
- end
61
-
62
- context "with i18n" do
63
- after :each do
64
- reset_i18n
65
- I18n.locale = :en
66
- end
67
-
68
- context "with number.format.*" do
69
- before :each do
70
- reset_i18n
71
- I18n.locale = :de
72
- I18n.backend.store_translations(
73
- :de,
74
- number: { format: { delimiter: ".", separator: "," } }
75
- )
76
- end
77
-
78
- subject(:money) { Money.empty("USD") }
79
-
80
- it "should use '.' as the thousands separator" do
81
- expect(money.thousands_separator).to eq '.'
82
- end
83
-
84
- it "should use ',' as the decimal mark" do
85
- expect(money.decimal_mark).to eq ','
86
- end
87
- end
88
-
89
- context "with number.currency.format.*" do
90
- before :each do
91
- reset_i18n
92
- I18n.locale = :de
93
- I18n.backend.store_translations(
94
- :de,
95
- number: { currency: { format: { delimiter: ".", separator: "," } } }
96
- )
97
- end
98
-
99
- subject(:money) { Money.empty("USD") }
100
-
101
- it "should use '.' as the thousands separator" do
102
- expect(money.thousands_separator).to eq '.'
103
- end
104
-
105
- it "should use ',' as the decimal mark" do
106
- expect(money.decimal_mark).to eq ','
107
- end
108
- end
109
-
110
- context "with number.currency.symbol.*" do
111
- before :each do
112
- reset_i18n
113
- I18n.locale = :de
114
- I18n.backend.store_translations(
115
- :de,
116
- number: { currency: { symbol: { CAD: "CAD$" } } }
117
- )
118
- end
119
-
120
- subject(:money) { Money.empty("CAD") }
121
-
122
- it "should use 'CAD$' as the currency symbol" do
123
- expect(money.format(translate: true)).to eq("CAD$0.00")
124
- end
125
- end
126
-
127
- context "with overridden i18n settings" do
128
- it "should respect explicit overriding of thousands_separator/delimiter when decimal_mark/separator collide and there’s no decimal component for currencies that have no subunit" do
129
- expect(Money.new(300_000, 'ISK').format(thousands_separator: ".", decimal_mark: ',')).to eq "kr300.000"
130
- end
131
-
132
- it "should respect explicit overriding of thousands_separator/delimiter when decimal_mark/separator collide and there’s no decimal component for currencies with subunits that drop_trailing_zeros" do
133
- expect(Money.new(300_000, 'USD').format(thousands_separator: ".", decimal_mark: ',', drop_trailing_zeros: true)).to eq "$3.000"
134
- end
135
- end
136
- end
137
-
138
- describe "#format" do
139
- context "Locale :ja" do
140
- before { @_locale = I18n.locale; I18n.locale = :ja }
141
-
142
- it "formats Japanese currency in Japanese properly" do
143
- money = Money.new(1000, "JPY")
144
- expect(money.format).to eq "1,000円"
145
- expect(money.format(symbol: false)).to eq "1,000"
146
- end
147
-
148
- after { I18n.locale = @_locale }
149
- end
150
-
151
- it "returns the monetary value as a string" do
152
- expect(Money.ca_dollar(100).format).to eq "$1.00"
153
- expect(Money.new(40008).format).to eq "$400.08"
154
- end
155
-
156
- it "respects :subunit_to_unit currency property" do
157
- expect(Money.new(10_00, "BHD").format).to eq "ب.د1.000"
158
- end
159
-
160
- context "when :subunit_to_unit is 1" do
161
- it "does not display a decimal part" do
162
- expect(Money.new(10_00, "VUV").format).to eq "Vt1,000"
163
- end
164
-
165
- it "does not displays a decimal part when infinite_precision is false" do
166
- expect(Money.new(10_00.1, "VUV").format).to eq "Vt1,000"
167
- end
168
-
169
- it "displays a decimal part when infinite_precision is true", :infinite_precision do
170
- expect(Money.new(10_00.1, "VUV").format).to eq "Vt1,000.1"
171
- end
172
- end
173
-
174
- it "respects the thousands_separator and decimal_mark defaults" do
175
- one_thousand = Proc.new do |currency|
176
- Money.new(1000_00, currency).format
177
- end
178
-
179
- # Pounds
180
- expect(one_thousand["GBP"]).to eq "£1,000.00"
181
-
182
- # Dollars
183
- expect(one_thousand["USD"]).to eq "$1,000.00"
184
- expect(one_thousand["CAD"]).to eq "$1,000.00"
185
- expect(one_thousand["AUD"]).to eq "$1,000.00"
186
- expect(one_thousand["NZD"]).to eq "$1,000.00"
187
- expect(one_thousand["ZWD"]).to eq "$1,000.00"
188
-
189
- # Yen
190
- expect(one_thousand["JPY"]).to eq "¥100,000"
191
- expect(one_thousand["CNY"]).to eq "¥1,000.00"
192
-
193
- # Euro
194
- expect(one_thousand["EUR"]).to eq "€1.000,00"
195
-
196
- # Rupees
197
- expect(one_thousand["INR"]).to eq "₹1,000.00"
198
- expect(one_thousand["NPR"]).to eq "₨1,000.00"
199
- expect(one_thousand["SCR"]).to eq "1,000.00 ₨"
200
- expect(one_thousand["LKR"]).to eq "1,000.00 ₨"
201
-
202
- # Brazilian Real
203
- expect(one_thousand["BRL"]).to eq "R$1.000,00"
204
-
205
- # Other
206
- expect(one_thousand["SEK"]).to eq "1 000,00 kr"
207
- expect(one_thousand["GHC"]).to eq "₵1,000.00"
208
- end
209
-
210
- it "inserts commas into the result if the amount is sufficiently large" do
211
- expect(Money.us_dollar(1_000_000_000_12).format).to eq "$1,000,000,000.12"
212
- expect(Money.us_dollar(1_000_000_000_12).format(no_cents: true)).to eq "$1,000,000,000"
213
- end
214
-
215
- it "inserts thousands separator into the result if the amount is sufficiently large and the currency symbol is at the end" do
216
- expect(Money.euro(1_234_567_12).format).to eq "€1.234.567,12"
217
- expect(Money.euro(1_234_567_12).format(no_cents: true)).to eq "€1.234.567"
218
- end
219
-
220
- context 'when default_formatting_rules defines (display_free: true)' do
221
- before do
222
- Money.default_formatting_rules = { display_free: "you won't pay a thing" }
223
- end
224
-
225
- after do
226
- Money.default_formatting_rules = nil
227
- end
228
-
229
- context 'with no rule provided' do
230
- it 'acknowledges default rule' do
231
- expect(Money.new(0, 'USD').format).to eq "you won't pay a thing"
232
- end
233
- end
234
-
235
- context 'with rule (display_free: false) provided' do
236
- it 'acknowledges provided rule' do
237
- expect(Money.new(0, 'USD').format(display_free: false)).to eq '$0.00'
238
- end
239
- end
240
- end
241
-
242
- context 'when default_formatting_rules is not defined' do
243
- before do
244
- Money.default_formatting_rules = nil
245
- end
246
-
247
- context 'acknowledges provided rule' do
248
- it 'acknowledges provided rule' do
249
- expect(Money.new(100, 'USD').format(with_currency: true)).to eq '$1.00 USD'
250
- end
251
- end
252
- end
253
-
254
- describe ":with_currency option" do
255
- specify "(:with_currency option => true) works as documented" do
256
- expect(Money.ca_dollar(100).format(with_currency: true)).to eq "$1.00 CAD"
257
- expect(Money.us_dollar(85).format(with_currency: true)).to eq "$0.85 USD"
258
- end
259
- end
260
-
261
- describe ":no_cents option" do
262
- specify "(:with_currency option => true) works as documented" do
263
- expect(Money.ca_dollar(100).format(no_cents: true)).to eq "$1"
264
- expect(Money.ca_dollar(599).format(no_cents: true)).to eq "$5"
265
- expect(Money.ca_dollar(570).format(no_cents: true, with_currency: true)).to eq "$5 CAD"
266
- expect(Money.ca_dollar(39000).format(no_cents: true)).to eq "$390"
267
- end
268
-
269
- it "respects :subunit_to_unit currency property" do
270
- expect(Money.new(10_00, "BHD").format(no_cents: true)).to eq "ب.د1"
271
- end
272
-
273
- it "inserts thousand separators if symbol contains decimal mark and no_cents is true" do
274
- expect(Money.new(100000000, "AMD").format(no_cents: true)).to eq "1,000,000 դր."
275
- expect(Money.new(100000000, "USD").format(no_cents: true)).to eq "$1,000,000"
276
- expect(Money.new(100000000, "RUB").format(no_cents: true)).to eq "1.000.000 ₽"
277
- end
278
-
279
- it "doesn't incorrectly format HTML" do
280
- money = ::Money.new(1999, "RUB")
281
- output = money.format(html: true, no_cents: true)
282
- expect(output).to eq "19 ₽"
283
- end
284
-
285
- it "doesn't incorrectly format HTML (html_wrap)" do
286
- money = ::Money.new(1999, "RUB")
287
- output = money.format(html_wrap: true, no_cents: true)
288
- expect(output).to eq "<span class=\"money-whole\">19</span> <span class=\"money-currency-symbol\">&#x20BD;</span>"
289
- end
290
- end
291
-
292
- describe ":no_cents_if_whole option" do
293
- specify "(no_cents_if_whole: true) works as documented" do
294
- expect(Money.new(10000, "VUV").format(no_cents_if_whole: true, symbol: false)).to eq "10,000"
295
- expect(Money.new(10034, "VUV").format(no_cents_if_whole: true, symbol: false)).to eq "10,034"
296
- expect(Money.new(10000, "MGA").format(no_cents_if_whole: true, symbol: false)).to eq "2,000"
297
- expect(Money.new(10034, "MGA").format(no_cents_if_whole: true, symbol: false)).to eq "2,006.8"
298
- expect(Money.new(10000, "VND").format(no_cents_if_whole: true, symbol: false)).to eq "10.000"
299
- expect(Money.new(10034, "VND").format(no_cents_if_whole: true, symbol: false)).to eq "10.034"
300
- expect(Money.new(10000, "USD").format(no_cents_if_whole: true, symbol: false)).to eq "100"
301
- expect(Money.new(10034, "USD").format(no_cents_if_whole: true, symbol: false)).to eq "100.34"
302
- expect(Money.new(10000, "IQD").format(no_cents_if_whole: true, symbol: false)).to eq "10"
303
- expect(Money.new(10034, "IQD").format(no_cents_if_whole: true, symbol: false)).to eq "10.034"
304
- end
305
-
306
- specify "(no_cents_if_whole: false) works as documented" do
307
- expect(Money.new(10000, "VUV").format(no_cents_if_whole: false, symbol: false)).to eq "10,000"
308
- expect(Money.new(10034, "VUV").format(no_cents_if_whole: false, symbol: false)).to eq "10,034"
309
- expect(Money.new(10000, "MGA").format(no_cents_if_whole: false, symbol: false)).to eq "2,000.0"
310
- expect(Money.new(10034, "MGA").format(no_cents_if_whole: false, symbol: false)).to eq "2,006.8"
311
- expect(Money.new(10000, "VND").format(no_cents_if_whole: false, symbol: false)).to eq "10.000"
312
- expect(Money.new(10034, "VND").format(no_cents_if_whole: false, symbol: false)).to eq "10.034"
313
- expect(Money.new(10000, "USD").format(no_cents_if_whole: false, symbol: false)).to eq "100.00"
314
- expect(Money.new(10034, "USD").format(no_cents_if_whole: false, symbol: false)).to eq "100.34"
315
- expect(Money.new(10000, "IQD").format(no_cents_if_whole: false, symbol: false)).to eq "10.000"
316
- expect(Money.new(10034, "IQD").format(no_cents_if_whole: false, symbol: false)).to eq "10.034"
317
- end
318
- end
319
-
320
- describe ":symbol option" do
321
- specify "(symbol: a symbol string) uses the given value as the money symbol" do
322
- expect(Money.new(100, "GBP").format(symbol: "£")).to eq "£1.00"
323
- end
324
-
325
- specify "(symbol: true) returns symbol based on the given currency code" do
326
- one = Proc.new do |currency|
327
- Money.new(100, currency).format(symbol: true)
328
- end
329
-
330
- # Pounds
331
- expect(one["GBP"]).to eq "£1.00"
332
-
333
- # Dollars
334
- expect(one["USD"]).to eq "$1.00"
335
- expect(one["CAD"]).to eq "$1.00"
336
- expect(one["AUD"]).to eq "$1.00"
337
- expect(one["NZD"]).to eq "$1.00"
338
- expect(one["ZWD"]).to eq "$1.00"
339
-
340
- # Yen
341
- expect(one["JPY"]).to eq "¥100"
342
- expect(one["CNY"]).to eq "¥1.00"
343
-
344
- # Euro
345
- expect(one["EUR"]).to eq "€1,00"
346
-
347
- # Rupees
348
- expect(one["INR"]).to eq "₹1.00"
349
- expect(one["NPR"]).to eq "₨1.00"
350
- expect(one["SCR"]).to eq "1.00 ₨"
351
- expect(one["LKR"]).to eq "1.00 ₨"
352
-
353
- # Brazilian Real
354
- expect(one["BRL"]).to eq "R$1,00"
355
-
356
- # Vietnamese Dong
357
- expect(one["VND"]).to eq "100 ₫"
358
-
359
- # Other
360
- expect(one["SEK"]).to eq "1,00 kr"
361
- expect(one["GHC"]).to eq "₵1.00"
362
- end
363
-
364
- specify "(symbol: true) returns $ when currency code is not recognized" do
365
- currency = Money::Currency.new("EUR")
366
- expect(currency).to receive(:symbol).and_return(nil)
367
- expect(Money.new(100, currency).format(symbol: true)).to eq "¤1,00"
368
- end
369
-
370
- specify "(symbol: some non-Boolean value that evaluates to true) returns symbol based on the given currency code" do
371
- expect(Money.new(100, "GBP").format(symbol: true)).to eq "£1.00"
372
- expect(Money.new(100, "EUR").format(symbol: true)).to eq "€1,00"
373
- expect(Money.new(100, "SEK").format(symbol: true)).to eq "1,00 kr"
374
- end
375
-
376
- specify "(symbol: "", nil or false) returns the amount without a symbol" do
377
- money = Money.new(100, "GBP")
378
- expect(money.format(symbol: "")).to eq "1.00"
379
- expect(money.format(symbol: nil)).to eq "1.00"
380
- expect(money.format(symbol: false)).to eq "1.00"
381
-
382
- money = Money.new(100, "JPY")
383
- expect(money.format(symbol: false)).to eq "100"
384
- end
385
-
386
- it "defaults :symbol to true" do
387
- money = Money.new(100)
388
- expect(money.format).to eq "$1.00"
389
-
390
- money = Money.new(100, "GBP")
391
- expect(money.format).to eq "£1.00"
392
-
393
- money = Money.new(100, "EUR")
394
- expect(money.format).to eq "€1,00"
395
- end
396
-
397
- specify "(symbol: false) returns a signed amount without a symbol" do
398
- money = Money.new(-100, "EUR")
399
- expect(money.format(symbol: false)).to eq "-1,00"
400
-
401
- money = Money.new(100, "EUR")
402
- expect(money.format(symbol: false,
403
- sign_positive: true)).to eq "+1,00"
404
- end
405
- end
406
-
407
- describe ":decimal_mark option" do
408
- specify "(decimal_mark: a decimal_mark string) works as documented" do
409
- expect(Money.us_dollar(100).format(decimal_mark: ",")).to eq "$1,00"
410
- end
411
-
412
- it "defaults to '.' if currency isn't recognized" do
413
- expect(Money.new(100, "ZWD").format).to eq "$1.00"
414
- end
415
- end
416
-
417
- describe ":separator option" do
418
- specify "(separator: a separator string) works as documented" do
419
- expect(Money.us_dollar(100).format(separator: ",")).to eq "$1,00"
420
- end
421
- end
422
-
423
- describe ":south_asian_number_formatting delimiter" do
424
- before(:each) do
425
- Money::Currency.register(JSON.parse(INDIAN_BAR, symbolize_names: true))
426
- end
427
-
428
- after(:each) do
429
- Money::Currency.unregister(JSON.parse(INDIAN_BAR, symbolize_names: true))
430
- end
431
-
432
- specify "(south_asian_number_formatting: true) works as documented" do
433
- expect(Money.new(10000000, 'INR').format(south_asian_number_formatting: true, symbol: false)).to eq "1,00,000.00"
434
- expect(Money.new(1000000000, 'INDIAN_BAR').format(south_asian_number_formatting: true, symbol: false)).to eq "1,00,000.0000"
435
- expect(Money.new(10000000).format(south_asian_number_formatting: true)).to eq "$1,00,000.00"
436
- end
437
-
438
- specify "(south_asian_number_formatting: true and no_cents_if_whole => true) works as documented" do
439
- expect(Money.new(10000000, 'INR').format(south_asian_number_formatting: true, symbol: false, no_cents_if_whole: true)).to eq "1,00,000"
440
- expect(Money.new(1000000000, 'INDIAN_BAR').format(south_asian_number_formatting: true, symbol: false, no_cents_if_whole: true)).to eq "1,00,000"
441
- end
442
- end
443
-
444
- describe ":thousands_separator option" do
445
- specify "(thousands_separator: a thousands_separator string) works as documented" do
446
- expect(Money.us_dollar(100000).format(thousands_separator: ".")).to eq "$1.000.00"
447
- expect(Money.us_dollar(200000).format(thousands_separator: "")).to eq "$2000.00"
448
- end
449
-
450
- specify "(thousands_separator: false or nil) works as documented" do
451
- expect(Money.us_dollar(100000).format(thousands_separator: false)).to eq "$1000.00"
452
- expect(Money.us_dollar(200000).format(thousands_separator: nil)).to eq "$2000.00"
453
- end
454
-
455
- specify "(delimiter: a delimiter string) works as documented" do
456
- expect(Money.us_dollar(100000).format(delimiter: ".")).to eq "$1.000.00"
457
- expect(Money.us_dollar(200000).format(delimiter: "")).to eq "$2000.00"
458
- end
459
-
460
- specify "(delimiter: false or nil) works as documented" do
461
- expect(Money.us_dollar(100000).format(delimiter: false)).to eq "$1000.00"
462
- expect(Money.us_dollar(200000).format(delimiter: nil)).to eq "$2000.00"
463
- end
464
-
465
- it "defaults to ',' if currency isn't recognized" do
466
- expect(Money.new(100000, "ZWD").format).to eq "$1,000.00"
467
- end
468
-
469
- context "without i18n" do
470
- before { Money.use_i18n = false }
471
-
472
- it "should respect explicit overriding of thousands_separator/delimiter when decimal_mark/separator collide and there’s no decimal component for currencies that have no subunit" do
473
- expect(Money.new(300_000, 'ISK').format(thousands_separator: ",", decimal_mark: '.')).to eq "kr300,000"
474
- end
475
-
476
- it "should respect explicit overriding of thousands_separator/delimiter when decimal_mark/separator collide and there’s no decimal component for currencies with subunits that drop_trailing_zeros" do
477
- expect(Money.new(300_000, 'USD').format(thousands_separator: ".", decimal_mark: ',', drop_trailing_zeros: true)).to eq "$3.000"
478
- end
479
-
480
- after { Money.use_i18n = true}
481
- end
482
- end
483
-
484
- describe ":thousands_separator and :decimal_mark option" do
485
- specify "(thousands_separator: a thousands_separator string, decimal_mark: a decimal_mark string) works as documented" do
486
- expect(Money.new(123_456_789, "USD").format(thousands_separator: ".", decimal_mark: ",")).to eq("$1.234.567,89")
487
- expect(Money.new(987_654_321, "USD").format(thousands_separator: " ", decimal_mark: ".")).to eq("$9 876 543.21")
488
- end
489
- end
490
-
491
- describe ":html option" do
492
- specify "(html: true) works as documented" do
493
- string = Money.ca_dollar(570).format(html: true, with_currency: true)
494
- expect(string).to eq "$5.70 <span class=\"currency\">CAD</span>"
495
- end
496
-
497
- specify "should fallback to symbol if entity is not available" do
498
- string = Money.new(570, 'DKK').format(html: true)
499
- expect(string).to eq "5,70 kr."
500
- end
501
- end
502
-
503
- describe ":html_wrap_symbol option" do
504
- specify "(html_wrap_symbol: true) works as documented" do
505
- string = Money.ca_dollar(570).format(html_wrap_symbol: true)
506
- expect(string).to eq "<span class=\"currency_symbol\">$</span>5.70"
507
- end
508
- end
509
-
510
- describe ":html_wrap option" do
511
- specify "(html_wrap: true) works as documented" do
512
- string = Money.ca_dollar(570).format(html_wrap: true)
513
- expect(string).to eq "<span class=\"money-currency-symbol\">$</span><span class=\"money-whole\">5</span><span class=\"money-decimal-mark\">.</span><span class=\"money-decimal\">70</span>"
514
- end
515
-
516
- specify "(html_wrap: true, with_currency: true)" do
517
- string = Money.ca_dollar(570).format(html_wrap: true, with_currency: true)
518
- expect(string).to eq "<span class=\"money-currency-symbol\">$</span><span class=\"money-whole\">5</span><span class=\"money-decimal-mark\">.</span><span class=\"money-decimal\">70</span> <span class=\"money-currency\">CAD</span>"
519
- end
520
-
521
- specify "should fallback to symbol if entity is not available" do
522
- string = Money.new(570, 'DKK').format(html_wrap: true)
523
- expect(string).to eq "<span class=\"money-whole\">5</span><span class=\"money-decimal-mark\">,</span><span class=\"money-decimal\">70</span> <span class=\"money-currency-symbol\">kr.</span>"
524
- end
525
- end
526
-
527
- describe ":symbol_position option" do
528
- it "inserts currency symbol before the amount when set to :before" do
529
- expect(Money.euro(1_234_567_12).format(symbol_position: :before)).to eq "€1.234.567,12"
530
- end
531
-
532
- it "inserts currency symbol after the amount when set to :after" do
533
- expect(Money.us_dollar(1_000_000_000_12).format(symbol_position: :after)).to eq "1,000,000,000.12 $"
534
- end
535
-
536
- it "raises an ArgumentError when passed an invalid option" do
537
- expect{Money.euro(0).format(symbol_position: :befor)}.to raise_error(ArgumentError)
538
- end
539
- end
540
-
541
- describe ":sign_before_symbol option" do
542
- specify "(sign_before_symbol: true) works as documented" do
543
- expect(Money.us_dollar(-100000).format(sign_before_symbol: true)).to eq "-$1,000.00"
544
- end
545
-
546
- specify "(sign_before_symbol: false) works as documented" do
547
- expect(Money.us_dollar(-100000).format(sign_before_symbol: false)).to eq "$-1,000.00"
548
- expect(Money.us_dollar(-100000).format(sign_before_symbol: nil)).to eq "$-1,000.00"
549
- end
550
- end
551
-
552
- describe ":symbol_before_without_space option" do
553
- it "does not insert space between currency symbol and amount when set to true" do
554
- expect(Money.euro(1_234_567_12).format(symbol_position: :before, symbol_before_without_space: true)).to eq "€1.234.567,12"
555
- end
556
-
557
- it "inserts space between currency symbol and amount when set to false" do
558
- expect(Money.euro(1_234_567_12).format(symbol_position: :before, symbol_before_without_space: false)).to eq "€ 1.234.567,12"
559
- end
560
-
561
- it "defaults to true" do
562
- expect(Money.euro(1_234_567_12).format(symbol_position: :before)).to eq "€1.234.567,12"
563
- end
564
- end
565
-
566
- describe ":symbol_after_without_space option" do
567
- it "does not insert space between amount and currency symbol when set to true" do
568
- expect(Money.euro(1_234_567_12).format(symbol_position: :after, symbol_after_without_space: true)).to eq "1.234.567,12€"
569
- end
570
-
571
- it "inserts space between amount and currency symbol when set to false" do
572
- expect(Money.euro(1_234_567_12).format(symbol_position: :after, symbol_after_without_space: false)).to eq "1.234.567,12 €"
573
- end
574
-
575
- it "defaults to false" do
576
- expect(Money.euro(1_234_567_12).format(symbol_position: :after)).to eq "1.234.567,12 €"
577
- end
578
- end
579
-
580
- describe ":sign_positive option" do
581
- specify "(sign_positive: true, sign_before_symbol: true) works as documented" do
582
- expect(Money.us_dollar( 0).format(sign_positive: true, sign_before_symbol: true)).to eq "$0.00"
583
- expect(Money.us_dollar( 100000).format(sign_positive: true, sign_before_symbol: true)).to eq "+$1,000.00"
584
- expect(Money.us_dollar(-100000).format(sign_positive: true, sign_before_symbol: true)).to eq "-$1,000.00"
585
- end
586
-
587
- specify "(sign_positive: true, sign_before_symbol: false) works as documented" do
588
- expect(Money.us_dollar( 0).format(sign_positive: true, sign_before_symbol: false)).to eq "$0.00"
589
- expect(Money.us_dollar( 100000).format(sign_positive: true, sign_before_symbol: false)).to eq "$+1,000.00"
590
- expect(Money.us_dollar( 100000).format(sign_positive: true, sign_before_symbol: nil)).to eq "$+1,000.00"
591
- expect(Money.us_dollar(-100000).format(sign_positive: true, sign_before_symbol: false)).to eq "$-1,000.00"
592
- expect(Money.us_dollar(-100000).format(sign_positive: true, sign_before_symbol: nil)).to eq "$-1,000.00"
593
- end
594
-
595
- specify "(sign_positive: false, sign_before_symbol: true) works as documented" do
596
- expect(Money.us_dollar( 100000).format(sign_positive: false, sign_before_symbol: true)).to eq "$1,000.00"
597
- expect(Money.us_dollar(-100000).format(sign_positive: false, sign_before_symbol: true)).to eq "-$1,000.00"
598
- end
599
-
600
- specify "(sign_positive: false, sign_before_symbol: false) works as documented" do
601
- expect(Money.us_dollar( 100000).format(sign_positive: false, sign_before_symbol: false)).to eq "$1,000.00"
602
- expect(Money.us_dollar( 100000).format(sign_positive: false, sign_before_symbol: nil)).to eq "$1,000.00"
603
- expect(Money.us_dollar(-100000).format(sign_positive: false, sign_before_symbol: false)).to eq "$-1,000.00"
604
- expect(Money.us_dollar(-100000).format(sign_positive: false, sign_before_symbol: nil)).to eq "$-1,000.00"
605
- end
606
- end
607
-
608
- describe ":rounded_infinite_precision option", :infinite_precision do
609
- it "does round fractional when set to true" do
610
- expect(Money.new(BigDecimal('12.1'), "USD").format(rounded_infinite_precision: true)).to eq "$0.12"
611
- expect(Money.new(BigDecimal('12.5'), "USD").format(rounded_infinite_precision: true)).to eq "$0.13"
612
- expect(Money.new(BigDecimal('123.1'), "BHD").format(rounded_infinite_precision: true)).to eq "ب.د0.123"
613
- expect(Money.new(BigDecimal('123.5'), "BHD").format(rounded_infinite_precision: true)).to eq "ب.د0.124"
614
- expect(Money.new(BigDecimal('100.1'), "USD").format(rounded_infinite_precision: true)).to eq "$1.00"
615
- expect(Money.new(BigDecimal('109.5'), "USD").format(rounded_infinite_precision: true)).to eq "$1.10"
616
- expect(Money.new(BigDecimal('1.7'), "MGA").format(rounded_infinite_precision: true)).to eq "Ar0.4"
617
- end
618
-
619
- it "does not round fractional when set to false" do
620
- expect(Money.new(BigDecimal('12.1'), "USD").format(rounded_infinite_precision: false)).to eq "$0.121"
621
- expect(Money.new(BigDecimal('12.5'), "USD").format(rounded_infinite_precision: false)).to eq "$0.125"
622
- expect(Money.new(BigDecimal('123.1'), "BHD").format(rounded_infinite_precision: false)).to eq "ب.د0.1231"
623
- expect(Money.new(BigDecimal('123.5'), "BHD").format(rounded_infinite_precision: false)).to eq "ب.د0.1235"
624
- expect(Money.new(BigDecimal('100.1'), "USD").format(rounded_infinite_precision: false)).to eq "$1.001"
625
- expect(Money.new(BigDecimal('109.5'), "USD").format(rounded_infinite_precision: false)).to eq "$1.095"
626
- expect(Money.new(BigDecimal('1.7'), "MGA").format(rounded_infinite_precision: false)).to eq "Ar0.34"
627
- end
628
-
629
- describe "with i18n = false" do
630
- before do
631
- Money.use_i18n = false
632
- end
633
-
634
- after do
635
- Money.use_i18n = true
636
- end
637
-
638
- it 'does round fractional when set to true' do
639
- expect(Money.new(BigDecimal('12.1'), "EUR").format(rounded_infinite_precision: true)).to eq "€0,12"
640
- expect(Money.new(BigDecimal('12.5'), "EUR").format(rounded_infinite_precision: true)).to eq "€0,13"
641
- expect(Money.new(BigDecimal('100.1'), "EUR").format(rounded_infinite_precision: true)).to eq "€1,00"
642
- expect(Money.new(BigDecimal('109.5'), "EUR").format(rounded_infinite_precision: true)).to eq "€1,10"
643
-
644
- expect(Money.new(BigDecimal('100012.1'), "EUR").format(rounded_infinite_precision: true)).to eq "€1.000,12"
645
- expect(Money.new(BigDecimal('100012.5'), "EUR").format(rounded_infinite_precision: true)).to eq "€1.000,13"
646
- end
647
- end
648
-
649
- describe "with i18n = true" do
650
- before do
651
- Money.use_i18n = true
652
- reset_i18n
653
- I18n.locale = :de
654
- I18n.backend.store_translations(
655
- :de,
656
- number: { currency: { format: { delimiter: ".", separator: "," } } }
657
- )
658
- end
659
-
660
- after do
661
- reset_i18n
662
- I18n.locale = :en
663
- end
664
-
665
- it 'does round fractional when set to true' do
666
- expect(Money.new(BigDecimal('12.1'), "USD").format(rounded_infinite_precision: true)).to eq "$0,12"
667
- expect(Money.new(BigDecimal('12.5'), "USD").format(rounded_infinite_precision: true)).to eq "$0,13"
668
- expect(Money.new(BigDecimal('123.1'), "BHD").format(rounded_infinite_precision: true)).to eq "ب.د0,123"
669
- expect(Money.new(BigDecimal('123.5'), "BHD").format(rounded_infinite_precision: true)).to eq "ب.د0,124"
670
- expect(Money.new(BigDecimal('100.1'), "USD").format(rounded_infinite_precision: true)).to eq "$1,00"
671
- expect(Money.new(BigDecimal('109.5'), "USD").format(rounded_infinite_precision: true)).to eq "$1,10"
672
- expect(Money.new(BigDecimal('1'), "MGA").format(rounded_infinite_precision: true)).to eq "Ar0,2"
673
- end
674
- end
675
- end
676
-
677
- describe ':format option' do
678
- let(:money) { Money.new(99_99, 'USD') }
679
-
680
- it 'uses provided format as a template' do
681
- expect(money.format(format: '%n')).to eq('99.99')
682
- expect(money.format(format: '%u')).to eq('$')
683
- expect(money.format(format: '%u%n')).to eq('$99.99')
684
- expect(money.format(format: '%n%u')).to eq('99.99$')
685
- expect(money.format(format: '%u %n')).to eq('$ 99.99')
686
- expect(money.format(format: 'Your balance is: %u%n')).to eq('Your balance is: $99.99')
687
- end
688
-
689
- it 'ignores :symbol_position in favour of format' do
690
- expect(money.format(format: '%u%n', symbol_position: :after)).to eq('$99.99')
691
- expect(money.format(format: '%n%u', symbol_position: :before)).to eq('99.99$')
692
- end
693
-
694
- it 'ignores :symbol_before_without_space in favour of format' do
695
- expect(money.format(format: '%u %n', symbol_position: :before, symbol_before_without_space: true)).to eq('$ 99.99')
696
- expect(money.format(format: '%u%n', symbol_position: :before, symbol_before_without_space: false)).to eq('$99.99')
697
- end
698
-
699
- it 'ignores :symbol_after_without_space in favour of format' do
700
- expect(money.format(format: '%n %u', symbol_position: :after, symbol_after_without_space: true)).to eq('99.99 $')
701
- expect(money.format(format: '%n%u', symbol_position: :after, symbol_after_without_space: false)).to eq('99.99$')
702
- end
703
-
704
- it 'works with sign' do
705
- money = Money.new(-99_99, 'USD')
706
-
707
- expect(money.format(format: '%n%u', sign_before_symbol: false)).to eq('-99.99$')
708
- expect(money.format(format: '%u%n', sign_before_symbol: false)).to eq('$-99.99')
709
- expect(money.format(format: '%u%n', sign_before_symbol: true)).to eq('-$99.99')
710
- end
711
- end
712
-
713
- context "when the monetary value is 0" do
714
- let(:money) { Money.us_dollar(0) }
715
-
716
- it "returns 'free' when :display_free is true" do
717
- expect(money.format(display_free: true)).to eq 'free'
718
- end
719
-
720
- it "returns '$0.00' when :display_free is false or not given" do
721
- expect(money.format).to eq '$0.00'
722
- expect(money.format(display_free: false)).to eq '$0.00'
723
- expect(money.format(display_free: nil)).to eq '$0.00'
724
- end
725
-
726
- it "returns the value specified by :display_free if it's a string-like object" do
727
- expect(money.format(display_free: 'gratis')).to eq 'gratis'
728
- end
729
- end
730
- end
731
-
732
- context "custom currencies with 4 decimal places" do
733
- before :each do
734
- Money::Currency.register(JSON.parse(BAR, symbolize_names: true))
735
- Money::Currency.register(JSON.parse(EU4, symbolize_names: true))
736
- end
737
-
738
- after :each do
739
- Money::Currency.unregister(JSON.parse(BAR, symbolize_names: true))
740
- Money::Currency.unregister(JSON.parse(EU4, symbolize_names: true))
741
- end
742
-
743
- it "respects custom subunit to unit, decimal and thousands separator" do
744
- expect(Money.new(4, "BAR").format).to eq "$0.0004"
745
- expect(Money.new(4, "EU4").format).to eq "€0,0004"
746
-
747
- expect(Money.new(24, "BAR").format).to eq "$0.0024"
748
- expect(Money.new(24, "EU4").format).to eq "€0,0024"
749
-
750
- expect(Money.new(324, "BAR").format).to eq "$0.0324"
751
- expect(Money.new(324, "EU4").format).to eq "€0,0324"
752
-
753
- expect(Money.new(5324, "BAR").format).to eq "$0.5324"
754
- expect(Money.new(5324, "EU4").format).to eq "€0,5324"
755
-
756
- expect(Money.new(65324, "BAR").format).to eq "$6.5324"
757
- expect(Money.new(65324, "EU4").format).to eq "€6,5324"
758
-
759
- expect(Money.new(865324, "BAR").format).to eq "$86.5324"
760
- expect(Money.new(865324, "EU4").format).to eq "€86,5324"
761
-
762
- expect(Money.new(1865324, "BAR").format).to eq "$186.5324"
763
- expect(Money.new(1865324, "EU4").format).to eq "€186,5324"
764
-
765
- expect(Money.new(33310034, "BAR").format).to eq "$3,331.0034"
766
- expect(Money.new(33310034, "EU4").format).to eq "€3.331,0034"
767
-
768
- expect(Money.new(88833310034, "BAR").format).to eq "$8,883,331.0034"
769
- expect(Money.new(88833310034, "EU4").format).to eq "€8.883.331,0034"
770
- end
771
-
772
- end
773
-
774
- context "currencies with ambiguous signs" do
775
-
776
- it "returns ambiguous signs when disambiguate is not set" do
777
- expect(Money.new(1999_98, "USD").format).to eq("$1,999.98")
778
- expect(Money.new(1999_98, "CAD").format).to eq("$1,999.98")
779
- expect(Money.new(1999_98, "DKK").format).to eq("1.999,98 kr.")
780
- expect(Money.new(1999_98, "NOK").format).to eq("1.999,98 kr")
781
- expect(Money.new(1999_98, "SEK").format).to eq("1 999,98 kr")
782
- expect(Money.new(1999_98, "BCH").format).to eq("0.00199998 ₿")
783
- end
784
-
785
- it "returns ambiguous signs when disambiguate is false" do
786
- expect(Money.new(1999_98, "USD").format(disambiguate: false)).to eq("$1,999.98")
787
- expect(Money.new(1999_98, "CAD").format(disambiguate: false)).to eq("$1,999.98")
788
- expect(Money.new(1999_98, "DKK").format(disambiguate: false)).to eq("1.999,98 kr.")
789
- expect(Money.new(1999_98, "NOK").format(disambiguate: false)).to eq("1.999,98 kr")
790
- expect(Money.new(1999_98, "SEK").format(disambiguate: false)).to eq("1 999,98 kr")
791
- expect(Money.new(1999_98, "BCH").format(disambiguate: false)).to eq("0.00199998 ₿")
792
- end
793
-
794
- it "returns disambiguate signs when disambiguate: true" do
795
- expect(Money.new(1999_98, "USD").format(disambiguate: true)).to eq("US$1,999.98")
796
- expect(Money.new(1999_98, "CAD").format(disambiguate: true)).to eq("C$1,999.98")
797
- expect(Money.new(1999_98, "DKK").format(disambiguate: true)).to eq("1.999,98 DKK")
798
- expect(Money.new(1999_98, "NOK").format(disambiguate: true)).to eq("1.999,98 NOK")
799
- expect(Money.new(1999_98, "SEK").format(disambiguate: true)).to eq("1 999,98 SEK")
800
- expect(Money.new(1999_98, "BCH").format(disambiguate: true)).to eq("0.00199998 ₿CH")
801
- end
802
-
803
- it "returns disambiguate signs when disambiguate: true and symbol: true" do
804
- expect(Money.new(1999_98, "USD").format(disambiguate: true, symbol: true)).to eq("US$1,999.98")
805
- expect(Money.new(1999_98, "CAD").format(disambiguate: true, symbol: true)).to eq("C$1,999.98")
806
- expect(Money.new(1999_98, "DKK").format(disambiguate: true, symbol: true)).to eq("1.999,98 DKK")
807
- expect(Money.new(1999_98, "NOK").format(disambiguate: true, symbol: true)).to eq("1.999,98 NOK")
808
- expect(Money.new(1999_98, "SEK").format(disambiguate: true, symbol: true)).to eq("1 999,98 SEK")
809
- expect(Money.new(1999_98, "BCH").format(disambiguate: true, symbol: true)).to eq("0.00199998 ₿CH")
810
- end
811
-
812
- it "returns no signs when disambiguate: true and symbol: false" do
813
- expect(Money.new(1999_98, "USD").format(disambiguate: true, symbol: false)).to eq("1,999.98")
814
- expect(Money.new(1999_98, "CAD").format(disambiguate: true, symbol: false)).to eq("1,999.98")
815
- expect(Money.new(1999_98, "DKK").format(disambiguate: true, symbol: false)).to eq("1.999,98")
816
- expect(Money.new(1999_98, "NOK").format(disambiguate: true, symbol: false)).to eq("1.999,98")
817
- expect(Money.new(1999_98, "SEK").format(disambiguate: true, symbol: false)).to eq("1 999,98")
818
- expect(Money.new(1999_98, "BCH").format(disambiguate: true, symbol: false)).to eq("0.00199998")
819
- end
820
-
821
- it "should never return an ambiguous format with disambiguate: true" do
822
- formatted_results = {}
823
-
824
- # When we format the same amount in all known currencies, disambiguate should return
825
- # all different values
826
- Money::Currency.all.each do |currency|
827
- format = Money.new(1999_98, currency).format(disambiguate: true)
828
- expect(formatted_results.keys).not_to include(format), "Format '#{format}' for #{currency} is ambiguous with currency #{formatted_results[format]}."
829
- formatted_results[format] = currency
830
- end
831
- end
832
-
833
- describe ":drop_trailing_zeros option" do
834
- specify "(drop_trailing_zeros: true) works as documented" do
835
- expect(Money.new(89000, "BTC").format(drop_trailing_zeros: true, symbol: false)).to eq "0.00089"
836
- expect(Money.new(89000, "BCH").format(drop_trailing_zeros: true, symbol: false)).to eq "0.00089"
837
- expect(Money.new(100089000, "BTC").format(drop_trailing_zeros: true, symbol: false)).to eq "1.00089"
838
- expect(Money.new(100089000, "BCH").format(drop_trailing_zeros: true, symbol: false)).to eq "1.00089"
839
- expect(Money.new(100000000, "BTC").format(drop_trailing_zeros: true, symbol: false)).to eq "1"
840
- expect(Money.new(100000000, "BCH").format(drop_trailing_zeros: true, symbol: false)).to eq "1"
841
- expect(Money.new(110, "AUD").format(drop_trailing_zeros: true, symbol: false)).to eq "1.1"
842
- end
843
-
844
- specify "(drop_trailing_zeros: false) works as documented" do
845
- expect(Money.new(89000, "BTC").format(drop_trailing_zeros: false, symbol: false)).to eq "0.00089000"
846
- expect(Money.new(89000, "BCH").format(drop_trailing_zeros: false, symbol: false)).to eq "0.00089000"
847
- expect(Money.new(100089000, "BTC").format(drop_trailing_zeros: false, symbol: false)).to eq "1.00089000"
848
- expect(Money.new(100089000, "BCH").format(drop_trailing_zeros: false, symbol: false)).to eq "1.00089000"
849
- expect(Money.new(100000000, "BTC").format(drop_trailing_zeros: false, symbol: false)).to eq "1.00000000"
850
- expect(Money.new(100000000, "BCH").format(drop_trailing_zeros: false, symbol: false)).to eq "1.00000000"
851
- expect(Money.new(110, "AUD").format(drop_trailing_zeros: false, symbol: false)).to eq "1.10"
852
- end
853
- end
854
- end
855
- end