money 6.1.1 → 6.2.0

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.
data/spec/money_spec.rb CHANGED
@@ -7,7 +7,9 @@ describe Money do
7
7
  let(:initializing_value) { 1 }
8
8
  subject(:money) { Money.new(initializing_value) }
9
9
 
10
- its(:bank) { should be Money::Bank::VariableExchange.instance }
10
+ it "should be an instance of `Money::Bank::VariableExchange`" do
11
+ expect(money.bank).to be Money::Bank::VariableExchange.instance
12
+ end
11
13
 
12
14
  context 'given the initializing value is an integer' do
13
15
  let(:initializing_value) { Integer(1) }
@@ -19,38 +21,41 @@ describe Money do
19
21
  context 'given the initializing value is a float' do
20
22
  context 'and the value is 1.00' do
21
23
  let(:initializing_value) { 1.00 }
22
- it { should eq Money.new(1) }
24
+ it { is_expected.to eq Money.new(1) }
23
25
  end
24
26
 
25
27
  context 'and the value is 1.01' do
26
28
  let(:initializing_value) { 1.01 }
27
- it { should eq Money.new(1) }
29
+ it { is_expected.to eq Money.new(1) }
28
30
  end
29
31
 
30
32
  context 'and the value is 1.50' do
31
33
  let(:initializing_value) { 1.50 }
32
- it { should eq Money.new(2) }
34
+ it { is_expected.to eq Money.new(2) }
33
35
  end
34
36
  end
35
37
 
36
38
  context 'given the initializing value is a rational' do
37
39
  let(:initializing_value) { Rational(1) }
38
- it { should eq Money.new(1) }
40
+ it { is_expected.to eq Money.new(1) }
39
41
  end
40
42
 
41
43
  context 'given the initializing value is money' do
42
44
  let(:initializing_value) { Money.new(1_00, Money::Currency.new('NZD')) }
43
- it { should eq initializing_value }
45
+ it { is_expected.to eq initializing_value }
44
46
  end
45
47
 
46
48
  context "given the initializing value doesn't respond to .to_d" do
47
49
  let(:initializing_value) { :"1" }
48
- it { should eq Money.new(1) }
50
+ it { is_expected.to eq Money.new(1) }
49
51
  end
50
52
 
51
53
  context 'given a currency is not provided' do
52
54
  subject(:money) { Money.new(initializing_value) }
53
- its(:currency) { should eq Money.default_currency }
55
+
56
+ it "should have the default currency" do
57
+ expect(money.currency).to eq Money.default_currency
58
+ end
54
59
  end
55
60
 
56
61
  context 'given a currency is provided' do
@@ -58,53 +63,71 @@ describe Money do
58
63
 
59
64
  context 'and the currency is NZD' do
60
65
  let(:currency) { Money::Currency.new('NZD') }
61
- its(:currency) { should eq Money::Currency.new('NZD') }
66
+
67
+ it "should have NZD currency" do
68
+ expect(money.currency).to eq Money::Currency.new('NZD')
69
+ end
70
+ end
71
+
72
+ context 'and the currency is nil' do
73
+ let(:currency) { nil }
74
+
75
+ it "should have the default currency" do
76
+ expect(money.currency).to eq Money.default_currency
77
+ end
62
78
  end
63
79
  end
64
80
 
65
81
  context "infinite_precision = true" do
66
- before { Money.stub(:infinite_precision => true) }
82
+ before { expect(Money).to receive(:infinite_precision).and_return(true) }
67
83
  context 'given the initializing value is 1.50' do
68
84
  let(:initializing_value) { 1.50 }
69
- its(:cents) { should eq BigDecimal('1.50') }
85
+
86
+ it "should have the correct cents" do
87
+ expect(money.cents).to eq BigDecimal('1.50')
88
+ end
70
89
  end
71
90
  end
72
91
  end
73
92
 
74
93
  describe ".empty" do
75
94
  it "creates a new Money object of 0 cents" do
76
- Money.empty.should == Money.new(0)
95
+ expect(Money.empty).to eq Money.new(0)
77
96
  end
78
97
 
79
98
  it "memoizes the result" do
80
- Money.empty.object_id.should == Money.empty.object_id
99
+ expect(Money.empty.object_id).to eq Money.empty.object_id
81
100
  end
82
101
 
83
102
  it "memoizes a result for each currency" do
84
- Money.empty(:cad).object_id.should == Money.empty(:cad).object_id
103
+ expect(Money.empty(:cad).object_id).to eq Money.empty(:cad).object_id
104
+ end
105
+
106
+ it "doesn't allow money to be modified for a currency" do
107
+ expect(Money.empty).to be_frozen
85
108
  end
86
109
  end
87
110
 
88
111
  describe ".zero" do
89
112
  subject { Money.zero }
90
- it { should == Money.empty }
113
+ it { is_expected.to eq Money.empty }
91
114
  end
92
115
 
93
116
  describe ".ca_dollar" do
94
117
  it "creates a new Money object of the given value in CAD" do
95
- Money.ca_dollar(50).should == Money.new(50, "CAD")
118
+ expect(Money.ca_dollar(50)).to eq Money.new(50, "CAD")
96
119
  end
97
120
  end
98
121
 
99
122
  describe ".us_dollar" do
100
123
  it "creates a new Money object of the given value in USD" do
101
- Money.us_dollar(50).should == Money.new(50, "USD")
124
+ expect(Money.us_dollar(50)).to eq Money.new(50, "USD")
102
125
  end
103
126
  end
104
127
 
105
128
  describe ".euro" do
106
129
  it "creates a new Money object of the given value in EUR" do
107
- Money.euro(50).should == Money.new(50, "EUR")
130
+ expect(Money.euro(50)).to eq Money.new(50, "EUR")
108
131
  end
109
132
  end
110
133
 
@@ -120,7 +143,7 @@ describe Money do
120
143
 
121
144
  it "saves rate into current bank" do
122
145
  Money.add_rate("EUR", "USD", 10)
123
- Money.new(10_00, "EUR").exchange_to("USD").should == Money.new(100_00, "USD")
146
+ expect(Money.new(10_00, "EUR").exchange_to("USD")).to eq Money.new(100_00, "USD")
124
147
  end
125
148
  end
126
149
 
@@ -145,19 +168,19 @@ describe Money do
145
168
  def expectation.fractional
146
169
  "expectation"
147
170
  end
148
- expectation.cents.should == "expectation"
171
+ expect(expectation.cents).to eq "expectation"
149
172
  end
150
173
  end
151
174
 
152
175
  describe "#fractional" do
153
176
  it "returns the amount in fractional unit" do
154
- Money.new(1_00).fractional.should == 1_00
177
+ expect(Money.new(1_00).fractional).to eq 1_00
155
178
  end
156
179
 
157
180
  it "stores fractional as an integer regardless of what is passed into the constructor" do
158
181
  m = Money.new(100)
159
- m.fractional.should == 100
160
- m.fractional.should be_a(Fixnum)
182
+ expect(m.fractional).to eq 100
183
+ expect(m.fractional).to be_a(Fixnum)
161
184
  end
162
185
 
163
186
  context "loading a serialized Money via YAML" do
@@ -186,10 +209,10 @@ YAML
186
209
 
187
210
  it "uses BigDecimal when rounding" do
188
211
  m = YAML::load serialized
189
- m.should be_a(Money)
190
- m.class.infinite_precision.should == false
191
- m.fractional.should == 250 # 249.5 rounded up
192
- m.fractional.should be_a(Integer)
212
+ expect(m).to be_a(Money)
213
+ expect(m.class.infinite_precision).to be false
214
+ expect(m.fractional).to eq 250 # 249.5 rounded up
215
+ expect(m.fractional).to be_a(Integer)
193
216
  end
194
217
 
195
218
  context "with infinite_precision" do
@@ -203,7 +226,7 @@ YAML
203
226
 
204
227
  it "is a BigDecimal" do
205
228
  money = YAML::load serialized
206
- money.fractional.should be_a BigDecimal
229
+ expect(money.fractional).to be_a BigDecimal
207
230
  end
208
231
  end
209
232
  end
@@ -216,36 +239,36 @@ YAML
216
239
  context "with the setter" do
217
240
  it "respects the rounding_mode" do
218
241
  Money.rounding_mode = BigDecimal::ROUND_DOWN
219
- Money.new(1.9).fractional.should == 1
242
+ expect(Money.new(1.9).fractional).to eq 1
220
243
 
221
244
  Money.rounding_mode = BigDecimal::ROUND_UP
222
- Money.new(1.1).fractional.should == 2
245
+ expect(Money.new(1.1).fractional).to eq 2
223
246
  end
224
247
  end
225
248
 
226
249
  context "with a block" do
227
250
  it "respects the rounding_mode" do
228
- Money.rounding_mode(BigDecimal::ROUND_DOWN) do
251
+ expect(Money.rounding_mode(BigDecimal::ROUND_DOWN) do
229
252
  Money.new(1.9).fractional
230
- end.should == 1
253
+ end).to eq 1
231
254
 
232
- Money.rounding_mode(BigDecimal::ROUND_UP) do
255
+ expect(Money.rounding_mode(BigDecimal::ROUND_UP) do
233
256
  Money.new(1.1).fractional
234
- end.should == 2
257
+ end).to eq 2
235
258
 
236
- Money.rounding_mode.should == BigDecimal::ROUND_HALF_EVEN
259
+ expect(Money.rounding_mode).to eq BigDecimal::ROUND_HALF_EVEN
237
260
  end
238
261
 
239
262
  it "works for multiplication within a block" do
240
263
  Money.rounding_mode(BigDecimal::ROUND_DOWN) do
241
- (Money.new(1_00) * "0.019".to_d).fractional.should == 1
264
+ expect((Money.new(1_00) * "0.019".to_d).fractional).to eq 1
242
265
  end
243
266
 
244
267
  Money.rounding_mode(BigDecimal::ROUND_UP) do
245
- (Money.new(1_00) * "0.011".to_d).fractional.should == 2
268
+ expect((Money.new(1_00) * "0.011".to_d).fractional).to eq 2
246
269
  end
247
270
 
248
- Money.rounding_mode.should == BigDecimal::ROUND_HALF_EVEN
271
+ expect(Money.rounding_mode).to eq BigDecimal::ROUND_HALF_EVEN
249
272
  end
250
273
  end
251
274
  end
@@ -260,34 +283,34 @@ YAML
260
283
  end
261
284
 
262
285
  it "returns the amount in fractional unit" do
263
- Money.new(1_00).fractional.should == BigDecimal("100")
286
+ expect(Money.new(1_00).fractional).to eq BigDecimal("100")
264
287
  end
265
288
 
266
289
  it "stores in fractional unit as an integer regardless of what is passed into the constructor" do
267
290
  m = Money.new(100)
268
- m.fractional.should == BigDecimal("100")
269
- m.fractional.should be_a(BigDecimal)
291
+ expect(m.fractional).to eq BigDecimal("100")
292
+ expect(m.fractional).to be_a(BigDecimal)
270
293
  end
271
294
  end
272
295
  end
273
296
 
274
297
  describe "#amount" do
275
298
  it "returns the amount of cents as dollars" do
276
- Money.new(1_00).amount.should == 1
299
+ expect(Money.new(1_00).amount).to eq 1
277
300
  end
278
301
 
279
302
  it "respects :subunit_to_unit currency property" do
280
- Money.new(1_00, "USD").amount.should == 1
281
- Money.new(1_000, "TND").amount.should == 1
282
- Money.new(1, "CLP").amount.should == 1
303
+ expect(Money.new(1_00, "USD").amount).to eq 1
304
+ expect(Money.new(1_000, "TND").amount).to eq 1
305
+ expect(Money.new(1, "CLP").amount).to eq 1
283
306
  end
284
307
 
285
308
  it "does not loose precision" do
286
- Money.new(100_37).amount.should == 100.37
309
+ expect(Money.new(100_37).amount).to eq 100.37
287
310
  end
288
311
 
289
312
  it 'produces a BigDecimal' do
290
- Money.new(1_00).amount.should be_a BigDecimal
313
+ expect(Money.new(1_00).amount).to be_a BigDecimal
291
314
  end
292
315
  end
293
316
 
@@ -300,20 +323,20 @@ YAML
300
323
  5
301
324
  end
302
325
 
303
- m.dollars.should == 5
326
+ expect(m.dollars).to eq 5
304
327
  end
305
328
  end
306
329
 
307
330
  describe "#currency" do
308
331
  it "returns the currency object" do
309
- Money.new(1_00, "USD").currency.should == Money::Currency.new("USD")
332
+ expect(Money.new(1_00, "USD").currency).to eq Money::Currency.new("USD")
310
333
  end
311
334
  end
312
335
 
313
336
  describe "#currency_as_string" do
314
337
  it "returns the iso_code of the currency object" do
315
- Money.new(1_00, "USD").currency_as_string.should == "USD"
316
- Money.new(1_00, "EUR").currency_as_string.should == "EUR"
338
+ expect(Money.new(1_00, "USD").currency_as_string).to eq "USD"
339
+ expect(Money.new(1_00, "EUR").currency_as_string).to eq "EUR"
317
340
  end
318
341
  end
319
342
 
@@ -321,61 +344,61 @@ YAML
321
344
  it "sets the currency object using the provided string" do
322
345
  money = Money.new(100_00, "USD")
323
346
  money.currency_as_string = "EUR"
324
- money.currency.should == Money::Currency.new("EUR")
347
+ expect(money.currency).to eq Money::Currency.new("EUR")
325
348
  money.currency_as_string = "YEN"
326
- money.currency.should == Money::Currency.new("YEN")
349
+ expect(money.currency).to eq Money::Currency.new("YEN")
327
350
  end
328
351
  end
329
352
 
330
353
  describe "#hash=" do
331
354
  it "returns the same value for equal objects" do
332
- Money.new(1_00, "EUR").hash.should == Money.new(1_00, "EUR").hash
333
- Money.new(2_00, "USD").hash.should == Money.new(2_00, "USD").hash
334
- Money.new(1_00, "EUR").hash.should_not == Money.new(2_00, "EUR").hash
335
- Money.new(1_00, "EUR").hash.should_not == Money.new(1_00, "USD").hash
336
- Money.new(1_00, "EUR").hash.should_not == Money.new(2_00, "USD").hash
355
+ expect(Money.new(1_00, "EUR").hash).to eq Money.new(1_00, "EUR").hash
356
+ expect(Money.new(2_00, "USD").hash).to eq Money.new(2_00, "USD").hash
357
+ expect(Money.new(1_00, "EUR").hash).not_to eq Money.new(2_00, "EUR").hash
358
+ expect(Money.new(1_00, "EUR").hash).not_to eq Money.new(1_00, "USD").hash
359
+ expect(Money.new(1_00, "EUR").hash).not_to eq Money.new(2_00, "USD").hash
337
360
  end
338
361
 
339
362
  it "can be used to return the intersection of Money object arrays" do
340
363
  intersection = [Money.new(1_00, "EUR"), Money.new(1_00, "USD")] & [Money.new(1_00, "EUR")]
341
- intersection.should == [Money.new(1_00, "EUR")]
364
+ expect(intersection).to eq [Money.new(1_00, "EUR")]
342
365
  end
343
366
  end
344
367
 
345
368
  describe "#symbol" do
346
369
  it "works as documented" do
347
370
  currency = Money::Currency.new("EUR")
348
- currency.should_receive(:symbol).and_return("€")
349
- Money.new(0, currency).symbol.should == "€"
371
+ expect(currency).to receive(:symbol).and_return("€")
372
+ expect(Money.new(0, currency).symbol).to eq "€"
350
373
 
351
374
  currency = Money::Currency.new("EUR")
352
- currency.should_receive(:symbol).and_return(nil)
353
- Money.new(0, currency).symbol.should == "¤"
375
+ expect(currency).to receive(:symbol).and_return(nil)
376
+ expect(Money.new(0, currency).symbol).to eq "¤"
354
377
  end
355
378
  end
356
379
 
357
380
  describe "#to_s" do
358
381
  it "works as documented" do
359
- Money.new(10_00).to_s.should == "10.00"
360
- Money.new(400_08).to_s.should == "400.08"
361
- Money.new(-237_43).to_s.should == "-237.43"
382
+ expect(Money.new(10_00).to_s).to eq "10.00"
383
+ expect(Money.new(400_08).to_s).to eq "400.08"
384
+ expect(Money.new(-237_43).to_s).to eq "-237.43"
362
385
  end
363
386
 
364
387
  it "respects :subunit_to_unit currency property" do
365
- Money.new(10_00, "BHD").to_s.should == "1.000"
366
- Money.new(10_00, "CNY").to_s.should == "10.00"
388
+ expect(Money.new(10_00, "BHD").to_s).to eq "1.000"
389
+ expect(Money.new(10_00, "CNY").to_s).to eq "10.00"
367
390
  end
368
391
 
369
392
  it "does not have decimal when :subunit_to_unit == 1" do
370
- Money.new(10_00, "CLP").to_s.should == "1000"
393
+ expect(Money.new(10_00, "CLP").to_s).to eq "1000"
371
394
  end
372
395
 
373
396
  it "does not work when :subunit_to_unit == 5" do
374
- Money.new(10_00, "MGA").to_s.should == "200.0"
397
+ expect(Money.new(10_00, "MGA").to_s).to eq "200.0"
375
398
  end
376
399
 
377
400
  it "respects :decimal_mark" do
378
- Money.new(10_00, "BRL").to_s.should == "10,00"
401
+ expect(Money.new(10_00, "BRL").to_s).to eq "10,00"
379
402
  end
380
403
 
381
404
  context "infinite_precision = true" do
@@ -388,15 +411,15 @@ YAML
388
411
  end
389
412
 
390
413
  it "shows fractional cents" do
391
- Money.new(1.05, "USD").to_s.should == "0.0105"
414
+ expect(Money.new(1.05, "USD").to_s).to eq "0.0105"
392
415
  end
393
416
 
394
417
  it "suppresses fractional cents when there is none" do
395
- Money.new(1.0, "USD").to_s.should == "0.01"
418
+ expect(Money.new(1.0, "USD").to_s).to eq "0.01"
396
419
  end
397
420
 
398
421
  it "shows fractional if needed when :subunut_to_unit == 1" do
399
- Money.new(10_00.1, "CLP").to_s.should == "1000,1"
422
+ expect(Money.new(10_00.1, "CLP").to_s).to eq "1000,1"
400
423
  end
401
424
  end
402
425
  end
@@ -404,92 +427,102 @@ YAML
404
427
  describe "#to_d" do
405
428
  it "works as documented" do
406
429
  decimal = Money.new(10_00).to_d
407
- decimal.should be_a(BigDecimal)
408
- decimal.should == 10.0
430
+ expect(decimal).to be_a(BigDecimal)
431
+ expect(decimal).to eq 10.0
409
432
  end
410
433
 
411
434
  it "respects :subunit_to_unit currency property" do
412
435
  decimal = Money.new(10_00, "BHD").to_d
413
- decimal.should be_a(BigDecimal)
414
- decimal.should == 1.0
436
+ expect(decimal).to be_a(BigDecimal)
437
+ expect(decimal).to eq 1.0
415
438
  end
416
439
 
417
440
  it "works with float :subunit_to_unit currency property" do
418
441
  money = Money.new(10_00, "BHD")
419
- money.currency.stub(:subunit_to_unit).and_return(1000.0)
442
+ allow(money.currency).to receive(:subunit_to_unit).and_return(1000.0)
420
443
 
421
444
  decimal = money.to_d
422
- decimal.should be_a(BigDecimal)
423
- decimal.should == 1.0
445
+ expect(decimal).to be_a(BigDecimal)
446
+ expect(decimal).to eq 1.0
424
447
  end
425
448
  end
426
449
 
427
450
  describe "#to_f" do
428
451
  it "works as documented" do
429
- Money.new(10_00).to_f.should == 10.0
452
+ expect(Money.new(10_00).to_f).to eq 10.0
430
453
  end
431
454
 
432
455
  it "respects :subunit_to_unit currency property" do
433
- Money.new(10_00, "BHD").to_f.should == 1.0
456
+ expect(Money.new(10_00, "BHD").to_f).to eq 1.0
457
+ end
458
+ end
459
+
460
+ describe "#to_i" do
461
+ it "works as documented" do
462
+ expect(Money.new(10_00).to_i).to eq 10
463
+ end
464
+
465
+ it "respects :subunit_to_unit currency property" do
466
+ expect(Money.new(10_00, "BHD").to_i).to eq 1
434
467
  end
435
468
  end
436
469
 
437
470
  describe "#to_money" do
438
471
  it "works as documented" do
439
472
  money = Money.new(10_00, "DKK")
440
- money.should == money.to_money
441
- money.should == money.to_money("DKK")
442
- money.bank.should_receive(:exchange_with).with(Money.new(10_00, Money::Currency.new("DKK")), Money::Currency.new("EUR")).and_return(Money.new(200_00, Money::Currency.new('EUR')))
443
- money.to_money("EUR").should == Money.new(200_00, "EUR")
473
+ expect(money).to eq money.to_money
474
+ expect(money).to eq money.to_money("DKK")
475
+ expect(money.bank).to receive(:exchange_with).with(Money.new(10_00, Money::Currency.new("DKK")), Money::Currency.new("EUR")).and_return(Money.new(200_00, Money::Currency.new('EUR')))
476
+ expect(money.to_money("EUR")).to eq Money.new(200_00, "EUR")
444
477
  end
445
478
  end
446
479
 
447
480
  describe "#exchange_to" do
448
481
  it "exchanges the amount via its exchange bank" do
449
482
  money = Money.new(100_00, "USD")
450
- money.bank.should_receive(:exchange_with).with(Money.new(100_00, Money::Currency.new("USD")), Money::Currency.new("EUR")).and_return(Money.new(200_00, Money::Currency.new('EUR')))
483
+ expect(money.bank).to receive(:exchange_with).with(Money.new(100_00, Money::Currency.new("USD")), Money::Currency.new("EUR")).and_return(Money.new(200_00, Money::Currency.new('EUR')))
451
484
  money.exchange_to("EUR")
452
485
  end
453
486
 
454
487
  it "exchanges the amount properly" do
455
488
  money = Money.new(100_00, "USD")
456
- money.bank.should_receive(:exchange_with).with(Money.new(100_00, Money::Currency.new("USD")), Money::Currency.new("EUR")).and_return(Money.new(200_00, Money::Currency.new('EUR')))
457
- money.exchange_to("EUR").should == Money.new(200_00, "EUR")
489
+ expect(money.bank).to receive(:exchange_with).with(Money.new(100_00, Money::Currency.new("USD")), Money::Currency.new("EUR")).and_return(Money.new(200_00, Money::Currency.new('EUR')))
490
+ expect(money.exchange_to("EUR")).to eq Money.new(200_00, "EUR")
458
491
  end
459
492
 
460
493
  it 'uses the block given as rounding method' do
461
494
  money = Money.new(100_00, 'USD')
462
- money.bank.should_receive(:exchange_with).and_yield(300_00)
495
+ expect(money.bank).to receive(:exchange_with).and_yield(300_00)
463
496
  expect { |block| money.exchange_to(Money::Currency.new('EUR'), &block) }.to yield_successive_args(300_00)
464
497
  end
465
498
 
466
499
  it "does no exchange when the currencies are the same" do
467
500
  money = Money.new(100_00, "USD")
468
- money.bank.should_not_receive(:exchange_with)
469
- money.exchange_to("USD").should == money
501
+ expect(money.bank).to_not receive(:exchange_with)
502
+ expect(money.exchange_to("USD")).to eq money
470
503
  end
471
504
  end
472
505
 
473
506
  describe "#allocate" do
474
507
  it "takes no action when one gets all" do
475
- Money.us_dollar(005).allocate([1.0]).should == [Money.us_dollar(5)]
508
+ expect(Money.us_dollar(005).allocate([1.0])).to eq [Money.us_dollar(5)]
476
509
  end
477
510
 
478
511
  it "keeps currencies intact" do
479
- Money.ca_dollar(005).allocate([1]).should == [Money.ca_dollar(5)]
512
+ expect(Money.ca_dollar(005).allocate([1])).to eq [Money.ca_dollar(5)]
480
513
  end
481
514
 
482
515
  it "does not loose pennies" do
483
516
  moneys = Money.us_dollar(5).allocate([0.3, 0.7])
484
- moneys[0].should == Money.us_dollar(2)
485
- moneys[1].should == Money.us_dollar(3)
517
+ expect(moneys[0]).to eq Money.us_dollar(2)
518
+ expect(moneys[1]).to eq Money.us_dollar(3)
486
519
  end
487
520
 
488
521
  it "does not loose pennies" do
489
522
  moneys = Money.us_dollar(100).allocate([0.333, 0.333, 0.333])
490
- moneys[0].cents.should == 34
491
- moneys[1].cents.should == 33
492
- moneys[2].cents.should == 33
523
+ expect(moneys[0].cents).to eq 34
524
+ expect(moneys[1].cents).to eq 33
525
+ expect(moneys[2].cents).to eq 33
493
526
  end
494
527
 
495
528
  it "requires total to be less then 1" do
@@ -509,9 +542,9 @@ YAML
509
542
  one_third = BigDecimal("1") / BigDecimal("3")
510
543
 
511
544
  moneys = Money.new(100).allocate([one_third, one_third, one_third])
512
- moneys[0].cents.should == one_third * BigDecimal("100")
513
- moneys[1].cents.should == one_third * BigDecimal("100")
514
- moneys[2].cents.should == one_third * BigDecimal("100")
545
+ expect(moneys[0].cents).to eq one_third * BigDecimal("100")
546
+ expect(moneys[1].cents).to eq one_third * BigDecimal("100")
547
+ expect(moneys[2].cents).to eq one_third * BigDecimal("100")
515
548
  end
516
549
  end
517
550
  end
@@ -523,22 +556,22 @@ YAML
523
556
  end
524
557
 
525
558
  it "gives 1 cent to both people if we start with 2" do
526
- Money.us_dollar(2).split(2).should == [Money.us_dollar(1), Money.us_dollar(1)]
559
+ expect(Money.us_dollar(2).split(2)).to eq [Money.us_dollar(1), Money.us_dollar(1)]
527
560
  end
528
561
 
529
562
  it "may distribute no money to some parties if there isnt enough to go around" do
530
- Money.us_dollar(2).split(3).should == [Money.us_dollar(1), Money.us_dollar(1), Money.us_dollar(0)]
563
+ expect(Money.us_dollar(2).split(3)).to eq [Money.us_dollar(1), Money.us_dollar(1), Money.us_dollar(0)]
531
564
  end
532
565
 
533
566
  it "does not lose pennies" do
534
- Money.us_dollar(5).split(2).should == [Money.us_dollar(3), Money.us_dollar(2)]
567
+ expect(Money.us_dollar(5).split(2)).to eq [Money.us_dollar(3), Money.us_dollar(2)]
535
568
  end
536
569
 
537
570
  it "splits a dollar" do
538
571
  moneys = Money.us_dollar(100).split(3)
539
- moneys[0].cents.should == 34
540
- moneys[1].cents.should == 33
541
- moneys[2].cents.should == 33
572
+ expect(moneys[0].cents).to eq 34
573
+ expect(moneys[1].cents).to eq 33
574
+ expect(moneys[2].cents).to eq 33
542
575
  end
543
576
 
544
577
  context "infinite_precision = true" do
@@ -554,9 +587,9 @@ YAML
554
587
  thirty_three_and_one_third = BigDecimal("100") / BigDecimal("3")
555
588
 
556
589
  moneys = Money.new(100).split(3)
557
- moneys[0].cents.should == thirty_three_and_one_third
558
- moneys[1].cents.should == thirty_three_and_one_third
559
- moneys[2].cents.should == thirty_three_and_one_third
590
+ expect(moneys[0].cents).to eq thirty_three_and_one_third
591
+ expect(moneys[1].cents).to eq thirty_three_and_one_third
592
+ expect(moneys[2].cents).to eq thirty_three_and_one_third
560
593
  end
561
594
  end
562
595
  end
@@ -573,8 +606,8 @@ YAML
573
606
 
574
607
  it "returns self (as it is already rounded)" do
575
608
  rounded = money.round
576
- rounded.should be money
577
- rounded.cents.should eq 16
609
+ expect(rounded).to be money
610
+ expect(rounded.cents).to eq 16
578
611
  end
579
612
  end
580
613
 
@@ -588,20 +621,20 @@ YAML
588
621
  end
589
622
 
590
623
  it "returns a different money" do
591
- rounded.should_not be money
624
+ expect(rounded).not_to be money
592
625
  end
593
626
 
594
627
  it "rounds the cents" do
595
- rounded.cents.should eq 16
628
+ expect(rounded.cents).to eq 16
596
629
  end
597
630
 
598
631
  it "maintains the currency" do
599
- rounded.currency.should eq Money::Currency.new('NZD')
632
+ expect(rounded.currency).to eq Money::Currency.new('NZD')
600
633
  end
601
634
 
602
635
  it "uses a provided rounding strategy" do
603
636
  rounded = money.round(BigDecimal::ROUND_DOWN)
604
- rounded.cents.should eq 15
637
+ expect(rounded.cents).to eq 15
605
638
  end
606
639
  end
607
640
  end
@@ -614,7 +647,7 @@ YAML
614
647
  # ./lib/money/money.rb:63:in `fractional'
615
648
  # ./lib/money/money/arithmetic.rb:115:in `-'
616
649
  MoneyChild = Class.new(Money)
617
- (MoneyChild.new(1000) - Money.new(500)).should eq Money.new(500)
650
+ expect(MoneyChild.new(1000) - Money.new(500)).to eq Money.new(500)
618
651
  end
619
652
  end
620
653
 
@@ -632,17 +665,17 @@ YAML
632
665
 
633
666
  specify "as_us_dollar converts Money object to USD" do
634
667
  obj = Money.new(1, "EUR")
635
- obj.as_us_dollar.should == Money.new(1, "USD")
668
+ expect(obj.as_us_dollar).to eq Money.new(1, "USD")
636
669
  end
637
670
 
638
671
  specify "as_ca_dollar converts Money object to CAD" do
639
672
  obj = Money.new(1, "EUR")
640
- obj.as_ca_dollar.should == Money.new(1, "CAD")
673
+ expect(obj.as_ca_dollar).to eq Money.new(1, "CAD")
641
674
  end
642
675
 
643
676
  specify "as_euro converts Money object to EUR" do
644
677
  obj = Money.new(1, "USD")
645
- obj.as_euro.should == Money.new(1, "EUR")
678
+ expect(obj.as_euro).to eq Money.new(1, "EUR")
646
679
  end
647
680
  end
648
681
 
@@ -651,18 +684,18 @@ YAML
651
684
  @default_currency = Money.default_currency
652
685
  end
653
686
 
687
+ after do
688
+ Money.default_currency = @default_currency
689
+ end
690
+
654
691
  it "accepts a lambda" do
655
692
  Money.default_currency = lambda { :eur }
656
- Money.default_currency.should == Money::Currency.new(:eur)
693
+ expect(Money.default_currency).to eq Money::Currency.new(:eur)
657
694
  end
658
695
 
659
696
  it "accepts a symbol" do
660
697
  Money.default_currency = :eur
661
- Money.default_currency.should == Money::Currency.new(:eur)
662
- end
663
-
664
- after do
665
- Money.default_currency = @default_currency
698
+ expect(Money.default_currency).to eq Money::Currency.new(:eur)
666
699
  end
667
700
  end
668
701
  end