transpec 0.2.6 → 1.0.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +10 -0
- data/README.md +111 -56
- data/README.md.erb +117 -62
- data/lib/transpec/ast/node.rb +41 -0
- data/lib/transpec/base_rewriter.rb +55 -0
- data/lib/transpec/cli.rb +43 -153
- data/lib/transpec/configuration.rb +13 -9
- data/lib/transpec/{rewriter.rb → converter.rb} +44 -71
- data/lib/transpec/dynamic_analyzer/rewriter.rb +94 -0
- data/lib/transpec/dynamic_analyzer/runtime_data.rb +27 -0
- data/lib/transpec/dynamic_analyzer.rb +166 -0
- data/lib/transpec/file_finder.rb +53 -0
- data/lib/transpec/option_parser.rb +166 -0
- data/lib/transpec/{context.rb → static_context_inspector.rb} +2 -2
- data/lib/transpec/syntax/be_close.rb +7 -9
- data/lib/transpec/syntax/double.rb +6 -10
- data/lib/transpec/syntax/expect.rb +35 -0
- data/lib/transpec/syntax/have.rb +195 -0
- data/lib/transpec/syntax/method_stub.rb +22 -27
- data/lib/transpec/syntax/mixin/allow_no_message.rb +73 -0
- data/lib/transpec/syntax/mixin/any_instance.rb +22 -0
- data/lib/transpec/syntax/mixin/expectizable.rb +26 -0
- data/lib/transpec/syntax/mixin/have_matcher.rb +23 -0
- data/lib/transpec/syntax/mixin/monkey_patch.rb +37 -0
- data/lib/transpec/syntax/mixin/send.rb +109 -0
- data/lib/transpec/syntax/{matcher.rb → operator_matcher.rb} +27 -14
- data/lib/transpec/syntax/raise_error.rb +6 -10
- data/lib/transpec/syntax/rspec_configure.rb +29 -28
- data/lib/transpec/syntax/should.rb +45 -15
- data/lib/transpec/syntax/should_receive.rb +44 -16
- data/lib/transpec/syntax.rb +29 -21
- data/lib/transpec/util.rb +12 -2
- data/lib/transpec/version.rb +3 -3
- data/spec/spec_helper.rb +8 -6
- data/spec/support/cache_helper.rb +50 -0
- data/spec/support/shared_context.rb +49 -1
- data/spec/transpec/ast/node_spec.rb +65 -0
- data/spec/transpec/cli_spec.rb +33 -242
- data/spec/transpec/commit_message_spec.rb +2 -2
- data/spec/transpec/configuration_spec.rb +12 -8
- data/spec/transpec/{rewriter_spec.rb → converter_spec.rb} +198 -148
- data/spec/transpec/dynamic_analyzer/rewriter_spec.rb +183 -0
- data/spec/transpec/dynamic_analyzer_spec.rb +164 -0
- data/spec/transpec/file_finder_spec.rb +118 -0
- data/spec/transpec/option_parser_spec.rb +185 -0
- data/spec/transpec/{context_spec.rb → static_context_inspector_spec.rb} +27 -12
- data/spec/transpec/syntax/be_close_spec.rb +8 -4
- data/spec/transpec/syntax/double_spec.rb +105 -12
- data/spec/transpec/syntax/expect_spec.rb +83 -0
- data/spec/transpec/syntax/have_spec.rb +599 -0
- data/spec/transpec/syntax/method_stub_spec.rb +276 -115
- data/spec/transpec/syntax/{matcher_spec.rb → operator_matcher_spec.rb} +277 -98
- data/spec/transpec/syntax/raise_error_spec.rb +92 -46
- data/spec/transpec/syntax/should_receive_spec.rb +298 -92
- data/spec/transpec/syntax/should_spec.rb +230 -44
- data/spec/transpec/util_spec.rb +2 -9
- data/tasks/lib/transpec_demo.rb +1 -1
- data/tasks/lib/transpec_test.rb +5 -7
- data/tasks/test.rake +5 -1
- data/transpec.gemspec +1 -1
- metadata +46 -22
- data/lib/transpec/syntax/able_to_allow_no_message.rb +0 -73
- data/lib/transpec/syntax/able_to_target_any_instance.rb +0 -24
- data/lib/transpec/syntax/expectizable.rb +0 -27
- data/lib/transpec/syntax/send_node_syntax.rb +0 -57
@@ -14,12 +14,15 @@ module Transpec
|
|
14
14
|
return MethodStub.new(
|
15
15
|
node,
|
16
16
|
ancestor_nodes,
|
17
|
-
source_rewriter
|
17
|
+
source_rewriter,
|
18
|
+
runtime_data
|
18
19
|
)
|
19
20
|
end
|
20
21
|
fail 'No method stub node is found!'
|
21
22
|
end
|
22
23
|
|
24
|
+
let(:runtime_data) { nil }
|
25
|
+
|
23
26
|
let(:record) { method_stub_object.report.records.first }
|
24
27
|
|
25
28
|
describe '.target_node?' do
|
@@ -36,8 +39,10 @@ module Transpec
|
|
36
39
|
context 'when #stub node is passed' do
|
37
40
|
let(:source) do
|
38
41
|
<<-END
|
39
|
-
|
40
|
-
|
42
|
+
describe 'example' do
|
43
|
+
it 'responds to #foo' do
|
44
|
+
subject.stub(:foo)
|
45
|
+
end
|
41
46
|
end
|
42
47
|
END
|
43
48
|
end
|
@@ -47,31 +52,44 @@ module Transpec
|
|
47
52
|
end
|
48
53
|
end
|
49
54
|
|
50
|
-
context '
|
51
|
-
|
52
|
-
<<-END
|
53
|
-
it "is not RSpec's #stub" do
|
54
|
-
::Typhoeus.stub(url, :method => method).and_return(response)
|
55
|
-
end
|
56
|
-
END
|
57
|
-
end
|
55
|
+
context 'with runtime information' do
|
56
|
+
include_context 'dynamic analysis objects'
|
58
57
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
58
|
+
context "when RSpec's #stub node is passed" do
|
59
|
+
let(:source) do
|
60
|
+
<<-END
|
61
|
+
describe 'example' do
|
62
|
+
it 'responds to #foo' do
|
63
|
+
subject.stub(:foo)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
END
|
67
|
+
end
|
63
68
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
it "is not RSpec's #stub" do
|
68
|
-
::Excon.stub({}, {:body => 'body', :status => 200})
|
69
|
-
end
|
70
|
-
END
|
69
|
+
it 'returns true' do
|
70
|
+
MethodStub.target_node?(send_node, runtime_data).should be_true
|
71
|
+
end
|
71
72
|
end
|
72
73
|
|
73
|
-
|
74
|
-
|
74
|
+
context 'when another #stub node is passed' do
|
75
|
+
let(:source) do
|
76
|
+
<<-END
|
77
|
+
module AnotherStubProvider
|
78
|
+
def self.stub(*args)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe 'example' do
|
83
|
+
it "is not RSpec's #stub" do
|
84
|
+
AnotherStubProvider.stub(:something)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
END
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'returns false' do
|
91
|
+
MethodStub.target_node?(send_node, runtime_data).should be_false
|
92
|
+
end
|
75
93
|
end
|
76
94
|
end
|
77
95
|
end
|
@@ -79,8 +97,10 @@ module Transpec
|
|
79
97
|
describe '#method_name' do
|
80
98
|
let(:source) do
|
81
99
|
<<-END
|
82
|
-
|
83
|
-
|
100
|
+
describe 'example' do
|
101
|
+
it 'responds to #foo' do
|
102
|
+
subject.stub(:foo)
|
103
|
+
end
|
84
104
|
end
|
85
105
|
END
|
86
106
|
end
|
@@ -91,57 +111,127 @@ module Transpec
|
|
91
111
|
end
|
92
112
|
|
93
113
|
describe '#allowize!' do
|
94
|
-
before do
|
95
|
-
method_stub_object.context.stub(:allow_to_receive_available?).and_return(true)
|
96
|
-
method_stub_object.allowize!
|
97
|
-
end
|
98
|
-
|
99
114
|
[:stub, :stub!].each do |method|
|
100
115
|
context "when it is `subject.#{method}(:method)` form" do
|
101
116
|
let(:source) do
|
102
117
|
<<-END
|
103
|
-
|
104
|
-
|
118
|
+
describe 'example' do
|
119
|
+
it 'responds to #foo' do
|
120
|
+
subject.#{method}(:foo)
|
121
|
+
end
|
105
122
|
end
|
106
123
|
END
|
107
124
|
end
|
108
125
|
|
109
126
|
let(:expected_source) do
|
110
127
|
<<-END
|
111
|
-
|
112
|
-
|
128
|
+
describe 'example' do
|
129
|
+
it 'responds to #foo' do
|
130
|
+
allow(subject).to receive(:foo)
|
131
|
+
end
|
113
132
|
end
|
114
133
|
END
|
115
134
|
end
|
116
135
|
|
117
136
|
it 'converts into `allow(subject).to receive(:method)` form' do
|
137
|
+
method_stub_object.allowize!
|
118
138
|
rewritten_source.should == expected_source
|
119
139
|
end
|
120
140
|
|
121
141
|
it "adds record \"`obj.#{method}(:message)` -> `allow(obj).to receive(:message)`\"" do
|
142
|
+
method_stub_object.allowize!
|
122
143
|
record.original_syntax.should == "obj.#{method}(:message)"
|
123
144
|
record.converted_syntax.should == 'allow(obj).to receive(:message)'
|
124
145
|
end
|
146
|
+
|
147
|
+
context 'and #allow and #receive are not available in the context' do
|
148
|
+
context 'and the context is determinable statically' do
|
149
|
+
let(:source) do
|
150
|
+
<<-END
|
151
|
+
describe 'example' do
|
152
|
+
class TestRunner
|
153
|
+
def run
|
154
|
+
'something'.#{method}(:foo)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
it 'responds to #foo' do
|
159
|
+
TestRunner.new.run
|
160
|
+
end
|
161
|
+
end
|
162
|
+
END
|
163
|
+
end
|
164
|
+
|
165
|
+
context 'with runtime information' do
|
166
|
+
include_context 'dynamic analysis objects'
|
167
|
+
|
168
|
+
it 'raises InvalidContextError' do
|
169
|
+
-> { method_stub_object.allowize! }.should raise_error(InvalidContextError)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
context 'without runtime information' do
|
174
|
+
it 'raises InvalidContextError' do
|
175
|
+
-> { method_stub_object.allowize! }.should raise_error(InvalidContextError)
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
context 'and the context is not determinable statically' do
|
181
|
+
let(:source) do
|
182
|
+
<<-END
|
183
|
+
def my_eval(&block)
|
184
|
+
Object.new.instance_eval(&block)
|
185
|
+
end
|
186
|
+
|
187
|
+
describe 'example' do
|
188
|
+
it 'responds to #foo' do
|
189
|
+
my_eval { 'something'.#{method}(:foo) }
|
190
|
+
end
|
191
|
+
end
|
192
|
+
END
|
193
|
+
end
|
194
|
+
|
195
|
+
context 'with runtime information' do
|
196
|
+
include_context 'dynamic analysis objects'
|
197
|
+
|
198
|
+
it 'raises InvalidContextError' do
|
199
|
+
-> { method_stub_object.allowize! }.should raise_error(InvalidContextError)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
context 'without runtime information' do
|
204
|
+
it 'does not raise InvalidContextError' do
|
205
|
+
-> { method_stub_object.allowize! }.should_not raise_error
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
125
210
|
end
|
126
211
|
|
127
212
|
context "when it is `subject.#{method}(:method).and_return(value)` form" do
|
128
213
|
let(:source) do
|
129
214
|
<<-END
|
130
|
-
|
131
|
-
|
215
|
+
describe 'example' do
|
216
|
+
it 'responds to #foo and returns 1' do
|
217
|
+
subject.#{method}(:foo).and_return(1)
|
218
|
+
end
|
132
219
|
end
|
133
220
|
END
|
134
221
|
end
|
135
222
|
|
136
223
|
let(:expected_source) do
|
137
224
|
<<-END
|
138
|
-
|
139
|
-
|
225
|
+
describe 'example' do
|
226
|
+
it 'responds to #foo and returns 1' do
|
227
|
+
allow(subject).to receive(:foo).and_return(1)
|
228
|
+
end
|
140
229
|
end
|
141
230
|
END
|
142
231
|
end
|
143
232
|
|
144
233
|
it 'converts into `allow(subject).to receive(:method).and_return(value)` form' do
|
234
|
+
method_stub_object.allowize!
|
145
235
|
rewritten_source.should == expected_source
|
146
236
|
end
|
147
237
|
end
|
@@ -149,21 +239,26 @@ module Transpec
|
|
149
239
|
context "when it is `subject.#{method}(:method).and_raise(RuntimeError)` form" do
|
150
240
|
let(:source) do
|
151
241
|
<<-END
|
152
|
-
|
153
|
-
|
242
|
+
describe 'example' do
|
243
|
+
it 'responds to #foo and raises RuntimeError' do
|
244
|
+
subject.#{method}(:foo).and_raise(RuntimeError)
|
245
|
+
end
|
154
246
|
end
|
155
247
|
END
|
156
248
|
end
|
157
249
|
|
158
250
|
let(:expected_source) do
|
159
251
|
<<-END
|
160
|
-
|
161
|
-
|
252
|
+
describe 'example' do
|
253
|
+
it 'responds to #foo and raises RuntimeError' do
|
254
|
+
allow(subject).to receive(:foo).and_raise(RuntimeError)
|
255
|
+
end
|
162
256
|
end
|
163
257
|
END
|
164
258
|
end
|
165
259
|
|
166
260
|
it 'converts into `allow(subject).to receive(:method).and_raise(RuntimeError)` form' do
|
261
|
+
method_stub_object.allowize!
|
167
262
|
rewritten_source.should == expected_source
|
168
263
|
end
|
169
264
|
end
|
@@ -171,31 +266,36 @@ module Transpec
|
|
171
266
|
context 'when the statement continues over multi lines' do
|
172
267
|
let(:source) do
|
173
268
|
<<-END
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
269
|
+
describe 'example' do
|
270
|
+
it 'responds to #foo and returns 1' do
|
271
|
+
subject.#{method}(
|
272
|
+
:foo
|
273
|
+
).
|
274
|
+
and_return(
|
275
|
+
1
|
276
|
+
)
|
277
|
+
end
|
181
278
|
end
|
182
279
|
END
|
183
280
|
end
|
184
281
|
|
185
282
|
let(:expected_source) do
|
186
283
|
<<-END
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
284
|
+
describe 'example' do
|
285
|
+
it 'responds to #foo and returns 1' do
|
286
|
+
allow(subject).to receive(
|
287
|
+
:foo
|
288
|
+
).
|
289
|
+
and_return(
|
290
|
+
1
|
291
|
+
)
|
292
|
+
end
|
194
293
|
end
|
195
294
|
END
|
196
295
|
end
|
197
296
|
|
198
297
|
it 'keeps the style as far as possible' do
|
298
|
+
method_stub_object.allowize!
|
199
299
|
rewritten_source.should == expected_source
|
200
300
|
end
|
201
301
|
end
|
@@ -203,26 +303,32 @@ module Transpec
|
|
203
303
|
context "when it is `subject.#{method}(:method => value)` form" do
|
204
304
|
let(:source) do
|
205
305
|
<<-END
|
206
|
-
|
207
|
-
|
306
|
+
describe 'example' do
|
307
|
+
it 'responds to #foo and returns 1' do
|
308
|
+
subject.#{method}(:foo => 1)
|
309
|
+
end
|
208
310
|
end
|
209
311
|
END
|
210
312
|
end
|
211
313
|
|
212
314
|
let(:expected_source) do
|
213
315
|
<<-END
|
214
|
-
|
215
|
-
|
316
|
+
describe 'example' do
|
317
|
+
it 'responds to #foo and returns 1' do
|
318
|
+
allow(subject).to receive(:foo).and_return(1)
|
319
|
+
end
|
216
320
|
end
|
217
321
|
END
|
218
322
|
end
|
219
323
|
|
220
324
|
it 'converts into `allow(subject).to receive(:method).and_return(value)` form' do
|
325
|
+
method_stub_object.allowize!
|
221
326
|
rewritten_source.should == expected_source
|
222
327
|
end
|
223
328
|
|
224
329
|
it 'adds record ' +
|
225
330
|
"\"`obj.#{method}(:message => value)` -> `allow(obj).to receive(:message).and_return(value)`\"" do
|
331
|
+
method_stub_object.allowize!
|
226
332
|
record.original_syntax.should == "obj.#{method}(:message => value)"
|
227
333
|
record.converted_syntax.should == 'allow(obj).to receive(:message).and_return(value)'
|
228
334
|
end
|
@@ -231,26 +337,32 @@ module Transpec
|
|
231
337
|
context "when it is `subject.#{method}(method: value)` form" do
|
232
338
|
let(:source) do
|
233
339
|
<<-END
|
234
|
-
|
235
|
-
|
340
|
+
describe 'example' do
|
341
|
+
it 'responds to #foo and returns 1' do
|
342
|
+
subject.#{method}(foo: 1)
|
343
|
+
end
|
236
344
|
end
|
237
345
|
END
|
238
346
|
end
|
239
347
|
|
240
348
|
let(:expected_source) do
|
241
349
|
<<-END
|
242
|
-
|
243
|
-
|
350
|
+
describe 'example' do
|
351
|
+
it 'responds to #foo and returns 1' do
|
352
|
+
allow(subject).to receive(:foo).and_return(1)
|
353
|
+
end
|
244
354
|
end
|
245
355
|
END
|
246
356
|
end
|
247
357
|
|
248
358
|
it 'converts into `allow(subject).to receive(:method).and_return(value)` form' do
|
359
|
+
method_stub_object.allowize!
|
249
360
|
rewritten_source.should == expected_source
|
250
361
|
end
|
251
362
|
|
252
363
|
it 'adds record ' +
|
253
364
|
"\"`obj.#{method}(:message => value)` -> `allow(obj).to receive(:message).and_return(value)`\"" do
|
365
|
+
method_stub_object.allowize!
|
254
366
|
record.original_syntax.should == "obj.#{method}(:message => value)"
|
255
367
|
record.converted_syntax.should == 'allow(obj).to receive(:message).and_return(value)'
|
256
368
|
end
|
@@ -259,28 +371,34 @@ module Transpec
|
|
259
371
|
context "when it is `subject.#{method}(:a_method => a_value, b_method => b_value)` form" do
|
260
372
|
let(:source) do
|
261
373
|
<<-END
|
262
|
-
|
263
|
-
|
374
|
+
describe 'example' do
|
375
|
+
it 'responds to #foo and returns 1, and responds to #bar and returns 2' do
|
376
|
+
subject.#{method}(:foo => 1, :bar => 2)
|
377
|
+
end
|
264
378
|
end
|
265
379
|
END
|
266
380
|
end
|
267
381
|
|
268
382
|
let(:expected_source) do
|
269
383
|
<<-END
|
270
|
-
|
271
|
-
|
272
|
-
|
384
|
+
describe 'example' do
|
385
|
+
it 'responds to #foo and returns 1, and responds to #bar and returns 2' do
|
386
|
+
allow(subject).to receive(:foo).and_return(1)
|
387
|
+
allow(subject).to receive(:bar).and_return(2)
|
388
|
+
end
|
273
389
|
end
|
274
390
|
END
|
275
391
|
end
|
276
392
|
|
277
393
|
it 'converts into `allow(subject).to receive(:a_method).and_return(a_value)` ' +
|
278
394
|
'and `allow(subject).to receive(:b_method).and_return(b_value)` form' do
|
395
|
+
method_stub_object.allowize!
|
279
396
|
rewritten_source.should == expected_source
|
280
397
|
end
|
281
398
|
|
282
399
|
it 'adds record ' +
|
283
400
|
"\"`obj.#{method}(:message => value)` -> `allow(obj).to receive(:message).and_return(value)`\"" do
|
401
|
+
method_stub_object.allowize!
|
284
402
|
record.original_syntax.should == "obj.#{method}(:message => value)"
|
285
403
|
record.converted_syntax.should == 'allow(obj).to receive(:message).and_return(value)'
|
286
404
|
end
|
@@ -288,28 +406,33 @@ module Transpec
|
|
288
406
|
context 'when the statement continues over multi lines' do
|
289
407
|
let(:source) do
|
290
408
|
<<-END
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
409
|
+
describe 'example' do
|
410
|
+
it 'responds to #foo and returns 1, and responds to #bar and returns 2' do
|
411
|
+
subject
|
412
|
+
.#{method}(
|
413
|
+
:foo => 1,
|
414
|
+
:bar => 2
|
415
|
+
)
|
416
|
+
end
|
297
417
|
end
|
298
418
|
END
|
299
419
|
end
|
300
420
|
|
301
421
|
let(:expected_source) do
|
302
422
|
<<-END
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
423
|
+
describe 'example' do
|
424
|
+
it 'responds to #foo and returns 1, and responds to #bar and returns 2' do
|
425
|
+
allow(subject)
|
426
|
+
.to receive(:foo).and_return(1)
|
427
|
+
allow(subject)
|
428
|
+
.to receive(:bar).and_return(2)
|
429
|
+
end
|
308
430
|
end
|
309
431
|
END
|
310
432
|
end
|
311
433
|
|
312
434
|
it 'keeps the style except around the hash' do
|
435
|
+
method_stub_object.allowize!
|
313
436
|
rewritten_source.should == expected_source
|
314
437
|
end
|
315
438
|
end
|
@@ -320,17 +443,21 @@ module Transpec
|
|
320
443
|
context "when it is `subject.#{method}(:method)` form" do
|
321
444
|
let(:source) do
|
322
445
|
<<-END
|
323
|
-
|
324
|
-
|
446
|
+
describe 'example' do
|
447
|
+
it 'does not respond to #foo' do
|
448
|
+
subject.#{method}(:foo)
|
449
|
+
end
|
325
450
|
end
|
326
451
|
END
|
327
452
|
end
|
328
453
|
|
329
454
|
it 'does nothing' do
|
455
|
+
method_stub_object.allowize!
|
330
456
|
rewritten_source.should == source
|
331
457
|
end
|
332
458
|
|
333
459
|
it 'reports nothing' do
|
460
|
+
method_stub_object.allowize!
|
334
461
|
method_stub_object.report.records.should be_empty
|
335
462
|
end
|
336
463
|
end
|
@@ -340,26 +467,32 @@ module Transpec
|
|
340
467
|
context "when it is `SomeClass.any_instance.#{method}(:method)` form" do
|
341
468
|
let(:source) do
|
342
469
|
<<-END
|
343
|
-
|
344
|
-
|
470
|
+
describe 'example' do
|
471
|
+
it 'responds to #foo' do
|
472
|
+
SomeClass.any_instance.#{method}(:foo)
|
473
|
+
end
|
345
474
|
end
|
346
475
|
END
|
347
476
|
end
|
348
477
|
|
349
478
|
let(:expected_source) do
|
350
479
|
<<-END
|
351
|
-
|
352
|
-
|
480
|
+
describe 'example' do
|
481
|
+
it 'responds to #foo' do
|
482
|
+
allow_any_instance_of(SomeClass).to receive(:foo)
|
483
|
+
end
|
353
484
|
end
|
354
485
|
END
|
355
486
|
end
|
356
487
|
|
357
488
|
it 'converts into `allow_any_instance_of(SomeClass).to receive(:method)` form' do
|
489
|
+
method_stub_object.allowize!
|
358
490
|
rewritten_source.should == expected_source
|
359
491
|
end
|
360
492
|
|
361
493
|
it "adds record \"`SomeClass.any_instance.#{method}(:message)` " +
|
362
494
|
'-> `allow_any_instance_of(obj).to receive(:message)`"' do
|
495
|
+
method_stub_object.allowize!
|
363
496
|
record.original_syntax.should == "SomeClass.any_instance.#{method}(:message)"
|
364
497
|
record.converted_syntax.should == 'allow_any_instance_of(SomeClass).to receive(:message)'
|
365
498
|
end
|
@@ -370,26 +503,30 @@ module Transpec
|
|
370
503
|
context "when it is `SomeClass.any_instance.#{method}(:method)` form" do
|
371
504
|
let(:source) do
|
372
505
|
<<-END
|
373
|
-
|
374
|
-
|
506
|
+
describe 'example' do
|
507
|
+
it 'does not respond to #foo' do
|
508
|
+
SomeClass.any_instance.#{method}(:foo)
|
509
|
+
end
|
375
510
|
end
|
376
511
|
END
|
377
512
|
end
|
378
513
|
|
379
514
|
it 'does nothing' do
|
515
|
+
method_stub_object.allowize!
|
380
516
|
rewritten_source.should == source
|
381
517
|
end
|
382
518
|
|
383
519
|
it 'reports nothing' do
|
520
|
+
method_stub_object.allowize!
|
384
521
|
method_stub_object.report.records.should be_empty
|
385
522
|
end
|
386
523
|
end
|
387
524
|
end
|
388
525
|
end
|
389
526
|
|
390
|
-
describe '#
|
527
|
+
describe '#convert_deprecated_method!' do
|
391
528
|
before do
|
392
|
-
method_stub_object.
|
529
|
+
method_stub_object.convert_deprecated_method!
|
393
530
|
end
|
394
531
|
|
395
532
|
[
|
@@ -399,16 +536,20 @@ module Transpec
|
|
399
536
|
context "when it is ##{method}" do
|
400
537
|
let(:source) do
|
401
538
|
<<-END
|
402
|
-
|
403
|
-
|
539
|
+
describe 'example' do
|
540
|
+
it '#{description} #foo' do
|
541
|
+
subject.#{method}(:foo)
|
542
|
+
end
|
404
543
|
end
|
405
544
|
END
|
406
545
|
end
|
407
546
|
|
408
547
|
let(:expected_source) do
|
409
548
|
<<-END
|
410
|
-
|
411
|
-
|
549
|
+
describe 'example' do
|
550
|
+
it '#{description} #foo' do
|
551
|
+
subject.#{replacement_method}(:foo)
|
552
|
+
end
|
412
553
|
end
|
413
554
|
END
|
414
555
|
end
|
@@ -432,8 +573,10 @@ module Transpec
|
|
432
573
|
context "when it is ##{method}" do
|
433
574
|
let(:source) do
|
434
575
|
<<-END
|
435
|
-
|
436
|
-
|
576
|
+
describe 'example' do
|
577
|
+
it '#{description} #foo' do
|
578
|
+
subject.#{method}(:foo)
|
579
|
+
end
|
437
580
|
end
|
438
581
|
END
|
439
582
|
end
|
@@ -455,8 +598,10 @@ module Transpec
|
|
455
598
|
context 'when it is `subject.stub(:method).any_number_of_times` form' do
|
456
599
|
let(:source) do
|
457
600
|
<<-END
|
458
|
-
|
459
|
-
|
601
|
+
describe 'example' do
|
602
|
+
it 'responds to #foo' do
|
603
|
+
subject.stub(:foo).any_number_of_times
|
604
|
+
end
|
460
605
|
end
|
461
606
|
END
|
462
607
|
end
|
@@ -467,8 +612,10 @@ module Transpec
|
|
467
612
|
context 'when it is `subject.stub(:method).with(arg).any_number_of_times` form' do
|
468
613
|
let(:source) do
|
469
614
|
<<-END
|
470
|
-
|
471
|
-
|
615
|
+
describe 'example' do
|
616
|
+
it 'responds to #foo with 1' do
|
617
|
+
subject.stub(:foo).with(1).any_number_of_times
|
618
|
+
end
|
472
619
|
end
|
473
620
|
END
|
474
621
|
end
|
@@ -479,8 +626,10 @@ module Transpec
|
|
479
626
|
context 'when it is `subject.stub(:method).at_least(0)` form' do
|
480
627
|
let(:source) do
|
481
628
|
<<-END
|
482
|
-
|
483
|
-
|
629
|
+
describe 'example' do
|
630
|
+
it 'responds to #foo' do
|
631
|
+
subject.stub(:foo).at_least(0)
|
632
|
+
end
|
484
633
|
end
|
485
634
|
END
|
486
635
|
end
|
@@ -491,8 +640,10 @@ module Transpec
|
|
491
640
|
context 'when it is `subject.stub(:method)` form' do
|
492
641
|
let(:source) do
|
493
642
|
<<-END
|
494
|
-
|
495
|
-
|
643
|
+
describe 'example' do
|
644
|
+
it 'responds to #foo' do
|
645
|
+
subject.stub(:foo)
|
646
|
+
end
|
496
647
|
end
|
497
648
|
END
|
498
649
|
end
|
@@ -509,16 +660,20 @@ module Transpec
|
|
509
660
|
context 'when it is `subject.stub(:method).any_number_of_times` form' do
|
510
661
|
let(:source) do
|
511
662
|
<<-END
|
512
|
-
|
513
|
-
|
663
|
+
describe 'example' do
|
664
|
+
it 'responds to #foo' do
|
665
|
+
subject.stub(:foo).any_number_of_times
|
666
|
+
end
|
514
667
|
end
|
515
668
|
END
|
516
669
|
end
|
517
670
|
|
518
671
|
let(:expected_source) do
|
519
672
|
<<-END
|
520
|
-
|
521
|
-
|
673
|
+
describe 'example' do
|
674
|
+
it 'responds to #foo' do
|
675
|
+
subject.stub(:foo)
|
676
|
+
end
|
522
677
|
end
|
523
678
|
END
|
524
679
|
end
|
@@ -531,16 +686,20 @@ module Transpec
|
|
531
686
|
context 'when it is `subject.stub(:method).at_least(0)` form' do
|
532
687
|
let(:source) do
|
533
688
|
<<-END
|
534
|
-
|
535
|
-
|
689
|
+
describe 'example' do
|
690
|
+
it 'responds to #foo' do
|
691
|
+
subject.stub(:foo).at_least(0)
|
692
|
+
end
|
536
693
|
end
|
537
694
|
END
|
538
695
|
end
|
539
696
|
|
540
697
|
let(:expected_source) do
|
541
698
|
<<-END
|
542
|
-
|
543
|
-
|
699
|
+
describe 'example' do
|
700
|
+
it 'responds to #foo' do
|
701
|
+
subject.stub(:foo)
|
702
|
+
end
|
544
703
|
end
|
545
704
|
END
|
546
705
|
end
|
@@ -553,8 +712,10 @@ module Transpec
|
|
553
712
|
context 'when it is `subject.stub(:method)` form' do
|
554
713
|
let(:source) do
|
555
714
|
<<-END
|
556
|
-
|
557
|
-
|
715
|
+
describe 'example' do
|
716
|
+
it 'responds to #foo' do
|
717
|
+
subject.stub(:foo)
|
718
|
+
end
|
558
719
|
end
|
559
720
|
END
|
560
721
|
end
|