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.
@@ -5,26 +5,26 @@ require "spec_helper"
5
5
  describe Money do
6
6
  describe "-@" do
7
7
  it "changes the sign of a number" do
8
- (- Money.new(0)).should == Money.new(0)
9
- (- Money.new(1)).should == Money.new(-1)
10
- (- Money.new(-1)).should == Money.new(1)
8
+ expect((- Money.new(0))).to eq Money.new(0)
9
+ expect((- Money.new(1))).to eq Money.new(-1)
10
+ expect((- Money.new(-1))).to eq Money.new(1)
11
11
  end
12
12
  end
13
13
 
14
14
  describe "#==" do
15
15
  it "returns true if and only if their amount and currency are equal" do
16
- Money.new(1_00, "USD").should == Money.new(1_00, "USD")
17
- Money.new(1_00, "USD").should_not == Money.new(1_00, "EUR")
18
- Money.new(1_00, "USD").should_not == Money.new(2_00, "USD")
19
- Money.new(1_00, "USD").should_not == Money.new(99_00, "EUR")
16
+ expect(Money.new(1_00, "USD")).to eq Money.new(1_00, "USD")
17
+ expect(Money.new(1_00, "USD")).not_to eq Money.new(1_00, "EUR")
18
+ expect(Money.new(1_00, "USD")).not_to eq Money.new(2_00, "USD")
19
+ expect(Money.new(1_00, "USD")).not_to eq Money.new(99_00, "EUR")
20
20
  end
21
21
 
22
22
  it "returns false if used to compare with an object that doesn't respond to #to_money" do
23
- Money.new(1_00, "USD").should_not == Object.new
24
- Money.new(1_00, "USD").should_not == Class
25
- Money.new(1_00, "USD").should_not == Kernel
26
- Money.new(1_00, "USD").should_not == /foo/
27
- Money.new(1_00, "USD").should_not == nil
23
+ expect(Money.new(1_00, "USD")).not_to eq Object.new
24
+ expect(Money.new(1_00, "USD")).not_to eq Class
25
+ expect(Money.new(1_00, "USD")).not_to eq Kernel
26
+ expect(Money.new(1_00, "USD")).not_to eq /foo/
27
+ expect(Money.new(1_00, "USD")).not_to eq nil
28
28
  end
29
29
 
30
30
  it "can be used to compare with an object that responds to #to_money" do
@@ -38,27 +38,27 @@ describe Money do
38
38
  end
39
39
  end
40
40
 
41
- Money.new(1_00, "USD").should == klass.new(Money.new(1_00, "USD"))
42
- Money.new(2_50, "USD").should == klass.new(Money.new(2_50, "USD"))
43
- Money.new(2_50, "USD").should_not == klass.new(Money.new(3_00, "USD"))
44
- Money.new(1_00, "GBP").should_not == klass.new(Money.new(1_00, "USD"))
41
+ expect(Money.new(1_00, "USD")).to eq klass.new(Money.new(1_00, "USD"))
42
+ expect(Money.new(2_50, "USD")).to eq klass.new(Money.new(2_50, "USD"))
43
+ expect(Money.new(2_50, "USD")).not_to eq klass.new(Money.new(3_00, "USD"))
44
+ expect(Money.new(1_00, "GBP")).not_to eq klass.new(Money.new(1_00, "USD"))
45
45
  end
46
46
  end
47
47
 
48
48
  describe "#eql?" do
49
49
  it "returns true if and only if their amount and currency are equal" do
50
- Money.new(1_00, "USD").eql?(Money.new(1_00, "USD")).should be true
51
- Money.new(1_00, "USD").eql?(Money.new(1_00, "EUR")).should be false
52
- Money.new(1_00, "USD").eql?(Money.new(2_00, "USD")).should be false
53
- Money.new(1_00, "USD").eql?(Money.new(99_00, "EUR")).should be false
50
+ expect(Money.new(1_00, "USD").eql?(Money.new(1_00, "USD"))).to be true
51
+ expect(Money.new(1_00, "USD").eql?(Money.new(1_00, "EUR"))).to be false
52
+ expect(Money.new(1_00, "USD").eql?(Money.new(2_00, "USD"))).to be false
53
+ expect(Money.new(1_00, "USD").eql?(Money.new(99_00, "EUR"))).to be false
54
54
  end
55
55
 
56
56
  it "returns false if used to compare with an object that doesn't respond to #to_money" do
57
- Money.new(1_00, "USD").eql?(Object.new).should be false
58
- Money.new(1_00, "USD").eql?(Class).should be false
59
- Money.new(1_00, "USD").eql?(Kernel).should be false
60
- Money.new(1_00, "USD").eql?(/foo/).should be false
61
- Money.new(1_00, "USD").eql?(nil).should be false
57
+ expect(Money.new(1_00, "USD").eql?(Object.new)).to be false
58
+ expect(Money.new(1_00, "USD").eql?(Class)).to be false
59
+ expect(Money.new(1_00, "USD").eql?(Kernel)).to be false
60
+ expect(Money.new(1_00, "USD").eql?(/foo/)).to be false
61
+ expect(Money.new(1_00, "USD").eql?(nil)).to be false
62
62
  end
63
63
 
64
64
  it "can be used to compare with an object that responds to #to_money" do
@@ -72,32 +72,32 @@ describe Money do
72
72
  end
73
73
  end
74
74
 
75
- Money.new(1_00, "USD").eql?(klass.new(Money.new(1_00, "USD"))).should be true
76
- Money.new(2_50, "USD").eql?(klass.new(Money.new(2_50, "USD"))).should be true
77
- Money.new(2_50, "USD").eql?(klass.new(Money.new(3_00, "USD"))).should be false
78
- Money.new(1_00, "GBP").eql?(klass.new(Money.new(1_00, "USD"))).should be false
75
+ expect(Money.new(1_00, "USD").eql?(klass.new(Money.new(1_00, "USD")))).to be true
76
+ expect(Money.new(2_50, "USD").eql?(klass.new(Money.new(2_50, "USD")))).to be true
77
+ expect(Money.new(2_50, "USD").eql?(klass.new(Money.new(3_00, "USD")))).to be false
78
+ expect(Money.new(1_00, "GBP").eql?(klass.new(Money.new(1_00, "USD")))).to be false
79
79
  end
80
80
  end
81
81
 
82
82
  describe "#<=>" do
83
83
  it "compares the two object amounts (same currency)" do
84
- (Money.new(1_00, "USD") <=> Money.new(1_00, "USD")).should == 0
85
- (Money.new(1_00, "USD") <=> Money.new(99, "USD")).should > 0
86
- (Money.new(1_00, "USD") <=> Money.new(2_00, "USD")).should < 0
84
+ expect((Money.new(1_00, "USD") <=> Money.new(1_00, "USD"))).to eq 0
85
+ expect((Money.new(1_00, "USD") <=> Money.new(99, "USD"))).to be > 0
86
+ expect((Money.new(1_00, "USD") <=> Money.new(2_00, "USD"))).to be < 0
87
87
  end
88
88
 
89
89
  it "converts other object amount to current currency, then compares the two object amounts (different currency)" do
90
90
  target = Money.new(200_00, "EUR")
91
- target.should_receive(:exchange_to).with(Money::Currency.new("USD")).and_return(Money.new(300_00, "USD"))
92
- (Money.new(100_00, "USD") <=> target).should < 0
91
+ expect(target).to receive(:exchange_to).with(Money::Currency.new("USD")).and_return(Money.new(300_00, "USD"))
92
+ expect(Money.new(100_00, "USD") <=> target).to be < 0
93
93
 
94
94
  target = Money.new(200_00, "EUR")
95
- target.should_receive(:exchange_to).with(Money::Currency.new("USD")).and_return(Money.new(100_00, "USD"))
96
- (Money.new(100_00, "USD") <=> target).should == 0
95
+ expect(target).to receive(:exchange_to).with(Money::Currency.new("USD")).and_return(Money.new(100_00, "USD"))
96
+ expect(Money.new(100_00, "USD") <=> target).to eq 0
97
97
 
98
98
  target = Money.new(200_00, "EUR")
99
- target.should_receive(:exchange_to).with(Money::Currency.new("USD")).and_return(Money.new(99_00, "USD"))
100
- (Money.new(100_00, "USD") <=> target).should > 0
99
+ expect(target).to receive(:exchange_to).with(Money::Currency.new("USD")).and_return(Money.new(99_00, "USD"))
100
+ expect(Money.new(100_00, "USD") <=> target).to be > 0
101
101
  end
102
102
 
103
103
  it "can be used to compare with an object that responds to #to_money" do
@@ -111,9 +111,9 @@ describe Money do
111
111
  end
112
112
  end
113
113
 
114
- (Money.new(1_00) <=> klass.new(Money.new(1_00))).should == 0
115
- (Money.new(1_00) <=> klass.new(Money.new(99))).should > 0
116
- (Money.new(1_00) <=> klass.new(Money.new(2_00))).should < 0
114
+ expect(Money.new(1_00) <=> klass.new(Money.new(1_00))).to eq 0
115
+ expect(Money.new(1_00) <=> klass.new(Money.new(99))).to be > 0
116
+ expect(Money.new(1_00) <=> klass.new(Money.new(2_00))).to be < 0
117
117
  end
118
118
 
119
119
  it "raises ArgumentError when used to compare with an object that doesn't respond to #to_money" do
@@ -127,53 +127,61 @@ describe Money do
127
127
 
128
128
  describe "#positive?" do
129
129
  it "returns true if the amount is greater than 0" do
130
- Money.new(1).should be_positive
130
+ expect(Money.new(1)).to be_positive
131
131
  end
132
132
 
133
133
  it "returns false if the amount is 0" do
134
- Money.new(0).should_not be_positive
134
+ expect(Money.new(0)).not_to be_positive
135
135
  end
136
136
 
137
137
  it "returns false if the amount is negative" do
138
- Money.new(-1).should_not be_positive
138
+ expect(Money.new(-1)).not_to be_positive
139
139
  end
140
140
  end
141
141
 
142
142
  describe "#negative?" do
143
143
  it "returns true if the amount is less than 0" do
144
- Money.new(-1).should be_negative
144
+ expect(Money.new(-1)).to be_negative
145
145
  end
146
146
 
147
147
  it "returns false if the amount is 0" do
148
- Money.new(0).should_not be_negative
148
+ expect(Money.new(0)).not_to be_negative
149
149
  end
150
150
 
151
151
  it "returns false if the amount is greater than 0" do
152
- Money.new(1).should_not be_negative
152
+ expect(Money.new(1)).not_to be_negative
153
153
  end
154
154
  end
155
155
 
156
156
  describe "#+" do
157
157
  it "adds other amount to current amount (same currency)" do
158
- (Money.new(10_00, "USD") + Money.new(90, "USD")).should == Money.new(10_90, "USD")
158
+ expect(Money.new(10_00, "USD") + Money.new(90, "USD")).to eq Money.new(10_90, "USD")
159
159
  end
160
160
 
161
161
  it "converts other object amount to current currency and adds other amount to current amount (different currency)" do
162
162
  other = Money.new(90, "EUR")
163
- other.should_receive(:exchange_to).with(Money::Currency.new("USD")).and_return(Money.new(9_00, "USD"))
164
- (Money.new(10_00, "USD") + other).should == Money.new(19_00, "USD")
163
+ expect(other).to receive(:exchange_to).with(Money::Currency.new("USD")).and_return(Money.new(9_00, "USD"))
164
+ expect(Money.new(10_00, "USD") + other).to eq Money.new(19_00, "USD")
165
+ end
166
+
167
+ it "adds Fixnum 0 to money and returns the same ammount" do
168
+ expect(Money.new(10_00) + 0).to eq Money.new(10_00)
165
169
  end
166
170
  end
167
171
 
168
172
  describe "#-" do
169
173
  it "subtracts other amount from current amount (same currency)" do
170
- (Money.new(10_00, "USD") - Money.new(90, "USD")).should == Money.new(9_10, "USD")
174
+ expect(Money.new(10_00, "USD") - Money.new(90, "USD")).to eq Money.new(9_10, "USD")
171
175
  end
172
176
 
173
177
  it "converts other object amount to current currency and subtracts other amount from current amount (different currency)" do
174
178
  other = Money.new(90, "EUR")
175
- other.should_receive(:exchange_to).with(Money::Currency.new("USD")).and_return(Money.new(9_00, "USD"))
176
- (Money.new(10_00, "USD") - other).should == Money.new(1_00, "USD")
179
+ expect(other).to receive(:exchange_to).with(Money::Currency.new("USD")).and_return(Money.new(9_00, "USD"))
180
+ expect(Money.new(10_00, "USD") - other).to eq Money.new(1_00, "USD")
181
+ end
182
+
183
+ it "subtract Fixnum 0 to money and returns the same ammount" do
184
+ expect(Money.new(10_00) - 0).to eq Money.new(10_00)
177
185
  end
178
186
  end
179
187
 
@@ -186,7 +194,7 @@ describe Money do
186
194
  {:a => Money.new(-10, :USD), :b => -4, :c => Money.new( 40, :USD)},
187
195
  ]
188
196
  ts.each do |t|
189
- (t[:a] * t[:b]).should == t[:c]
197
+ expect(t[:a] * t[:b]).to eq t[:c]
190
198
  end
191
199
  end
192
200
 
@@ -212,44 +220,44 @@ describe Money do
212
220
  {:a => Money.new(-13, :USD), :b => -4, :c => Money.new( 3, :USD)},
213
221
  ]
214
222
  ts.each do |t|
215
- (t[:a] / t[:b]).should == t[:c]
223
+ expect(t[:a] / t[:b]).to eq t[:c]
216
224
  end
217
225
  end
218
226
 
219
227
  context 'rounding preference' do
220
228
  before do
221
- Money.stub(:rounding_mode => rounding_mode)
229
+ allow(Money).to receive(:rounding_mode).and_return(rounding_mode)
222
230
  end
223
231
 
224
232
  after do
225
- Money.unstub(:rounding_mode)
233
+ allow(Money).to receive(:rounding_mode).and_call_original
226
234
  end
227
235
 
228
236
  context 'ceiling rounding' do
229
237
  let(:rounding_mode) { BigDecimal::ROUND_CEILING }
230
238
  it "obeys the rounding preference" do
231
- (Money.new(10) / 3).should == Money.new(4)
239
+ expect(Money.new(10) / 3).to eq Money.new(4)
232
240
  end
233
241
  end
234
242
 
235
243
  context 'floor rounding' do
236
244
  let(:rounding_mode) { BigDecimal::ROUND_FLOOR }
237
245
  it "obeys the rounding preference" do
238
- (Money.new(10) / 6).should == Money.new(1)
246
+ expect(Money.new(10) / 6).to eq Money.new(1)
239
247
  end
240
248
  end
241
249
 
242
250
  context 'half up rounding' do
243
251
  let(:rounding_mode) { BigDecimal::ROUND_HALF_UP }
244
252
  it "obeys the rounding preference" do
245
- (Money.new(10) / 4).should == Money.new(3)
253
+ expect(Money.new(10) / 4).to eq Money.new(3)
246
254
  end
247
255
  end
248
256
 
249
257
  context 'half down rounding' do
250
258
  let(:rounding_mode) { BigDecimal::ROUND_HALF_DOWN }
251
259
  it "obeys the rounding preference" do
252
- (Money.new(10) / 4).should == Money.new(2)
260
+ expect(Money.new(10) / 4).to eq Money.new(2)
253
261
  end
254
262
  end
255
263
  end
@@ -262,7 +270,7 @@ describe Money do
262
270
  {:a => Money.new(-13, :USD), :b => Money.new(-4, :USD), :c => 3.25},
263
271
  ]
264
272
  ts.each do |t|
265
- (t[:a] / t[:b]).should == t[:c]
273
+ expect(t[:a] / t[:b]).to eq t[:c]
266
274
  end
267
275
  end
268
276
 
@@ -274,8 +282,8 @@ describe Money do
274
282
  {:a => Money.new(-13, :USD), :b => Money.new(-4, :EUR), :c => 1.625},
275
283
  ]
276
284
  ts.each do |t|
277
- t[:b].should_receive(:exchange_to).once.with(t[:a].currency).and_return(Money.new(t[:b].cents * 2, :USD))
278
- (t[:a] / t[:b]).should == t[:c]
285
+ expect(t[:b]).to receive(:exchange_to).once.with(t[:a].currency).and_return(Money.new(t[:b].cents * 2, :USD))
286
+ expect(t[:a] / t[:b]).to eq t[:c]
279
287
  end
280
288
  end
281
289
 
@@ -296,7 +304,7 @@ describe Money do
296
304
  {:a => Money.new(-13, :USD), :b => -4, :c => Money.new( 3.25, :USD)},
297
305
  ]
298
306
  ts.each do |t|
299
- (t[:a] / t[:b]).should == t[:c]
307
+ expect(t[:a] / t[:b]).to eq t[:c]
300
308
  end
301
309
  end
302
310
  end
@@ -311,7 +319,7 @@ describe Money do
311
319
  {:a => Money.new(-13, :USD), :b => -4, :c => Money.new( 3, :USD)},
312
320
  ]
313
321
  ts.each do |t|
314
- t[:a].div(t[:b]).should == t[:c]
322
+ expect(t[:a].div(t[:b])).to eq t[:c]
315
323
  end
316
324
  end
317
325
 
@@ -323,7 +331,7 @@ describe Money do
323
331
  {:a => Money.new(-13, :USD), :b => Money.new(-4, :USD), :c => 3.25},
324
332
  ]
325
333
  ts.each do |t|
326
- t[:a].div(t[:b]).should == t[:c]
334
+ expect(t[:a].div(t[:b])).to eq t[:c]
327
335
  end
328
336
  end
329
337
 
@@ -335,8 +343,8 @@ describe Money do
335
343
  {:a => Money.new(-13, :USD), :b => Money.new(-4, :EUR), :c => 1.625},
336
344
  ]
337
345
  ts.each do |t|
338
- t[:b].should_receive(:exchange_to).once.with(t[:a].currency).and_return(Money.new(t[:b].cents * 2, :USD))
339
- t[:a].div(t[:b]).should == t[:c]
346
+ expect(t[:b]).to receive(:exchange_to).once.with(t[:a].currency).and_return(Money.new(t[:b].cents * 2, :USD))
347
+ expect(t[:a].div(t[:b])).to eq t[:c]
340
348
  end
341
349
  end
342
350
 
@@ -357,7 +365,7 @@ describe Money do
357
365
  {:a => Money.new(-13, :USD), :b => -4, :c => Money.new( 3.25, :USD)},
358
366
  ]
359
367
  ts.each do |t|
360
- t[:a].div(t[:b]).should == t[:c]
368
+ expect(t[:a].div(t[:b])).to eq t[:c]
361
369
  end
362
370
  end
363
371
  end
@@ -372,7 +380,7 @@ describe Money do
372
380
  {:a => Money.new(-13, :USD), :b => -4, :c => [Money.new( 3, :USD), Money.new(-1, :USD)]},
373
381
  ]
374
382
  ts.each do |t|
375
- t[:a].divmod(t[:b]).should == t[:c]
383
+ expect(t[:a].divmod(t[:b])).to eq t[:c]
376
384
  end
377
385
  end
378
386
 
@@ -384,7 +392,7 @@ describe Money do
384
392
  {:a => Money.new(-13, :USD), :b => Money.new(-4, :USD), :c => [ 3, Money.new(-1, :USD)]},
385
393
  ]
386
394
  ts.each do |t|
387
- t[:a].divmod(t[:b]).should == t[:c]
395
+ expect(t[:a].divmod(t[:b])).to eq t[:c]
388
396
  end
389
397
  end
390
398
 
@@ -396,8 +404,8 @@ describe Money do
396
404
  {:a => Money.new(-13, :USD), :b => Money.new(-4, :EUR), :c => [ 1, Money.new(-5, :USD)]},
397
405
  ]
398
406
  ts.each do |t|
399
- t[:b].should_receive(:exchange_to).once.with(t[:a].currency).and_return(Money.new(t[:b].cents * 2, :USD))
400
- t[:a].divmod(t[:b]).should == t[:c]
407
+ expect(t[:b]).to receive(:exchange_to).once.with(t[:a].currency).and_return(Money.new(t[:b].cents * 2, :USD))
408
+ expect(t[:a].divmod(t[:b])).to eq t[:c]
401
409
  end
402
410
  end
403
411
 
@@ -418,7 +426,7 @@ describe Money do
418
426
  {:a => Money.new(-13, :USD), :b => -4, :c => [Money.new( 3, :USD), Money.new(-1, :USD)]},
419
427
  ]
420
428
  ts.each do |t|
421
- t[:a].divmod(t[:b]).should == t[:c]
429
+ expect(t[:a].divmod(t[:b])).to eq t[:c]
422
430
  end
423
431
  end
424
432
  end
@@ -433,7 +441,7 @@ describe Money do
433
441
  {:a => Money.new(-13, :USD), :b => -4, :c => Money.new(-1, :USD)},
434
442
  ]
435
443
  ts.each do |t|
436
- t[:a].modulo(t[:b]).should == t[:c]
444
+ expect(t[:a].modulo(t[:b])).to eq t[:c]
437
445
  end
438
446
  end
439
447
 
@@ -445,7 +453,7 @@ describe Money do
445
453
  {:a => Money.new(-13, :USD), :b => Money.new(-4, :USD), :c => Money.new(-1, :USD)},
446
454
  ]
447
455
  ts.each do |t|
448
- t[:a].modulo(t[:b]).should == t[:c]
456
+ expect(t[:a].modulo(t[:b])).to eq t[:c]
449
457
  end
450
458
  end
451
459
 
@@ -457,8 +465,8 @@ describe Money do
457
465
  {:a => Money.new(-13, :USD), :b => Money.new(-4, :EUR), :c => Money.new(-5, :USD)},
458
466
  ]
459
467
  ts.each do |t|
460
- t[:b].should_receive(:exchange_to).once.with(t[:a].currency).and_return(Money.new(t[:b].cents * 2, :USD))
461
- t[:a].modulo(t[:b]).should == t[:c]
468
+ expect(t[:b]).to receive(:exchange_to).once.with(t[:a].currency).and_return(Money.new(t[:b].cents * 2, :USD))
469
+ expect(t[:a].modulo(t[:b])).to eq t[:c]
462
470
  end
463
471
  end
464
472
  end
@@ -472,7 +480,7 @@ describe Money do
472
480
  {:a => Money.new(-13, :USD), :b => -4, :c => Money.new(-1, :USD)},
473
481
  ]
474
482
  ts.each do |t|
475
- (t[:a] % t[:b]).should == t[:c]
483
+ expect(t[:a] % t[:b]).to eq t[:c]
476
484
  end
477
485
  end
478
486
 
@@ -484,7 +492,7 @@ describe Money do
484
492
  {:a => Money.new(-13, :USD), :b => Money.new(-4, :USD), :c => Money.new(-1, :USD)},
485
493
  ]
486
494
  ts.each do |t|
487
- (t[:a] % t[:b]).should == t[:c]
495
+ expect(t[:a] % t[:b]).to eq t[:c]
488
496
  end
489
497
  end
490
498
 
@@ -496,8 +504,8 @@ describe Money do
496
504
  {:a => Money.new(-13, :USD), :b => Money.new(-4, :EUR), :c => Money.new(-5, :USD)},
497
505
  ]
498
506
  ts.each do |t|
499
- t[:b].should_receive(:exchange_to).once.with(t[:a].currency).and_return(Money.new(t[:b].cents * 2, :USD))
500
- (t[:a] % t[:b]).should == t[:c]
507
+ expect(t[:b]).to receive(:exchange_to).once.with(t[:a].currency).and_return(Money.new(t[:b].cents * 2, :USD))
508
+ expect(t[:a] % t[:b]).to eq t[:c]
501
509
  end
502
510
  end
503
511
  end
@@ -511,7 +519,7 @@ describe Money do
511
519
  {:a => Money.new(-13, :USD), :b => -4, :c => Money.new(-1, :USD)},
512
520
  ]
513
521
  ts.each do |t|
514
- t[:a].remainder(t[:b]).should == t[:c]
522
+ expect(t[:a].remainder(t[:b])).to eq t[:c]
515
523
  end
516
524
  end
517
525
  end
@@ -519,42 +527,42 @@ describe Money do
519
527
  describe "#abs" do
520
528
  it "returns the absolute value as a new Money object" do
521
529
  n = Money.new(-1, :USD)
522
- n.abs.should == Money.new( 1, :USD)
523
- n.should == Money.new(-1, :USD)
530
+ expect(n.abs).to eq Money.new( 1, :USD)
531
+ expect(n).to eq Money.new(-1, :USD)
524
532
  end
525
533
  end
526
534
 
527
535
  describe "#zero?" do
528
536
  it "returns whether the amount is 0" do
529
- Money.new(0, "USD").should be_zero
530
- Money.new(0, "EUR").should be_zero
531
- Money.new(1, "USD").should_not be_zero
532
- Money.new(10, "YEN").should_not be_zero
533
- Money.new(-1, "EUR").should_not be_zero
537
+ expect(Money.new(0, "USD")).to be_zero
538
+ expect(Money.new(0, "EUR")).to be_zero
539
+ expect(Money.new(1, "USD")).not_to be_zero
540
+ expect(Money.new(10, "YEN")).not_to be_zero
541
+ expect(Money.new(-1, "EUR")).not_to be_zero
534
542
  end
535
543
  end
536
544
 
537
545
  describe "#nonzero?" do
538
546
  it "returns whether the amount is not 0" do
539
- Money.new(0, "USD").should_not be_nonzero
540
- Money.new(0, "EUR").should_not be_nonzero
541
- Money.new(1, "USD").should be_nonzero
542
- Money.new(10, "YEN").should be_nonzero
543
- Money.new(-1, "EUR").should be_nonzero
547
+ expect(Money.new(0, "USD")).not_to be_nonzero
548
+ expect(Money.new(0, "EUR")).not_to be_nonzero
549
+ expect(Money.new(1, "USD")).to be_nonzero
550
+ expect(Money.new(10, "YEN")).to be_nonzero
551
+ expect(Money.new(-1, "EUR")).to be_nonzero
544
552
  end
545
553
 
546
554
  it "has the same return-value semantics as Numeric#nonzero?" do
547
- Money.new(0, "USD").nonzero?.should be_nil
555
+ expect(Money.new(0, "USD").nonzero?).to be_nil
548
556
 
549
557
  money = Money.new(1, "USD")
550
- money.nonzero?.should be_equal(money)
558
+ expect(money.nonzero?).to be_equal(money)
551
559
  end
552
560
  end
553
561
 
554
562
  describe "#coerce" do
555
563
  it "allows mathematical operations by coercing arguments" do
556
564
  result = 2 * Money.new(4, 'USD')
557
- result.should == Money.new(8, 'USD')
565
+ expect(result).to eq Money.new(8, 'USD')
558
566
  end
559
567
  end
560
568
  end