much-stub 0.1.6 → 0.1.10
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.
- checksums.yaml +4 -4
- data/.l.yml +8 -0
- data/.rubocop.yml +3 -0
- data/.ruby-version +1 -0
- data/.t.yml +6 -0
- data/Gemfile +3 -1
- data/README.md +40 -35
- data/lib/much-stub/call_spy.rb +26 -25
- data/lib/much-stub/version.rb +1 -1
- data/lib/much-stub.rb +80 -59
- data/much-stub.gemspec +20 -12
- data/test/helper.rb +1 -1
- data/test/system/much-stub_tests.rb +113 -77
- data/test/unit/call_spy_tests.rb +3 -2
- data/test/unit/call_tests.rb +2 -2
- data/test/unit/much-stub_tests.rb +198 -124
- metadata +24 -6
@@ -16,15 +16,21 @@ module MuchStub
|
|
16
16
|
@orig_value = Factory.string
|
17
17
|
@stub_value = Factory.string
|
18
18
|
|
19
|
-
@myclass =
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
@myclass =
|
20
|
+
Class.new do
|
21
|
+
def initialize(value)
|
22
|
+
@value = value
|
23
|
+
end
|
24
|
+
|
25
|
+
def mymeth
|
26
|
+
@value
|
27
|
+
end
|
28
|
+
end
|
23
29
|
@myobj = @myclass.new(@orig_value)
|
24
30
|
end
|
25
31
|
|
26
32
|
should "build a stub" do
|
27
|
-
stub1 = MuchStub.(@myobj, :mymeth)
|
33
|
+
stub1 = MuchStub.call(@myobj, :mymeth)
|
28
34
|
assert_kind_of MuchStub::Stub, stub1
|
29
35
|
|
30
36
|
stub2 = MuchStub.stub(@myobj, :mymeth)
|
@@ -34,9 +40,9 @@ module MuchStub
|
|
34
40
|
should "build a stub with an on_call block" do
|
35
41
|
my_meth_called_with = nil
|
36
42
|
stub1 =
|
37
|
-
MuchStub.on_call(@myobj, :mymeth)
|
43
|
+
MuchStub.on_call(@myobj, :mymeth) do |call|
|
38
44
|
my_meth_called_with = call
|
39
|
-
|
45
|
+
end
|
40
46
|
|
41
47
|
@myobj.mymeth
|
42
48
|
assert_kind_of MuchStub::Stub, stub1
|
@@ -44,9 +50,9 @@ module MuchStub
|
|
44
50
|
|
45
51
|
my_meth_called_with = nil
|
46
52
|
stub2 =
|
47
|
-
MuchStub.stub_on_call(@myobj, :mymeth)
|
53
|
+
MuchStub.stub_on_call(@myobj, :mymeth) do |call|
|
48
54
|
my_meth_called_with = call
|
49
|
-
|
55
|
+
end
|
50
56
|
|
51
57
|
@myobj.mymeth
|
52
58
|
assert_kind_of MuchStub::Stub, stub2
|
@@ -54,15 +60,15 @@ module MuchStub
|
|
54
60
|
end
|
55
61
|
|
56
62
|
should "lookup stubs that have been called before" do
|
57
|
-
stub1 = MuchStub.(@myobj, :mymeth)
|
58
|
-
stub2 = MuchStub.(@myobj, :mymeth)
|
63
|
+
stub1 = MuchStub.call(@myobj, :mymeth)
|
64
|
+
stub2 = MuchStub.call(@myobj, :mymeth)
|
59
65
|
assert_same stub1, stub2
|
60
66
|
end
|
61
67
|
|
62
68
|
should "set the stub's do block if given a block" do
|
63
|
-
MuchStub.(@myobj, :mymeth)
|
69
|
+
MuchStub.call(@myobj, :mymeth)
|
64
70
|
assert_raises(MuchStub::NotStubbedError){ @myobj.mymeth }
|
65
|
-
MuchStub.(@myobj, :mymeth){ @stub_value }
|
71
|
+
MuchStub.call(@myobj, :mymeth){ @stub_value }
|
66
72
|
assert_equal @stub_value, @myobj.mymeth
|
67
73
|
end
|
68
74
|
|
@@ -72,7 +78,7 @@ module MuchStub
|
|
72
78
|
assert_equal @orig_value, @myobj.mymeth
|
73
79
|
|
74
80
|
assert_equal @orig_value, @myobj.mymeth
|
75
|
-
MuchStub.(@myobj, :mymeth){ @stub_value }
|
81
|
+
MuchStub.call(@myobj, :mymeth){ @stub_value }
|
76
82
|
assert_equal @stub_value, @myobj.mymeth
|
77
83
|
MuchStub.unstub(@myobj, :mymeth)
|
78
84
|
assert_equal @orig_value, @myobj.mymeth
|
@@ -81,7 +87,7 @@ module MuchStub
|
|
81
87
|
should "know and teardown all stubs" do
|
82
88
|
assert_equal @orig_value, @myobj.mymeth
|
83
89
|
|
84
|
-
MuchStub.(@myobj, :mymeth){ @stub_value }
|
90
|
+
MuchStub.call(@myobj, :mymeth){ @stub_value }
|
85
91
|
assert_equal @stub_value, @myobj.mymeth
|
86
92
|
assert_equal 1, MuchStub.stubs.size
|
87
93
|
|
@@ -91,11 +97,14 @@ module MuchStub
|
|
91
97
|
end
|
92
98
|
|
93
99
|
should "be able to call a stub's original method" do
|
94
|
-
err =
|
100
|
+
err =
|
101
|
+
assert_raises(NotStubbedError) do
|
102
|
+
MuchStub.stub_send(@myobj, :mymeth)
|
103
|
+
end
|
95
104
|
assert_includes "not stubbed.", err.message
|
96
105
|
assert_includes "test/unit/much-stub_tests.rb", err.backtrace.first
|
97
106
|
|
98
|
-
MuchStub.(@myobj, :mymeth){ @stub_value }
|
107
|
+
MuchStub.call(@myobj, :mymeth){ @stub_value }
|
99
108
|
|
100
109
|
assert_equal @stub_value, @myobj.mymeth
|
101
110
|
assert_equal @orig_value, MuchStub.stub_send(@myobj, :mymeth)
|
@@ -103,9 +112,9 @@ module MuchStub
|
|
103
112
|
|
104
113
|
should "be able to add a stub tap" do
|
105
114
|
my_meth_called_with = nil
|
106
|
-
MuchStub.tap(@myobj, :mymeth)
|
115
|
+
MuchStub.tap(@myobj, :mymeth) do |_value, *args|
|
107
116
|
my_meth_called_with = args
|
108
|
-
|
117
|
+
end
|
109
118
|
|
110
119
|
assert_equal @orig_value, @myobj.mymeth
|
111
120
|
assert_equal [], my_meth_called_with
|
@@ -113,21 +122,33 @@ module MuchStub
|
|
113
122
|
|
114
123
|
should "be able to add a stub tap with an on_call block" do
|
115
124
|
my_meth_called_with = nil
|
116
|
-
MuchStub.tap_on_call(@myobj, :mymeth)
|
125
|
+
MuchStub.tap_on_call(@myobj, :mymeth) do |_value, call|
|
117
126
|
my_meth_called_with = call
|
118
|
-
|
127
|
+
end
|
119
128
|
|
120
129
|
assert_equal @orig_value, @myobj.mymeth
|
121
130
|
assert_equal [], my_meth_called_with.args
|
122
131
|
end
|
123
132
|
|
124
133
|
should "be able to add a stubbed spy" do
|
125
|
-
myclass =
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
134
|
+
myclass =
|
135
|
+
Class.new do
|
136
|
+
def one
|
137
|
+
self
|
138
|
+
end
|
139
|
+
|
140
|
+
def two(_val)
|
141
|
+
self
|
142
|
+
end
|
143
|
+
|
144
|
+
def three
|
145
|
+
self
|
146
|
+
end
|
147
|
+
|
148
|
+
def ready?
|
149
|
+
false
|
150
|
+
end
|
151
|
+
end
|
131
152
|
myobj = myclass.new
|
132
153
|
|
133
154
|
spy =
|
@@ -137,7 +158,8 @@ module MuchStub
|
|
137
158
|
:two,
|
138
159
|
:three,
|
139
160
|
:to_s,
|
140
|
-
ready?: true
|
161
|
+
ready?: true,
|
162
|
+
)
|
141
163
|
|
142
164
|
assert_equal spy, myobj.one
|
143
165
|
assert_equal spy, myobj.two("a")
|
@@ -160,13 +182,32 @@ module MuchStub
|
|
160
182
|
class StubTests < UnitTests
|
161
183
|
desc "Stub"
|
162
184
|
setup do
|
163
|
-
@myclass =
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
185
|
+
@myclass =
|
186
|
+
Class.new do
|
187
|
+
def mymeth
|
188
|
+
"meth"
|
189
|
+
end
|
190
|
+
|
191
|
+
def myval(val)
|
192
|
+
val
|
193
|
+
end
|
194
|
+
|
195
|
+
def myargs(*args)
|
196
|
+
args
|
197
|
+
end
|
198
|
+
|
199
|
+
def myvalargs(val1, val2, *args)
|
200
|
+
[val1, val2, args]
|
201
|
+
end
|
202
|
+
|
203
|
+
def mykargs(val1:, **kargs)
|
204
|
+
[val1, kargs]
|
205
|
+
end
|
206
|
+
|
207
|
+
def myblk(&block)
|
208
|
+
block.call
|
209
|
+
end
|
210
|
+
end
|
170
211
|
@myobj = @myclass.new
|
171
212
|
|
172
213
|
@stub = MuchStub::Stub.new(@myobj, :mymeth)
|
@@ -181,7 +222,10 @@ module MuchStub
|
|
181
222
|
should "generate a key given an object and method name" do
|
182
223
|
obj = @myobj
|
183
224
|
meth = :mymeth
|
184
|
-
assert_equal
|
225
|
+
assert_equal(
|
226
|
+
"--#{obj.object_id}--#{meth}--",
|
227
|
+
MuchStub::Stub.key(obj, meth),
|
228
|
+
)
|
185
229
|
end
|
186
230
|
|
187
231
|
should "know its names" do
|
@@ -218,67 +262,72 @@ module MuchStub
|
|
218
262
|
end
|
219
263
|
|
220
264
|
should "complain if stubbing a method that the object doesn't respond to" do
|
221
|
-
err =
|
222
|
-
|
265
|
+
err =
|
266
|
+
assert_raises(MuchStub::StubError) do
|
267
|
+
MuchStub::Stub.new(@myobj, :some_other_meth)
|
268
|
+
end
|
269
|
+
assert_includes "does not respond to", err.message
|
223
270
|
assert_includes "test/unit/much-stub_tests.rb", err.backtrace.first
|
224
271
|
end
|
225
272
|
|
226
273
|
should "complain if stubbed and called with mismatched arity" do
|
227
274
|
MuchStub::Stub.new(@myobj, :myval){ "myval" }
|
228
275
|
err = assert_raises(MuchStub::StubArityError){ @myobj.myval }
|
229
|
-
assert_includes "arity mismatch on",
|
276
|
+
assert_includes "arity mismatch on", err.message
|
230
277
|
assert_includes "test/unit/much-stub_tests.rb", err.backtrace.first
|
231
278
|
|
232
|
-
assert_nothing_raised
|
233
|
-
assert_raises(MuchStub::StubArityError){ @myobj.myval(1,2) }
|
279
|
+
assert_nothing_raised{ @myobj.myval(1) }
|
280
|
+
assert_raises(MuchStub::StubArityError){ @myobj.myval(1, 2) }
|
234
281
|
|
235
282
|
MuchStub::Stub.new(@myobj, :myargs){ "myargs" }
|
236
|
-
assert_nothing_raised
|
237
|
-
assert_nothing_raised
|
238
|
-
assert_nothing_raised
|
283
|
+
assert_nothing_raised{ @myobj.myargs }
|
284
|
+
assert_nothing_raised{ @myobj.myargs(1) }
|
285
|
+
assert_nothing_raised{ @myobj.myargs(1, 2) }
|
239
286
|
|
240
287
|
MuchStub::Stub.new(@myobj, :myvalargs){ "myvalargs" }
|
241
288
|
assert_raises(MuchStub::StubArityError){ @myobj.myvalargs }
|
242
289
|
assert_raises(MuchStub::StubArityError){ @myobj.myvalargs(1) }
|
243
|
-
assert_nothing_raised
|
244
|
-
assert_nothing_raised
|
290
|
+
assert_nothing_raised{ @myobj.myvalargs(1, 2) }
|
291
|
+
assert_nothing_raised{ @myobj.myvalargs(1, nil) }
|
292
|
+
assert_nothing_raised{ @myobj.myvalargs(1, 2, 3) }
|
245
293
|
end
|
246
294
|
|
247
295
|
should "complain if stubbed with mismatched arity" do
|
248
|
-
err =
|
249
|
-
MuchStub::
|
250
|
-
|
251
|
-
|
296
|
+
err =
|
297
|
+
assert_raises(MuchStub::StubArityError) do
|
298
|
+
MuchStub::Stub.new(@myobj, :myval).with{ "myval" }
|
299
|
+
end
|
300
|
+
assert_includes "arity mismatch on", err.message
|
252
301
|
assert_includes "test/unit/much-stub_tests.rb", err.backtrace.first
|
253
302
|
|
254
303
|
assert_raises(MuchStub::StubArityError) do
|
255
|
-
MuchStub::Stub.new(@myobj, :myval).with(1,2){ "myval" }
|
304
|
+
MuchStub::Stub.new(@myobj, :myval).with(1, 2){ "myval" }
|
256
305
|
end
|
257
306
|
assert_nothing_raised do
|
258
307
|
MuchStub::Stub.new(@myobj, :myval).with(1){ "myval" }
|
259
308
|
end
|
260
309
|
|
261
310
|
assert_nothing_raised do
|
262
|
-
MuchStub::Stub.new(@myobj, :myargs).with
|
311
|
+
MuchStub::Stub.new(@myobj, :myargs).with{ "myargs" }
|
263
312
|
end
|
264
313
|
assert_nothing_raised do
|
265
|
-
MuchStub::Stub.new(@myobj, :myargs).with(1,2){ "myargs" }
|
314
|
+
MuchStub::Stub.new(@myobj, :myargs).with(1, 2){ "myargs" }
|
266
315
|
end
|
267
316
|
assert_nothing_raised do
|
268
317
|
MuchStub::Stub.new(@myobj, :myargs).with(1){ "myargs" }
|
269
318
|
end
|
270
319
|
|
271
320
|
assert_raises(MuchStub::StubArityError) do
|
272
|
-
MuchStub::Stub.new(@myobj, :myvalargs).with
|
321
|
+
MuchStub::Stub.new(@myobj, :myvalargs).with{ "myvalargs" }
|
273
322
|
end
|
274
323
|
assert_raises(MuchStub::StubArityError) do
|
275
324
|
MuchStub::Stub.new(@myobj, :myvalargs).with(1){ "myvalargs" }
|
276
325
|
end
|
277
326
|
assert_nothing_raised do
|
278
|
-
MuchStub::Stub.new(@myobj, :myvalargs).with(1,2){ "myvalargs" }
|
327
|
+
MuchStub::Stub.new(@myobj, :myvalargs).with(1, 2){ "myvalargs" }
|
279
328
|
end
|
280
329
|
assert_nothing_raised do
|
281
|
-
MuchStub::Stub.new(@myobj, :myvalargs).with(1,2,3){ "myvalargs" }
|
330
|
+
MuchStub::Stub.new(@myobj, :myvalargs).with(1, 2, 3){ "myvalargs" }
|
282
331
|
end
|
283
332
|
end
|
284
333
|
|
@@ -292,7 +341,7 @@ module MuchStub
|
|
292
341
|
|
293
342
|
should "stub methods with required arg" do
|
294
343
|
assert_equal 1, @myobj.myval(1)
|
295
|
-
stub = MuchStub::Stub.new(@myobj, :myval
|
344
|
+
stub = MuchStub::Stub.new(@myobj, :myval, &:to_s)
|
296
345
|
assert_equal "1", @myobj.myval(1)
|
297
346
|
assert_equal "2", @myobj.myval(2)
|
298
347
|
stub.with(2){ "two" }
|
@@ -300,30 +349,36 @@ module MuchStub
|
|
300
349
|
end
|
301
350
|
|
302
351
|
should "stub methods with variable args" do
|
303
|
-
assert_equal [1,2], @myobj.myargs(1,2)
|
352
|
+
assert_equal [1, 2], @myobj.myargs(1, 2)
|
304
353
|
|
305
354
|
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)
|
355
|
+
assert_equal "1,2,3", @myobj.myargs(1, 2, 3)
|
356
|
+
stub.with(3, 4, 5){ |*args| args.join(":") }
|
357
|
+
assert_equal "3:4:5", @myobj.myargs(3, 4, 5)
|
309
358
|
|
310
|
-
stub =
|
311
|
-
|
312
|
-
|
313
|
-
|
359
|
+
stub =
|
360
|
+
MuchStub::Stub.new(@myobj, :myargs).on_call do |call|
|
361
|
+
call.args.join(",")
|
362
|
+
end
|
363
|
+
assert_equal "1,2,3", @myobj.myargs(1, 2, 3)
|
364
|
+
stub.with(3, 4, 5).on_call{ |call| call.args.join(":") }
|
365
|
+
assert_equal "3:4:5", @myobj.myargs(3, 4, 5)
|
314
366
|
end
|
315
367
|
|
316
368
|
should "stub methods with required args and variable args" do
|
317
|
-
assert_equal [1,2, [3]], @myobj.myvalargs(1,2,3)
|
369
|
+
assert_equal [1, 2, [3]], @myobj.myvalargs(1, 2, 3)
|
318
370
|
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)
|
371
|
+
assert_equal "1,2,3", @myobj.myvalargs(1, 2, 3)
|
372
|
+
stub.with(3, 4, 5){ |*args| args.join(":") }
|
373
|
+
assert_equal "3:4:5", @myobj.myvalargs(3, 4, 5)
|
322
374
|
|
323
|
-
stub =
|
324
|
-
|
325
|
-
|
326
|
-
|
375
|
+
stub =
|
376
|
+
MuchStub::Stub.new(@myobj, :myvalargs).on_call do |call|
|
377
|
+
call.args.join(",")
|
378
|
+
end
|
379
|
+
assert_equal "1,2,3", @myobj.myvalargs(1, 2, 3)
|
380
|
+
stub.with(3, 4, 5).on_call{ |call| call.args.join(":") }
|
381
|
+
assert_equal "3:4:5", @myobj.myvalargs(3, 4, 5)
|
327
382
|
end
|
328
383
|
|
329
384
|
should "stub methods that yield blocks" do
|
@@ -339,25 +394,32 @@ module MuchStub
|
|
339
394
|
end
|
340
395
|
|
341
396
|
should "stub methods even if they are not local to the object" do
|
342
|
-
mydelegatorclass =
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
397
|
+
mydelegatorclass =
|
398
|
+
Class.new do
|
399
|
+
def initialize(delegateclass)
|
400
|
+
@delegate = delegateclass.new
|
401
|
+
end
|
402
|
+
|
403
|
+
def respond_to?(meth)
|
404
|
+
@delegate.respond_to?(meth) || super
|
405
|
+
end
|
406
|
+
|
407
|
+
def method_missing(meth, *args, &block)
|
408
|
+
respond_to?(meth) ? @delegate.send(meth, *args, &block) : super
|
409
|
+
end
|
410
|
+
|
411
|
+
def respond_to_missing?(meth, _)
|
412
|
+
respond_to?(meth) || super
|
413
|
+
end
|
348
414
|
end
|
349
|
-
def method_missing(meth, *args, &block)
|
350
|
-
respond_to?(meth) ? @delegate.send(meth, *args, &block) : super
|
351
|
-
end
|
352
|
-
end
|
353
415
|
mydelegator = mydelegatorclass.new(@myclass)
|
354
416
|
|
355
|
-
assert_equal [1,2,[3]], mydelegator.myvalargs(1,2,3)
|
417
|
+
assert_equal [1, 2, [3]], mydelegator.myvalargs(1, 2, 3)
|
356
418
|
stub = MuchStub::Stub.new(mydelegator, :myvalargs){ |*args| args.inspect }
|
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)
|
419
|
+
assert_equal "[1, 2, 3]", mydelegator.myvalargs(1, 2, 3)
|
420
|
+
assert_equal "[4, 5, 6]", mydelegator.myvalargs(4, 5, 6)
|
421
|
+
stub.with(4, 5, 6){ "four-five-six" }
|
422
|
+
assert_equal "four-five-six", mydelegator.myvalargs(4, 5, 6)
|
361
423
|
end
|
362
424
|
|
363
425
|
should "call to the original method" do
|
@@ -365,46 +427,54 @@ module MuchStub
|
|
365
427
|
|
366
428
|
# no args
|
367
429
|
stub = MuchStub::Stub.new(@myobj, :mymeth){ "mymeth" }
|
368
|
-
assert_equal "mymeth", stub.call
|
369
|
-
assert_equal "meth", stub.call_method
|
430
|
+
assert_equal "mymeth", stub.call
|
431
|
+
assert_equal "meth", stub.call_method
|
370
432
|
|
371
433
|
# static args
|
372
|
-
stub = MuchStub::Stub.new(@myobj, :myval
|
373
|
-
assert_equal "1", stub.call(
|
374
|
-
assert_equal 1, stub.call_method(
|
375
|
-
assert_equal "2", stub.call(
|
376
|
-
assert_equal 2, stub.call_method(
|
434
|
+
stub = MuchStub::Stub.new(@myobj, :myval, &:to_s)
|
435
|
+
assert_equal "1", stub.call(1)
|
436
|
+
assert_equal 1, stub.call_method(1)
|
437
|
+
assert_equal "2", stub.call(2)
|
438
|
+
assert_equal 2, stub.call_method(2)
|
377
439
|
stub.with(2){ "two" }
|
378
|
-
assert_equal "two", stub.call(
|
379
|
-
assert_equal 2, stub.call_method(
|
440
|
+
assert_equal "two", stub.call(2)
|
441
|
+
assert_equal 2, stub.call_method(2)
|
380
442
|
|
381
443
|
# dynamic args
|
382
444
|
stub = MuchStub::Stub.new(@myobj, :myargs){ |*args| args.join(",") }
|
383
|
-
assert_equal "1,2",
|
384
|
-
assert_equal [1,2],
|
385
|
-
assert_equal "3,4,5", stub.call(
|
386
|
-
assert_equal [3,4,5], stub.call_method(
|
387
|
-
stub.with(3,4,5){ "three-four-five" }
|
388
|
-
assert_equal "three-four-five", stub.call(
|
389
|
-
assert_equal [3,4,5],
|
445
|
+
assert_equal "1,2", stub.call(1, 2)
|
446
|
+
assert_equal [1, 2], stub.call_method(1, 2)
|
447
|
+
assert_equal "3,4,5", stub.call(3, 4, 5)
|
448
|
+
assert_equal [3, 4, 5], stub.call_method(3, 4, 5)
|
449
|
+
stub.with(3, 4, 5){ "three-four-five" }
|
450
|
+
assert_equal "three-four-five", stub.call(3, 4, 5)
|
451
|
+
assert_equal [3, 4, 5], stub.call_method(3, 4, 5)
|
390
452
|
|
391
453
|
# mixed static/dynamic args
|
392
454
|
stub = MuchStub::Stub.new(@myobj, :myvalargs){ |*args| args.join(",") }
|
393
|
-
assert_equal "1,2,3",
|
394
|
-
assert_equal [1,2, [3]], stub.call_method(
|
395
|
-
assert_equal "3,4,5",
|
396
|
-
assert_equal [3,4,[5]],
|
397
|
-
stub.with(3,4,5){ "three-four-five" }
|
398
|
-
assert_equal "three-four-five", stub.call(
|
399
|
-
assert_equal [3,4,[5]],
|
455
|
+
assert_equal "1,2,3", stub.call(1, 2, 3)
|
456
|
+
assert_equal [1, 2, [3]], stub.call_method(1, 2, 3)
|
457
|
+
assert_equal "3,4,5", stub.call(3, 4, 5)
|
458
|
+
assert_equal [3, 4, [5]], stub.call_method(3, 4, 5)
|
459
|
+
stub.with(3, 4, 5){ "three-four-five" }
|
460
|
+
assert_equal "three-four-five", stub.call(3, 4, 5)
|
461
|
+
assert_equal [3, 4, [5]], stub.call_method(3, 4, 5)
|
462
|
+
|
463
|
+
# keyword args
|
464
|
+
stub = MuchStub::Stub.new(@myobj, :mykargs){ |**kargs| kargs.inspect }
|
465
|
+
assert_equal "{:val1=>1, :val2=>2}", stub.call(val1: 1, val2: 2)
|
466
|
+
assert_equal [1, { val2: 2 }], stub.call_method(val1: 1, val2: 2)
|
467
|
+
stub.with(val1: 3, val2: 4){ "three-four" }
|
468
|
+
assert_equal "three-four", stub.call(val1: 3, val2: 4)
|
469
|
+
assert_equal [3, { val2: 4 }], stub.call_method(val1: 3, val2: 4)
|
400
470
|
|
401
471
|
# blocks
|
402
472
|
blkcalled = false
|
403
473
|
blk = proc{ blkcalled = true }
|
404
474
|
stub = MuchStub::Stub.new(@myobj, :myblk){ blkcalled = "true" }
|
405
|
-
stub.call(
|
475
|
+
stub.call(&blk)
|
406
476
|
assert_equal "true", blkcalled
|
407
|
-
stub.call_method(
|
477
|
+
stub.call_method(&blk)
|
408
478
|
assert_equal true, blkcalled
|
409
479
|
end
|
410
480
|
|
@@ -416,16 +486,17 @@ module MuchStub
|
|
416
486
|
|
417
487
|
should "be removable" do
|
418
488
|
assert_equal 1, @myobj.myval(1)
|
419
|
-
stub = MuchStub::Stub.new(@myobj, :myval
|
489
|
+
stub = MuchStub::Stub.new(@myobj, :myval, &:to_s)
|
420
490
|
assert_equal "1", @myobj.myval(1)
|
421
491
|
stub.teardown
|
422
492
|
assert_equal 1, @myobj.myval(1)
|
423
493
|
end
|
424
494
|
|
425
495
|
should "have a readable inspect" do
|
426
|
-
|
427
|
-
|
428
|
-
|
496
|
+
exp =
|
497
|
+
"#<#{subject.class}:#{format("0x0%x", (subject.object_id << 1))}" \
|
498
|
+
" @method_name=#{subject.method_name.inspect}>"
|
499
|
+
assert_equal exp, subject.inspect
|
429
500
|
end
|
430
501
|
end
|
431
502
|
|
@@ -442,7 +513,7 @@ module MuchStub
|
|
442
513
|
subject{ @stub }
|
443
514
|
|
444
515
|
should "not raise a stub error when called" do
|
445
|
-
assert_nothing_raised{ @stub.call(
|
516
|
+
assert_nothing_raised{ @stub.call(@arg) }
|
446
517
|
end
|
447
518
|
end
|
448
519
|
|
@@ -465,7 +536,8 @@ module MuchStub
|
|
465
536
|
assert_equal "child", @child_class.new(1, 2)
|
466
537
|
end
|
467
538
|
|
468
|
-
should "not raise any errors when tearing down the parent before the
|
539
|
+
should "not raise any errors when tearing down the parent before the "\
|
540
|
+
"child" do
|
469
541
|
assert_nothing_raised do
|
470
542
|
@parent_stub.teardown
|
471
543
|
@child_stub.teardown
|
@@ -486,9 +558,9 @@ module MuchStub
|
|
486
558
|
class ParameterListTests < UnitTests
|
487
559
|
desc "ParameterList"
|
488
560
|
setup do
|
489
|
-
many_args = (0..ParameterList::LETTERS.size).map
|
561
|
+
many_args = (0..ParameterList::LETTERS.size).map{
|
490
562
|
Assert::Factory.string
|
491
|
-
|
563
|
+
}.join(", ")
|
492
564
|
@object = Class.new
|
493
565
|
# use `class_eval` with string to easily define methods with many params
|
494
566
|
@object.class_eval <<-methods
|
@@ -505,7 +577,7 @@ module MuchStub
|
|
505
577
|
end
|
506
578
|
|
507
579
|
should "build a parameter list for a method that takes any args" do
|
508
|
-
assert_equal "*
|
580
|
+
assert_equal "*pargs, **kargs, &block", subject.new(@object, "anyargs")
|
509
581
|
end
|
510
582
|
|
511
583
|
should "build a parameter list for a method that takes many args" do
|
@@ -513,8 +585,10 @@ module MuchStub
|
|
513
585
|
assert_equal expected, subject.new(@object, "manyargs")
|
514
586
|
end
|
515
587
|
|
516
|
-
should "build a parameter list for a method that takes a minimum number
|
517
|
-
|
588
|
+
should "build a parameter list for a method that takes a minimum number "\
|
589
|
+
"of args" do
|
590
|
+
expected =
|
591
|
+
"#{ParameterList::LETTERS.join(", ")}, aa, *pargs, **kargs, &block"
|
518
592
|
assert_equal expected, subject.new(@object, "minargs")
|
519
593
|
end
|
520
594
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: much-stub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kelly Redding
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-01-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: assert
|
@@ -17,14 +17,28 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 2.19.
|
20
|
+
version: 2.19.7
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 2.19.
|
27
|
+
version: 2.19.7
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: much-style-guide
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 0.6.7
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: 0.6.7
|
28
42
|
description: Stubbing API for replacing method calls on objects in test runs.
|
29
43
|
email:
|
30
44
|
- kelly@kellyredding.com
|
@@ -34,6 +48,10 @@ extensions: []
|
|
34
48
|
extra_rdoc_files: []
|
35
49
|
files:
|
36
50
|
- ".gitignore"
|
51
|
+
- ".l.yml"
|
52
|
+
- ".rubocop.yml"
|
53
|
+
- ".ruby-version"
|
54
|
+
- ".t.yml"
|
37
55
|
- Gemfile
|
38
56
|
- LICENSE
|
39
57
|
- README.md
|
@@ -60,7 +78,7 @@ require_paths:
|
|
60
78
|
- lib
|
61
79
|
required_ruby_version: !ruby/object:Gem::Requirement
|
62
80
|
requirements:
|
63
|
-
- - "
|
81
|
+
- - ">="
|
64
82
|
- !ruby/object:Gem::Version
|
65
83
|
version: '2.5'
|
66
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
@@ -69,7 +87,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
87
|
- !ruby/object:Gem::Version
|
70
88
|
version: '0'
|
71
89
|
requirements: []
|
72
|
-
rubygems_version: 3.
|
90
|
+
rubygems_version: 3.3.5
|
73
91
|
signing_key:
|
74
92
|
specification_version: 4
|
75
93
|
summary: Stubbing API for replacing method calls on objects in test runs.
|