much-stub 0.1.1 → 0.1.6

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.
@@ -0,0 +1,110 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "assert"
4
+ require "much-stub/call_spy"
5
+
6
+ require "test/support/factory"
7
+
8
+ class MuchStub::CallSpy
9
+ class UnitTests < ::Assert::Context
10
+ desc "MuchStub::CallSpy"
11
+ setup do
12
+ @unit_class = MuchStub::CallSpy
13
+ end
14
+ end
15
+
16
+ class InitTests < UnitTests
17
+ desc "when init"
18
+ before do
19
+ @spy = @unit_class.new
20
+ end
21
+ subject{ @spy }
22
+
23
+ should "spy on method calls and return itself" do
24
+ assert_true subject.respond_to?(:get)
25
+
26
+ assert_equal [], subject.get_calls
27
+ assert_nil subject.get_last_called_with
28
+ assert_nil subject.get_called_with
29
+ assert_equal 0, subject.get_call_count
30
+ assert_false subject.get_called?
31
+
32
+ assert_same subject, subject.get
33
+
34
+ assert_true subject.respond_to?(:get)
35
+
36
+ assert_kind_of Array, subject.get_calls
37
+ assert_kind_of MuchStub::Call, subject.get_last_called_with
38
+ assert_equal [], subject.get_last_called_with.args
39
+ assert_equal subject.get_last_called_with, subject.get_called_with
40
+ assert_equal 1, subject.get_call_count
41
+ assert_true subject.get_called?
42
+
43
+ assert_same subject, subject.set!("value1")
44
+ assert_same subject, subject.set!("value2")
45
+
46
+ assert_kind_of Array, subject.set_bang_calls
47
+ assert_kind_of MuchStub::Call, subject.set_bang_last_called_with
48
+ assert_equal ["value2"], subject.set_bang_last_called_with.args
49
+ assert_equal 2, subject.set_bang_call_count
50
+ assert_true subject.set_bang_called?
51
+ end
52
+
53
+ should "normalize method names in call query methods" do
54
+ assert_same subject, subject.set!("value1")
55
+ assert_kind_of Array, subject.set_bang_calls
56
+ assert_kind_of MuchStub::Call, subject.set_bang_last_called_with
57
+ assert_equal ["value1"], subject.set_bang_last_called_with.args
58
+ assert_equal ["value1"], subject.set_bang_called_with.args
59
+ assert_equal 1, subject.set_bang_call_count
60
+ assert_true subject.set_bang_called?
61
+
62
+ assert_same subject, subject.any?
63
+ assert_kind_of Array, subject.any_predicate_calls
64
+ assert_kind_of MuchStub::Call, subject.any_predicate_last_called_with
65
+ assert_kind_of MuchStub::Call, subject.any_predicate_called_with
66
+ assert_equal 1, subject.any_predicate_call_count
67
+ assert_true subject.any_predicate_called?
68
+ end
69
+ end
70
+
71
+ class InitWithReturnValuesTests < UnitTests
72
+ desc "when init with return values"
73
+ setup do
74
+ @spy = @unit_class.new(any?: false)
75
+ end
76
+ subject{ @spy }
77
+
78
+ should "return the given values instead of itself if that method is called" do
79
+ assert_false subject.get.set!("value1").any?
80
+ assert_true subject.get_called?
81
+ assert_equal ["value1"], subject.set_bang_called_with.args
82
+ assert_true subject.any_predicate_called?
83
+ end
84
+ end
85
+
86
+ class InitWithReturnValueProcsTests < UnitTests
87
+ desc "when init with return value procs"
88
+ setup do
89
+ @result = Factory.boolean
90
+ @spy = @unit_class.new(any?: ->(call) { @result })
91
+ end
92
+ subject{ @spy }
93
+
94
+ should "return the value of calling the procs instead of itself" do
95
+ assert_equal @result, subject.get.set!("value1").any?
96
+ end
97
+ end
98
+
99
+ class InitWithNilReturnValuesTests < UnitTests
100
+ desc "when init with nil return values"
101
+ setup do
102
+ @spy = @unit_class.new(result: nil)
103
+ end
104
+ subject{ @spy }
105
+
106
+ should "return nil" do
107
+ assert_equal "nil", subject.get.set!("value1").result.inspect
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "assert"
4
+ require "much-stub/call"
5
+
6
+ require "test/support/factory"
7
+
8
+ class MuchStub::Call
9
+ class UnitTests < Assert::Context
10
+ desc "MuchStub::Call"
11
+ setup do
12
+ @unit_class = MuchStub::Call
13
+
14
+ @pargs = [Factory.string, Factory.integer]
15
+ @kargs = {
16
+ one: 1,
17
+ two: 2
18
+ }
19
+ @block = -> {}
20
+ end
21
+ end
22
+
23
+ class InitWithNoArgsTests < UnitTests
24
+ desc "when init with no args"
25
+ subject{ @unit_class.new }
26
+
27
+ should "know its attrs" do
28
+ assert_nil subject.pargs
29
+ assert_nil subject.kargs
30
+ assert_equal [], subject.args
31
+ assert_nil subject.block
32
+ end
33
+ end
34
+
35
+ class InitWithOnlyPositionalArgsTests < UnitTests
36
+ desc "when init with only positional args"
37
+ subject{ @unit_class.new(*@pargs) }
38
+
39
+ should "know its attrs" do
40
+ assert_equal @pargs, subject.pargs
41
+ assert_nil subject.kargs
42
+ assert_equal [*@pargs], subject.args
43
+ assert_nil subject.block
44
+ end
45
+ end
46
+
47
+ class InitWithOnlyKeywordArgsTests < UnitTests
48
+ desc "when init with only keyword args"
49
+ subject{ @unit_class.new(**@kargs) }
50
+
51
+ should "know its attrs" do
52
+ assert_nil subject.pargs
53
+ assert_equal @kargs, subject.kargs
54
+ assert_equal [@kargs], subject.args
55
+ assert_nil subject.block
56
+ end
57
+ end
58
+
59
+ class InitWithBothPositionalAndKeywordArgsTests < UnitTests
60
+ desc "when init with only keyword args"
61
+ subject{ @unit_class.new(*@pargs, **@kargs, &@block) }
62
+
63
+ should "know its attrs" do
64
+ assert_equal @pargs, subject.pargs
65
+ assert_equal @kargs, subject.kargs
66
+ assert_equal [*@pargs, @kargs], subject.args
67
+ assert_equal @block, subject.block
68
+ end
69
+ end
70
+ end
@@ -1,16 +1,17 @@
1
- require 'assert'
2
- require 'much-stub'
1
+ # frozen_string_literal: true
3
2
 
4
- require 'test/support/factory'
3
+ require "assert"
4
+ require "much-stub"
5
5
 
6
- module MuchStub
6
+ require "test/support/factory"
7
7
 
8
+ module MuchStub
8
9
  class UnitTests < Assert::Context
9
10
  desc "MuchStub"
10
11
  end
11
12
 
12
- class ApiTests < UnitTests
13
- desc "api"
13
+ class APITests < UnitTests
14
+ desc "API"
14
15
  setup do
15
16
  @orig_value = Factory.string
16
17
  @stub_value = Factory.string
@@ -26,8 +27,30 @@ module MuchStub
26
27
  stub1 = MuchStub.(@myobj, :mymeth)
27
28
  assert_kind_of MuchStub::Stub, stub1
28
29
 
29
- stub2 = MuchStub.call(@myobj, :mymeth)
30
+ stub2 = MuchStub.stub(@myobj, :mymeth)
31
+ assert_kind_of MuchStub::Stub, stub2
32
+ end
33
+
34
+ should "build a stub with an on_call block" do
35
+ my_meth_called_with = nil
36
+ stub1 =
37
+ MuchStub.on_call(@myobj, :mymeth) { |call|
38
+ my_meth_called_with = call
39
+ }
40
+
41
+ @myobj.mymeth
42
+ assert_kind_of MuchStub::Stub, stub1
43
+ assert_equal [], my_meth_called_with.args
44
+
45
+ my_meth_called_with = nil
46
+ stub2 =
47
+ MuchStub.stub_on_call(@myobj, :mymeth) { |call|
48
+ my_meth_called_with = call
49
+ }
50
+
51
+ @myobj.mymeth
30
52
  assert_kind_of MuchStub::Stub, stub2
53
+ assert_equal [], my_meth_called_with.args
31
54
  end
32
55
 
33
56
  should "lookup stubs that have been called before" do
@@ -69,8 +92,8 @@ module MuchStub
69
92
 
70
93
  should "be able to call a stub's original method" do
71
94
  err = assert_raises(NotStubbedError){ MuchStub.stub_send(@myobj, :mymeth) }
72
- assert_includes 'not stubbed.', err.message
73
- assert_includes 'test/unit/much-stub_tests.rb', err.backtrace.first
95
+ assert_includes "not stubbed.", err.message
96
+ assert_includes "test/unit/much-stub_tests.rb", err.backtrace.first
74
97
 
75
98
  MuchStub.(@myobj, :mymeth){ @stub_value }
76
99
 
@@ -78,13 +101,67 @@ module MuchStub
78
101
  assert_equal @orig_value, MuchStub.stub_send(@myobj, :mymeth)
79
102
  end
80
103
 
104
+ should "be able to add a stub tap" do
105
+ my_meth_called_with = nil
106
+ MuchStub.tap(@myobj, :mymeth){ |value, *args, &block|
107
+ my_meth_called_with = args
108
+ }
109
+
110
+ assert_equal @orig_value, @myobj.mymeth
111
+ assert_equal [], my_meth_called_with
112
+ end
113
+
114
+ should "be able to add a stub tap with an on_call block" do
115
+ my_meth_called_with = nil
116
+ MuchStub.tap_on_call(@myobj, :mymeth){ |value, call|
117
+ my_meth_called_with = call
118
+ }
119
+
120
+ assert_equal @orig_value, @myobj.mymeth
121
+ assert_equal [], my_meth_called_with.args
122
+ end
123
+
124
+ should "be able to add a stubbed spy" do
125
+ myclass = Class.new do
126
+ def one; self; end
127
+ def two(val); self; end
128
+ def three; self; end
129
+ def ready?; false; end
130
+ end
131
+ myobj = myclass.new
132
+
133
+ spy =
134
+ MuchStub.spy(
135
+ myobj,
136
+ :one,
137
+ :two,
138
+ :three,
139
+ :to_s,
140
+ ready?: true)
141
+
142
+ assert_equal spy, myobj.one
143
+ assert_equal spy, myobj.two("a")
144
+ assert_equal spy, myobj.three
145
+ assert_equal spy, myobj.to_s
146
+
147
+ assert_true myobj.one.two("b").three.ready?
148
+
149
+ assert_kind_of MuchStub::CallSpy, spy
150
+ assert_equal 2, spy.one_call_count
151
+ assert_equal 2, spy.two_call_count
152
+ assert_equal 2, spy.three_call_count
153
+ assert_equal 1, spy.to_s_call_count
154
+ assert_equal 1, spy.ready_predicate_call_count
155
+ assert_equal ["b"], spy.two_last_called_with.args
156
+ assert_true spy.ready_predicate_called?
157
+ end
81
158
  end
82
159
 
83
160
  class StubTests < UnitTests
84
161
  desc "Stub"
85
162
  setup do
86
163
  @myclass = Class.new do
87
- def mymeth; 'meth'; end
164
+ def mymeth; "meth"; end
88
165
  def myval(val); val; end
89
166
  def myargs(*args); args; end
90
167
  def myvalargs(val1, val2, *args); [val1, val2, args]; end
@@ -108,7 +185,7 @@ module MuchStub
108
185
  end
109
186
 
110
187
  should "know its names" do
111
- assert_equal 'mymeth', subject.method_name
188
+ assert_equal "mymeth", subject.method_name
112
189
  expected = "__muchstub_stub__#{@myobj.object_id}_#{subject.method_name}"
113
190
  assert_equal expected, subject.name
114
191
  expected = "@__muchstub_stub_#{@myobj.object_id}_" \
@@ -118,44 +195,49 @@ module MuchStub
118
195
 
119
196
  should "complain when called if no do block was given" do
120
197
  err = assert_raises(MuchStub::NotStubbedError){ @myobj.mymeth }
121
- assert_includes 'not stubbed.', err.message
122
- assert_includes 'test/unit/much-stub_tests.rb', err.backtrace.first
198
+ assert_includes "not stubbed.", err.message
199
+ assert_includes "test/unit/much-stub_tests.rb", err.backtrace.first
123
200
 
124
- subject.do = proc{ 'mymeth' }
201
+ subject.do = proc{ "mymeth" }
125
202
  assert_nothing_raised do
126
203
  @myobj.mymeth
127
204
  end
128
205
 
206
+ MuchStub::Stub.new(@myobj, :mymeth){ "mymeth" }
129
207
  assert_nothing_raised do
130
- MuchStub::Stub.new(@myobj, :mymeth){ 'mymeth' }
208
+ @myobj.mymeth
131
209
  end
132
210
  end
133
211
 
134
- should "complain if stubbing a method that the object doesn't respond to" do
135
- err = assert_raises(MuchStub::StubError){ MuchStub::Stub.new(@myobj, :some_other_meth) }
136
- assert_includes 'does not respond to', err.message
137
- assert_includes 'test/unit/much-stub_tests.rb', err.backtrace.first
212
+ should "complain when called if no lookup block was given" do
213
+ MuchStub::Stub.new(@myobj, :myval).with(1)
214
+
215
+ err = assert_raises(MuchStub::StubError){ @myobj.myval(1) }
216
+ assert_includes "stubbed with no block.", err.message
217
+ assert_includes "test/unit/much-stub_tests.rb", err.backtrace.first
138
218
  end
139
219
 
140
- should "complain if stubbed and called with no `do` proc given" do
141
- assert_raises(MuchStub::NotStubbedError){ @myobj.mymeth }
220
+ should "complain if stubbing a method that the object doesn't respond to" do
221
+ err = assert_raises(MuchStub::StubError){ MuchStub::Stub.new(@myobj, :some_other_meth) }
222
+ assert_includes "does not respond to", err.message
223
+ assert_includes "test/unit/much-stub_tests.rb", err.backtrace.first
142
224
  end
143
225
 
144
226
  should "complain if stubbed and called with mismatched arity" do
145
- MuchStub::Stub.new(@myobj, :myval){ 'myval' }
227
+ MuchStub::Stub.new(@myobj, :myval){ "myval" }
146
228
  err = assert_raises(MuchStub::StubArityError){ @myobj.myval }
147
- assert_includes 'arity mismatch on', err.message
148
- assert_includes 'test/unit/much-stub_tests.rb', err.backtrace.first
229
+ assert_includes "arity mismatch on", err.message
230
+ assert_includes "test/unit/much-stub_tests.rb", err.backtrace.first
149
231
 
150
232
  assert_nothing_raised { @myobj.myval(1) }
151
233
  assert_raises(MuchStub::StubArityError){ @myobj.myval(1,2) }
152
234
 
153
- MuchStub::Stub.new(@myobj, :myargs){ 'myargs' }
235
+ MuchStub::Stub.new(@myobj, :myargs){ "myargs" }
154
236
  assert_nothing_raised { @myobj.myargs }
155
237
  assert_nothing_raised { @myobj.myargs(1) }
156
238
  assert_nothing_raised { @myobj.myargs(1,2) }
157
239
 
158
- MuchStub::Stub.new(@myobj, :myvalargs){ 'myvalargs' }
240
+ MuchStub::Stub.new(@myobj, :myvalargs){ "myvalargs" }
159
241
  assert_raises(MuchStub::StubArityError){ @myobj.myvalargs }
160
242
  assert_raises(MuchStub::StubArityError){ @myobj.myvalargs(1) }
161
243
  assert_nothing_raised { @myobj.myvalargs(1,2) }
@@ -164,75 +246,84 @@ module MuchStub
164
246
 
165
247
  should "complain if stubbed with mismatched arity" do
166
248
  err = assert_raises(MuchStub::StubArityError) do
167
- MuchStub::Stub.new(@myobj, :myval).with(){ 'myval' }
249
+ MuchStub::Stub.new(@myobj, :myval).with(){ "myval" }
168
250
  end
169
- assert_includes 'arity mismatch on', err.message
170
- assert_includes 'test/unit/much-stub_tests.rb', err.backtrace.first
251
+ assert_includes "arity mismatch on", err.message
252
+ assert_includes "test/unit/much-stub_tests.rb", err.backtrace.first
171
253
 
172
254
  assert_raises(MuchStub::StubArityError) do
173
- MuchStub::Stub.new(@myobj, :myval).with(1,2){ 'myval' }
255
+ MuchStub::Stub.new(@myobj, :myval).with(1,2){ "myval" }
174
256
  end
175
257
  assert_nothing_raised do
176
- MuchStub::Stub.new(@myobj, :myval).with(1){ 'myval' }
258
+ MuchStub::Stub.new(@myobj, :myval).with(1){ "myval" }
177
259
  end
178
260
 
179
261
  assert_nothing_raised do
180
- MuchStub::Stub.new(@myobj, :myargs).with(){ 'myargs' }
262
+ MuchStub::Stub.new(@myobj, :myargs).with(){ "myargs" }
181
263
  end
182
264
  assert_nothing_raised do
183
- MuchStub::Stub.new(@myobj, :myargs).with(1,2){ 'myargs' }
265
+ MuchStub::Stub.new(@myobj, :myargs).with(1,2){ "myargs" }
184
266
  end
185
267
  assert_nothing_raised do
186
- MuchStub::Stub.new(@myobj, :myargs).with(1){ 'myargs' }
268
+ MuchStub::Stub.new(@myobj, :myargs).with(1){ "myargs" }
187
269
  end
188
270
 
189
271
  assert_raises(MuchStub::StubArityError) do
190
- MuchStub::Stub.new(@myobj, :myvalargs).with(){ 'myvalargs' }
272
+ MuchStub::Stub.new(@myobj, :myvalargs).with(){ "myvalargs" }
191
273
  end
192
274
  assert_raises(MuchStub::StubArityError) do
193
- MuchStub::Stub.new(@myobj, :myvalargs).with(1){ 'myvalargs' }
275
+ MuchStub::Stub.new(@myobj, :myvalargs).with(1){ "myvalargs" }
194
276
  end
195
277
  assert_nothing_raised do
196
- MuchStub::Stub.new(@myobj, :myvalargs).with(1,2){ 'myvalargs' }
278
+ MuchStub::Stub.new(@myobj, :myvalargs).with(1,2){ "myvalargs" }
197
279
  end
198
280
  assert_nothing_raised do
199
- MuchStub::Stub.new(@myobj, :myvalargs).with(1,2,3){ 'myvalargs' }
281
+ MuchStub::Stub.new(@myobj, :myvalargs).with(1,2,3){ "myvalargs" }
200
282
  end
201
283
  end
202
284
 
203
285
  should "stub methods with no args" do
204
286
  subject.teardown
205
287
 
206
- assert_equal 'meth', @myobj.mymeth
207
- MuchStub::Stub.new(@myobj, :mymeth){ 'mymeth' }
208
- assert_equal 'mymeth', @myobj.mymeth
288
+ assert_equal "meth", @myobj.mymeth
289
+ MuchStub::Stub.new(@myobj, :mymeth){ "mymeth" }
290
+ assert_equal "mymeth", @myobj.mymeth
209
291
  end
210
292
 
211
293
  should "stub methods with required arg" do
212
294
  assert_equal 1, @myobj.myval(1)
213
295
  stub = MuchStub::Stub.new(@myobj, :myval){ |val| val.to_s }
214
- assert_equal '1', @myobj.myval(1)
215
- assert_equal '2', @myobj.myval(2)
216
- stub.with(2){ 'two' }
217
- assert_equal 'two', @myobj.myval(2)
296
+ assert_equal "1", @myobj.myval(1)
297
+ assert_equal "2", @myobj.myval(2)
298
+ stub.with(2){ "two" }
299
+ assert_equal "two", @myobj.myval(2)
218
300
  end
219
301
 
220
302
  should "stub methods with variable args" do
221
303
  assert_equal [1,2], @myobj.myargs(1,2)
222
- stub = MuchStub::Stub.new(@myobj, :myargs){ |*args| args.join(',') }
223
- assert_equal '1,2', @myobj.myargs(1,2)
224
- assert_equal '3,4,5', @myobj.myargs(3,4,5)
225
- stub.with(3,4,5){ 'three-four-five' }
226
- assert_equal 'three-four-five', @myobj.myargs(3,4,5)
304
+
305
+ stub = MuchStub::Stub.new(@myobj, :myargs){ |*args| args.join(",") }
306
+ assert_equal "1,2,3", @myobj.myargs(1,2,3)
307
+ stub.with(3,4,5){ |*args| args.join(":") }
308
+ assert_equal "3:4:5", @myobj.myargs(3,4,5)
309
+
310
+ stub = MuchStub::Stub.new(@myobj, :myargs).on_call{ |call| call.args.join(",") }
311
+ assert_equal "1,2,3", @myobj.myargs(1,2,3)
312
+ stub.with(3,4,5).on_call{ |call| call.args.join(":") }
313
+ assert_equal "3:4:5", @myobj.myargs(3,4,5)
227
314
  end
228
315
 
229
316
  should "stub methods with required args and variable args" do
230
317
  assert_equal [1,2, [3]], @myobj.myvalargs(1,2,3)
231
- stub = MuchStub::Stub.new(@myobj, :myvalargs){ |*args| args.join(',') }
232
- assert_equal '1,2,3', @myobj.myvalargs(1,2,3)
233
- assert_equal '3,4,5', @myobj.myvalargs(3,4,5)
234
- stub.with(3,4,5){ 'three-four-five' }
235
- assert_equal 'three-four-five', @myobj.myvalargs(3,4,5)
318
+ stub = MuchStub::Stub.new(@myobj, :myvalargs){ |*args| args.join(",") }
319
+ assert_equal "1,2,3", @myobj.myvalargs(1,2,3)
320
+ stub.with(3,4,5){ |*args| args.join(":") }
321
+ assert_equal "3:4:5", @myobj.myvalargs(3,4,5)
322
+
323
+ stub = MuchStub::Stub.new(@myobj, :myvalargs).on_call{ |call| call.args.join(",") }
324
+ assert_equal "1,2,3", @myobj.myvalargs(1,2,3)
325
+ stub.with(3,4,5).on_call{ |call| call.args.join(":") }
326
+ assert_equal "3:4:5", @myobj.myvalargs(3,4,5)
236
327
  end
237
328
 
238
329
  should "stub methods that yield blocks" do
@@ -242,9 +333,9 @@ module MuchStub
242
333
  assert_equal true, blkcalled
243
334
 
244
335
  blkcalled = false
245
- MuchStub::Stub.new(@myobj, :myblk){ blkcalled = 'true' }
336
+ MuchStub::Stub.new(@myobj, :myblk){ blkcalled = "true" }
246
337
  @myobj.myblk(&blk)
247
- assert_equal 'true', blkcalled
338
+ assert_equal "true", blkcalled
248
339
  end
249
340
 
250
341
  should "stub methods even if they are not local to the object" do
@@ -263,61 +354,61 @@ module MuchStub
263
354
 
264
355
  assert_equal [1,2,[3]], mydelegator.myvalargs(1,2,3)
265
356
  stub = MuchStub::Stub.new(mydelegator, :myvalargs){ |*args| args.inspect }
266
- assert_equal '[1, 2, 3]', mydelegator.myvalargs(1,2,3)
267
- assert_equal '[4, 5, 6]', mydelegator.myvalargs(4,5,6)
268
- stub.with(4,5,6){ 'four-five-six' }
269
- assert_equal 'four-five-six', mydelegator.myvalargs(4,5,6)
357
+ assert_equal "[1, 2, 3]", mydelegator.myvalargs(1,2,3)
358
+ assert_equal "[4, 5, 6]", mydelegator.myvalargs(4,5,6)
359
+ stub.with(4,5,6){ "four-five-six" }
360
+ assert_equal "four-five-six", mydelegator.myvalargs(4,5,6)
270
361
  end
271
362
 
272
363
  should "call to the original method" do
273
364
  subject.teardown
274
365
 
275
366
  # no args
276
- stub = MuchStub::Stub.new(@myobj, :mymeth){ 'mymeth' }
277
- assert_equal 'mymeth', stub.call([])
278
- assert_equal 'meth', stub.call_method([])
367
+ stub = MuchStub::Stub.new(@myobj, :mymeth){ "mymeth" }
368
+ assert_equal "mymeth", stub.call([])
369
+ assert_equal "meth", stub.call_method([])
279
370
 
280
371
  # static args
281
372
  stub = MuchStub::Stub.new(@myobj, :myval){ |val| val.to_s }
282
- assert_equal '1', stub.call([1])
373
+ assert_equal "1", stub.call([1])
283
374
  assert_equal 1, stub.call_method([1])
284
- assert_equal '2', stub.call([2])
375
+ assert_equal "2", stub.call([2])
285
376
  assert_equal 2, stub.call_method([2])
286
- stub.with(2){ 'two' }
287
- assert_equal 'two', stub.call([2])
377
+ stub.with(2){ "two" }
378
+ assert_equal "two", stub.call([2])
288
379
  assert_equal 2, stub.call_method([2])
289
380
 
290
381
  # dynamic args
291
- stub = MuchStub::Stub.new(@myobj, :myargs){ |*args| args.join(',') }
292
- assert_equal '1,2', stub.call([1,2])
382
+ stub = MuchStub::Stub.new(@myobj, :myargs){ |*args| args.join(",") }
383
+ assert_equal "1,2", stub.call([1,2])
293
384
  assert_equal [1,2], stub.call_method([1,2])
294
- assert_equal '3,4,5', stub.call([3,4,5])
385
+ assert_equal "3,4,5", stub.call([3,4,5])
295
386
  assert_equal [3,4,5], stub.call_method([3,4,5])
296
- stub.with(3,4,5){ 'three-four-five' }
297
- assert_equal 'three-four-five', stub.call([3,4,5])
387
+ stub.with(3,4,5){ "three-four-five" }
388
+ assert_equal "three-four-five", stub.call([3,4,5])
298
389
  assert_equal [3,4,5], stub.call_method([3,4,5])
299
390
 
300
391
  # mixed static/dynamic args
301
- stub = MuchStub::Stub.new(@myobj, :myvalargs){ |*args| args.join(',') }
302
- assert_equal '1,2,3', stub.call([1,2,3])
392
+ stub = MuchStub::Stub.new(@myobj, :myvalargs){ |*args| args.join(",") }
393
+ assert_equal "1,2,3", stub.call([1,2,3])
303
394
  assert_equal [1,2, [3]], stub.call_method([1,2,3])
304
- assert_equal '3,4,5', stub.call([3,4,5])
395
+ assert_equal "3,4,5", stub.call([3,4,5])
305
396
  assert_equal [3,4,[5]], stub.call_method([3,4,5])
306
- stub.with(3,4,5){ 'three-four-five' }
307
- assert_equal 'three-four-five', stub.call([3,4,5])
397
+ stub.with(3,4,5){ "three-four-five" }
398
+ assert_equal "three-four-five", stub.call([3,4,5])
308
399
  assert_equal [3,4,[5]], stub.call_method([3,4,5])
309
400
 
310
401
  # blocks
311
402
  blkcalled = false
312
403
  blk = proc{ blkcalled = true }
313
- stub = MuchStub::Stub.new(@myobj, :myblk){ blkcalled = 'true' }
404
+ stub = MuchStub::Stub.new(@myobj, :myblk){ blkcalled = "true" }
314
405
  stub.call([], &blk)
315
- assert_equal 'true', blkcalled
406
+ assert_equal "true", blkcalled
316
407
  stub.call_method([], &blk)
317
408
  assert_equal true, blkcalled
318
409
  end
319
410
 
320
- should "store and remove itself on asserts main module" do
411
+ should "store and remove itself" do
321
412
  assert_equal subject, MuchStub.instance_variable_get(subject.ivar_name)
322
413
  subject.teardown
323
414
  assert_nil MuchStub.instance_variable_get(subject.ivar_name)
@@ -326,17 +417,16 @@ module MuchStub
326
417
  should "be removable" do
327
418
  assert_equal 1, @myobj.myval(1)
328
419
  stub = MuchStub::Stub.new(@myobj, :myval){ |val| val.to_s }
329
- assert_equal '1', @myobj.myval(1)
420
+ assert_equal "1", @myobj.myval(1)
330
421
  stub.teardown
331
422
  assert_equal 1, @myobj.myval(1)
332
423
  end
333
424
 
334
425
  should "have a readable inspect" do
335
- expected = "#<#{subject.class}:#{'0x0%x' % (subject.object_id << 1)}" \
426
+ expected = "#<#{subject.class}:#{"0x0%x" % (subject.object_id << 1)}" \
336
427
  " @method_name=#{subject.method_name.inspect}>"
337
428
  assert_equal expected, subject.inspect
338
429
  end
339
-
340
430
  end
341
431
 
342
432
  class MutatingArgsStubTests < StubTests
@@ -354,7 +444,6 @@ module MuchStub
354
444
  should "not raise a stub error when called" do
355
445
  assert_nothing_raised{ @stub.call([@arg]) }
356
446
  end
357
-
358
447
  end
359
448
 
360
449
  class StubInheritedMethodAfterStubbedOnParentTests < StubTests
@@ -369,11 +458,11 @@ module MuchStub
369
458
 
370
459
  should "allow stubbing them independently of each other" do
371
460
  assert_nothing_raised do
372
- @parent_stub.with(1, 2){ 'parent' }
373
- @child_stub.with(1, 2){ 'child' }
461
+ @parent_stub.with(1, 2){ "parent" }
462
+ @child_stub.with(1, 2){ "child" }
374
463
  end
375
- assert_equal 'parent', @parent_class.new(1, 2)
376
- assert_equal 'child', @child_class.new(1, 2)
464
+ assert_equal "parent", @parent_class.new(1, 2)
465
+ assert_equal "child", @child_class.new(1, 2)
377
466
  end
378
467
 
379
468
  should "not raise any errors when tearing down the parent before the child" do
@@ -382,7 +471,6 @@ module MuchStub
382
471
  @child_stub.teardown
383
472
  end
384
473
  end
385
-
386
474
  end
387
475
 
388
476
  class NullStubTests < UnitTests
@@ -393,7 +481,6 @@ module MuchStub
393
481
  subject{ @ns }
394
482
 
395
483
  should have_imeths :teardown
396
-
397
484
  end
398
485
 
399
486
  class ParameterListTests < UnitTests
@@ -401,7 +488,7 @@ module MuchStub
401
488
  setup do
402
489
  many_args = (0..ParameterList::LETTERS.size).map do
403
490
  Assert::Factory.string
404
- end.join(', ')
491
+ end.join(", ")
405
492
  @object = Class.new
406
493
  # use `class_eval` with string to easily define methods with many params
407
494
  @object.class_eval <<-methods
@@ -414,23 +501,22 @@ module MuchStub
414
501
  subject{ ParameterList }
415
502
 
416
503
  should "build a parameter list for a method that takes no args" do
417
- assert_equal '&block', subject.new(@object, 'noargs')
504
+ assert_equal "&block", subject.new(@object, "noargs")
418
505
  end
419
506
 
420
507
  should "build a parameter list for a method that takes any args" do
421
- assert_equal '*args, &block', subject.new(@object, 'anyargs')
508
+ assert_equal "*args, &block", subject.new(@object, "anyargs")
422
509
  end
423
510
 
424
511
  should "build a parameter list for a method that takes many args" do
425
- expected = "#{ParameterList::LETTERS.join(', ')}, aa, &block"
426
- assert_equal expected, subject.new(@object, 'manyargs')
512
+ expected = "#{ParameterList::LETTERS.join(", ")}, aa, &block"
513
+ assert_equal expected, subject.new(@object, "manyargs")
427
514
  end
428
515
 
429
516
  should "build a parameter list for a method that takes a minimum number of args" do
430
- expected = "#{ParameterList::LETTERS.join(', ')}, aa, *args, &block"
431
- assert_equal expected, subject.new(@object, 'minargs')
517
+ expected = "#{ParameterList::LETTERS.join(", ")}, aa, *args, &block"
518
+ assert_equal expected, subject.new(@object, "minargs")
432
519
  end
433
-
434
520
  end
435
521
 
436
522
  class ChangeHashObject
@@ -446,5 +532,4 @@ module MuchStub
446
532
  @value = 1
447
533
  end
448
534
  end
449
-
450
535
  end