money 6.1.1 → 6.2.0

Sign up to get free protection for your applications and to get access to all the features.
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