transpec 1.10.4 → 1.11.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/.rubocop.yml +3 -3
- data/CHANGELOG.md +9 -0
- data/README.md +96 -18
- data/README.md.erb +117 -51
- data/lib/transpec/base_rewriter.rb +25 -28
- data/lib/transpec/cli.rb +27 -14
- data/lib/transpec/configuration.rb +2 -1
- data/lib/transpec/converter.rb +54 -32
- data/lib/transpec/dynamic_analyzer/helper.rb.erb +44 -0
- data/lib/transpec/dynamic_analyzer/node_util.rb +17 -0
- data/lib/transpec/dynamic_analyzer/rewriter.rb +12 -4
- data/lib/transpec/dynamic_analyzer/runtime_data.rb +3 -4
- data/lib/transpec/dynamic_analyzer.rb +14 -52
- data/lib/transpec/option_parser.rb +89 -81
- data/lib/transpec/processed_source.rb +48 -0
- data/lib/transpec/record.rb +2 -2
- data/lib/transpec/report.rb +5 -1
- data/lib/transpec/rspec_dsl.rb +12 -2
- data/lib/transpec/rspec_version.rb +8 -7
- data/lib/transpec/spec_suite.rb +114 -0
- data/lib/transpec/syntax/example.rb +4 -20
- data/lib/transpec/syntax/example_group.rb +38 -0
- data/lib/transpec/syntax/have.rb +6 -9
- data/lib/transpec/syntax/its.rb +5 -7
- data/lib/transpec/syntax/method_stub.rb +12 -13
- data/lib/transpec/syntax/mixin/any_instance_block.rb +14 -6
- data/lib/transpec/syntax/mixin/context_sensitive.rb +41 -0
- data/lib/transpec/syntax/mixin/matcher_owner.rb +16 -26
- data/lib/transpec/syntax/mixin/monkey_patch_any_instance.rb +1 -1
- data/lib/transpec/syntax/mixin/no_message_allowance.rb +2 -2
- data/lib/transpec/syntax/mixin/useless_and_return.rb +2 -2
- data/lib/transpec/syntax/oneliner_should.rb +9 -13
- data/lib/transpec/syntax/operator.rb +3 -7
- data/lib/transpec/syntax/pending.rb +4 -20
- data/lib/transpec/syntax/rspec_configure/configuration_modification.rb +86 -0
- data/lib/transpec/syntax/rspec_configure/framework.rb +45 -86
- data/lib/transpec/syntax/rspec_configure.rb +18 -6
- data/lib/transpec/syntax/should.rb +3 -5
- data/lib/transpec/syntax/should_receive.rb +1 -1
- data/lib/transpec/syntax.rb +8 -0
- data/lib/transpec/util.rb +0 -8
- data/lib/transpec/version.rb +2 -2
- data/spec/acceptance/configuration_modification_spec.rb +132 -0
- data/spec/acceptance/conversion_spec.rb +114 -0
- data/spec/support/shared_context.rb +6 -12
- data/spec/transpec/cli_spec.rb +21 -23
- data/spec/transpec/configuration_spec.rb +2 -1
- data/spec/transpec/converter_spec.rb +292 -213
- data/spec/transpec/dynamic_analyzer/rewriter_spec.rb +3 -3
- data/spec/transpec/dynamic_analyzer_spec.rb +8 -2
- data/spec/transpec/option_parser_spec.rb +42 -4
- data/spec/transpec/processed_source_spec.rb +67 -0
- data/spec/transpec/rspec_version_spec.rb +8 -2
- data/spec/transpec/spec_suite_spec.rb +107 -0
- data/spec/transpec/syntax/allow_spec.rb +9 -27
- data/spec/transpec/syntax/example_group_spec.rb +172 -0
- data/spec/transpec/syntax/expect_spec.rb +18 -54
- data/spec/transpec/syntax/have_spec.rb +35 -14
- data/spec/transpec/syntax/its_spec.rb +27 -7
- data/spec/transpec/syntax/method_stub_spec.rb +31 -8
- data/spec/transpec/syntax/oneliner_should_spec.rb +22 -131
- data/spec/transpec/syntax/rspec_configure_spec.rb +118 -15
- data/spec/transpec/syntax/should_spec.rb +51 -82
- data/tasks/fixtures/guard/COMMIT_EDITMSG +80 -0
- data/tasks/fixtures/mail/COMMIT_EDITMSG +84 -0
- data/tasks/fixtures/twitter/COMMIT_EDITMSG +36 -0
- data/tasks/lib/transpec_test.rb +23 -2
- data/tasks/readme.rake +35 -0
- metadata +22 -4
- data/lib/transpec/parser.rb +0 -9
@@ -5,9 +5,10 @@ require 'transpec/converter'
|
|
5
5
|
|
6
6
|
module Transpec
|
7
7
|
describe Converter do
|
8
|
-
subject(:converter) { Converter.new(configuration, rspec_version) }
|
9
|
-
let(:
|
8
|
+
subject(:converter) { Converter.new(spec_suite, configuration, rspec_version) }
|
9
|
+
let(:spec_suite) { double('spec_suite', runtime_data: nil).as_null_object }
|
10
10
|
let(:configuration) { Configuration.new }
|
11
|
+
let(:rspec_version) { Transpec.required_rspec_version }
|
11
12
|
|
12
13
|
describe '#convert_file!' do
|
13
14
|
include_context 'isolated environment'
|
@@ -20,12 +21,23 @@ module Transpec
|
|
20
21
|
converter.stub(:rewrite).and_return('This is the converted spec')
|
21
22
|
end
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
context 'when a file path is passed' do
|
25
|
+
it 'overwrites the file' do
|
26
|
+
converter.convert_file!(file_path)
|
27
|
+
File.read(file_path).should == 'This is the converted spec'
|
28
|
+
end
|
26
29
|
end
|
27
30
|
|
28
|
-
context 'when
|
31
|
+
context 'when a processed source is passed' do
|
32
|
+
let(:processed_source) { ProcessedSource.parse_file(file_path) }
|
33
|
+
|
34
|
+
it 'overwrites the file that the processed source was derived from' do
|
35
|
+
converter.convert_file!(processed_source)
|
36
|
+
File.read(file_path).should == 'This is the converted spec'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'when the source is not needed to be converted' do
|
29
41
|
before do
|
30
42
|
converter.stub(:rewrite).and_return('This is a spec')
|
31
43
|
end
|
@@ -37,8 +49,8 @@ module Transpec
|
|
37
49
|
end
|
38
50
|
end
|
39
51
|
|
40
|
-
describe '#
|
41
|
-
subject { converter.
|
52
|
+
describe '#convert_source' do
|
53
|
+
subject { converter.convert_source(source) }
|
42
54
|
|
43
55
|
let(:source) do
|
44
56
|
<<-END
|
@@ -51,10 +63,26 @@ module Transpec
|
|
51
63
|
END
|
52
64
|
end
|
53
65
|
|
54
|
-
it 'dispatches
|
66
|
+
it 'dispatches conversion target standalone syntax objects to each handler method' do
|
55
67
|
converter.should_receive(:process_should).with(an_instance_of(Syntax::Should))
|
56
68
|
converter.should_receive(:process_should_receive).with(an_instance_of(Syntax::ShouldReceive))
|
57
|
-
converter.
|
69
|
+
converter.should_not_receive(:process_stub)
|
70
|
+
converter.convert_source(source)
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'dispatches conversion target non-standalone syntax objects to each handler method' do
|
74
|
+
converter.should_receive(:process_operator).with(an_instance_of(Syntax::Operator))
|
75
|
+
converter.should_not_receive(:process_have)
|
76
|
+
converter.should_not_receive(:process_raise_error)
|
77
|
+
converter.convert_source(source)
|
78
|
+
end
|
79
|
+
|
80
|
+
context 'when the source is invalid' do
|
81
|
+
let(:source) { '<' }
|
82
|
+
|
83
|
+
it 'raises Parser::SyntaxError' do
|
84
|
+
-> { converter.convert_source(source) }.should raise_error(Parser::SyntaxError)
|
85
|
+
end
|
58
86
|
end
|
59
87
|
|
60
88
|
context 'when the source has overlapped convert targets' do
|
@@ -79,7 +107,7 @@ module Transpec
|
|
79
107
|
end
|
80
108
|
|
81
109
|
before do
|
82
|
-
configuration.
|
110
|
+
configuration.convert_stub_with_hash_to_allow_to_receive_and_return = true
|
83
111
|
end
|
84
112
|
|
85
113
|
it 'converts all targets properly' do
|
@@ -87,7 +115,7 @@ module Transpec
|
|
87
115
|
end
|
88
116
|
|
89
117
|
it 'adds records for only completed conversions' do
|
90
|
-
converter.
|
118
|
+
converter.convert_source(source)
|
91
119
|
converter.report.records.count.should == 2
|
92
120
|
end
|
93
121
|
end
|
@@ -119,7 +147,7 @@ module Transpec
|
|
119
147
|
end
|
120
148
|
|
121
149
|
it 'adds the conversion error to the report' do
|
122
|
-
converter.
|
150
|
+
converter.convert_source(source)
|
123
151
|
converter.report.should have(1).conversion_error
|
124
152
|
end
|
125
153
|
end
|
@@ -136,7 +164,7 @@ module Transpec
|
|
136
164
|
before { configuration.negative_form_of_to = 'not_to' }
|
137
165
|
|
138
166
|
it 'invokes Should#expectize! with "not_to"' do
|
139
|
-
should_object.should_receive(:expectize!).with('not_to'
|
167
|
+
should_object.should_receive(:expectize!).with('not_to')
|
140
168
|
converter.process_should(should_object)
|
141
169
|
end
|
142
170
|
end
|
@@ -145,25 +173,7 @@ module Transpec
|
|
145
173
|
before { configuration.negative_form_of_to = 'to_not' }
|
146
174
|
|
147
175
|
it 'invokes Should#expectize! with "to_not"' do
|
148
|
-
should_object.should_receive(:expectize!).with('to_not'
|
149
|
-
converter.process_should(should_object)
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
context 'and Configuration#parenthesize_matcher_arg is true' do
|
154
|
-
before { configuration.parenthesize_matcher_arg = true }
|
155
|
-
|
156
|
-
it 'invokes Should#expectize! with true as second argument' do
|
157
|
-
should_object.should_receive(:expectize!).with(anything, true)
|
158
|
-
converter.process_should(should_object)
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
context 'and Configuration#parenthesize_matcher_arg is false' do
|
163
|
-
before { configuration.parenthesize_matcher_arg = false }
|
164
|
-
|
165
|
-
it 'invokes Should#expectize! with false as second argument' do
|
166
|
-
should_object.should_receive(:expectize!).with(anything, false)
|
176
|
+
should_object.should_receive(:expectize!).with('to_not')
|
167
177
|
converter.process_should(should_object)
|
168
178
|
end
|
169
179
|
end
|
@@ -177,57 +187,19 @@ module Transpec
|
|
177
187
|
converter.process_should(should_object)
|
178
188
|
end
|
179
189
|
end
|
180
|
-
|
181
|
-
context 'when Configuration#convert_have_items? is true' do
|
182
|
-
before { configuration.convert_have_items = true }
|
183
|
-
|
184
|
-
context 'and Configuration#parenthesize_matcher_arg is true' do
|
185
|
-
before { configuration.parenthesize_matcher_arg = true }
|
186
|
-
|
187
|
-
it 'invokes Have#convert_to_standard_expectation! with true' do
|
188
|
-
should_object.have_matcher.should_receive(:convert_to_standard_expectation!).with(true)
|
189
|
-
converter.process_should(should_object)
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
context 'and Configuration#parenthesize_matcher_arg is false' do
|
194
|
-
before { configuration.parenthesize_matcher_arg = false }
|
195
|
-
|
196
|
-
it 'invokes Have#convert_to_standard_expectation! with false' do
|
197
|
-
should_object.have_matcher.should_receive(:convert_to_standard_expectation!).with(false)
|
198
|
-
converter.process_should(should_object)
|
199
|
-
end
|
200
|
-
end
|
201
|
-
|
202
|
-
context 'and Configuration#convert_should? is true' do
|
203
|
-
before { configuration.convert_should = true }
|
204
|
-
|
205
|
-
it 'invokes Should#expectize! then Have#convert_to_standard_expectation!' do
|
206
|
-
should_object.should_receive(:expectize!).ordered
|
207
|
-
should_object.have_matcher.should_receive(:convert_to_standard_expectation!).ordered
|
208
|
-
converter.process_should(should_object)
|
209
|
-
end
|
210
|
-
end
|
211
|
-
end
|
212
|
-
|
213
|
-
context 'when Configuration#convert_have_items? is false' do
|
214
|
-
before { configuration.convert_have_items = false }
|
215
|
-
|
216
|
-
it 'does not invoke Have#convert_to_standard_expectation!' do
|
217
|
-
should_object.have_matcher.should_not_receive(:convert_to_standard_expectation!)
|
218
|
-
converter.process_should(should_object)
|
219
|
-
end
|
220
|
-
end
|
221
|
-
|
222
|
-
it 'invokes #process_raise_error with its #raise_error_matcher' do
|
223
|
-
converter.should_receive(:process_raise_error).with(raise_error_object)
|
224
|
-
converter.process_should(should_object)
|
225
|
-
end
|
226
190
|
end
|
227
191
|
|
228
192
|
describe '#process_oneliner_should' do
|
229
|
-
let(:should_object)
|
193
|
+
let(:should_object) do
|
194
|
+
double(
|
195
|
+
'oneliner_should_object',
|
196
|
+
raise_error_matcher: raise_error_object,
|
197
|
+
have_matcher: have_object
|
198
|
+
).as_null_object
|
199
|
+
end
|
200
|
+
|
230
201
|
let(:raise_error_object) { double('raise_error_object').as_null_object }
|
202
|
+
let(:have_object) { double('have_object').as_null_object }
|
231
203
|
|
232
204
|
shared_examples 'does nothing' do
|
233
205
|
it 'does nothing' do
|
@@ -239,7 +211,7 @@ module Transpec
|
|
239
211
|
end
|
240
212
|
|
241
213
|
shared_examples 'invokes OnelinerShould#expectize! if available' do
|
242
|
-
context '
|
214
|
+
context 'and RSpecVersion#oneliner_is_expected_available? returns true' do
|
243
215
|
before { rspec_version.stub(:oneliner_is_expected_available?).and_return(true) }
|
244
216
|
|
245
217
|
it 'invokes OnelinerShould#expectize!' do
|
@@ -248,7 +220,7 @@ module Transpec
|
|
248
220
|
end
|
249
221
|
end
|
250
222
|
|
251
|
-
context '
|
223
|
+
context 'and RSpecVersion#oneliner_is_expected_available? returns false' do
|
252
224
|
before { rspec_version.stub(:oneliner_is_expected_available?).and_return(false) }
|
253
225
|
include_examples 'does nothing'
|
254
226
|
end
|
@@ -277,29 +249,14 @@ module Transpec
|
|
277
249
|
context 'when Configuration#convert_oneliner? is true' do
|
278
250
|
before { configuration.convert_oneliner = true }
|
279
251
|
|
280
|
-
context 'and the
|
252
|
+
context 'and the #have matcher is conversion target' do
|
281
253
|
before do
|
282
|
-
|
254
|
+
have_object.stub(:conversion_target?).and_return(true)
|
283
255
|
end
|
284
256
|
|
285
257
|
context 'and Configuration#convert_have_items? is true' do
|
286
258
|
before { configuration.convert_have_items = true }
|
287
|
-
|
288
|
-
context 'and Have#project_requires_collection_matcher? is true' do
|
289
|
-
before do
|
290
|
-
should_object.have_matcher
|
291
|
-
.stub(:project_requires_collection_matcher?).and_return(true)
|
292
|
-
end
|
293
|
-
include_examples 'invokes OnelinerShould#expectize! if available'
|
294
|
-
end
|
295
|
-
|
296
|
-
context 'and Have#project_requires_collection_matcher? is false' do
|
297
|
-
before do
|
298
|
-
should_object.have_matcher
|
299
|
-
.stub(:project_requires_collection_matcher?).and_return(false)
|
300
|
-
end
|
301
|
-
include_examples 'converts to standard expecatations'
|
302
|
-
end
|
259
|
+
include_examples 'converts to standard expecatations'
|
303
260
|
end
|
304
261
|
|
305
262
|
context 'and Configuration#convert_have_items? is false' do
|
@@ -308,9 +265,9 @@ module Transpec
|
|
308
265
|
end
|
309
266
|
end
|
310
267
|
|
311
|
-
context 'and the
|
268
|
+
context 'and the #have matcher is not conversion target' do
|
312
269
|
before do
|
313
|
-
|
270
|
+
have_object.stub(:conversion_target?).and_return(false)
|
314
271
|
end
|
315
272
|
|
316
273
|
context 'and Configuration#convert_have_items? is true' do
|
@@ -328,29 +285,14 @@ module Transpec
|
|
328
285
|
context 'when Configuration#convert_oneliner? is false' do
|
329
286
|
before { configuration.convert_oneliner = false }
|
330
287
|
|
331
|
-
context 'and the
|
288
|
+
context 'and the #have matcher is conversion target' do
|
332
289
|
before do
|
333
|
-
|
290
|
+
have_object.stub(:conversion_target?).and_return(true)
|
334
291
|
end
|
335
292
|
|
336
293
|
context 'and Configuration#convert_have_items? is true' do
|
337
294
|
before { configuration.convert_have_items = true }
|
338
|
-
|
339
|
-
context 'and Have#project_requires_collection_matcher? is true' do
|
340
|
-
before do
|
341
|
-
should_object.have_matcher
|
342
|
-
.stub(:project_requires_collection_matcher?).and_return(true)
|
343
|
-
end
|
344
|
-
include_examples 'does nothing'
|
345
|
-
end
|
346
|
-
|
347
|
-
context 'and Have#project_requires_collection_matcher? is false' do
|
348
|
-
before do
|
349
|
-
should_object.have_matcher
|
350
|
-
.stub(:project_requires_collection_matcher?).and_return(false)
|
351
|
-
end
|
352
|
-
include_examples 'converts to standard expecatations'
|
353
|
-
end
|
295
|
+
include_examples 'converts to standard expecatations'
|
354
296
|
end
|
355
297
|
|
356
298
|
context 'and Configuration#convert_have_items? is false' do
|
@@ -359,9 +301,9 @@ module Transpec
|
|
359
301
|
end
|
360
302
|
end
|
361
303
|
|
362
|
-
context 'and the
|
304
|
+
context 'and the #have matcher is not conversion target' do
|
363
305
|
before do
|
364
|
-
|
306
|
+
have_object.stub(:conversion_target?).and_return(false)
|
365
307
|
end
|
366
308
|
|
367
309
|
context 'and Configuration#convert_have_items? is true' do
|
@@ -375,83 +317,6 @@ module Transpec
|
|
375
317
|
end
|
376
318
|
end
|
377
319
|
end
|
378
|
-
|
379
|
-
it 'invokes #process_raise_error with its #raise_error_matcher' do
|
380
|
-
converter.should_receive(:process_raise_error).with(raise_error_object)
|
381
|
-
converter.process_oneliner_should(should_object)
|
382
|
-
end
|
383
|
-
end
|
384
|
-
|
385
|
-
describe '#process_expect' do
|
386
|
-
let(:expect_object) do
|
387
|
-
double('expect_object',
|
388
|
-
receive_matcher: receive_object,
|
389
|
-
raise_error_matcher: raise_error_object
|
390
|
-
).as_null_object
|
391
|
-
end
|
392
|
-
let(:receive_object) { double('receive_object').as_null_object }
|
393
|
-
let(:raise_error_object) { double('raise_error_object').as_null_object }
|
394
|
-
|
395
|
-
context 'when Configuration#convert_have_items? is true' do
|
396
|
-
before { configuration.convert_have_items = true }
|
397
|
-
|
398
|
-
context 'and Configuration#parenthesize_matcher_arg is true' do
|
399
|
-
before { configuration.parenthesize_matcher_arg = true }
|
400
|
-
|
401
|
-
it 'invokes Have#convert_to_standard_expectation! with true' do
|
402
|
-
expect_object.have_matcher.should_receive(:convert_to_standard_expectation!).with(true)
|
403
|
-
converter.process_expect(expect_object)
|
404
|
-
end
|
405
|
-
end
|
406
|
-
|
407
|
-
context 'and Configuration#parenthesize_matcher_arg is false' do
|
408
|
-
before { configuration.parenthesize_matcher_arg = false }
|
409
|
-
|
410
|
-
it 'invokes Have#convert_to_standard_expectation! with false' do
|
411
|
-
expect_object.have_matcher.should_receive(:convert_to_standard_expectation!).with(false)
|
412
|
-
converter.process_expect(expect_object)
|
413
|
-
end
|
414
|
-
end
|
415
|
-
end
|
416
|
-
|
417
|
-
context 'when Configuration#convert_have_items? is false' do
|
418
|
-
before { configuration.convert_have_items = false }
|
419
|
-
|
420
|
-
it 'does not invoke Have#convert_to_standard_expectation!' do
|
421
|
-
expect_object.have_matcher.should_not_receive(:convert_to_standard_expectation!)
|
422
|
-
converter.process_expect(expect_object)
|
423
|
-
end
|
424
|
-
end
|
425
|
-
|
426
|
-
it "invokes #process_useless_and_return with the expect's #receive matcher" do
|
427
|
-
converter.should_receive(:process_useless_and_return).with(receive_object)
|
428
|
-
converter.process_expect(expect_object)
|
429
|
-
end
|
430
|
-
|
431
|
-
it "invokes #process_any_instance_block with the expect's #receive matcher" do
|
432
|
-
converter.should_receive(:process_any_instance_block).with(receive_object)
|
433
|
-
converter.process_expect(expect_object)
|
434
|
-
end
|
435
|
-
|
436
|
-
it 'invokes #process_raise_error with its #raise_error_matcher' do
|
437
|
-
converter.should_receive(:process_raise_error).with(raise_error_object)
|
438
|
-
converter.process_expect(expect_object)
|
439
|
-
end
|
440
|
-
end
|
441
|
-
|
442
|
-
describe '#process_allow' do
|
443
|
-
let(:allow_object) { double('allow_object', receive_matcher: receive_object).as_null_object }
|
444
|
-
let(:receive_object) { double('receive_object').as_null_object }
|
445
|
-
|
446
|
-
it "invokes #process_useless_and_return with the allow's #receive matcher" do
|
447
|
-
converter.should_receive(:process_useless_and_return).with(receive_object)
|
448
|
-
converter.process_allow(allow_object)
|
449
|
-
end
|
450
|
-
|
451
|
-
it "invokes #process_any_instance_block with the allow's #receive matcher" do
|
452
|
-
converter.should_receive(:process_any_instance_block).with(receive_object)
|
453
|
-
converter.process_allow(allow_object)
|
454
|
-
end
|
455
320
|
end
|
456
321
|
|
457
322
|
describe '#process_should_receive' do
|
@@ -683,8 +548,8 @@ module Transpec
|
|
683
548
|
context 'and MethodStub#hash_arg? is true' do
|
684
549
|
before { method_stub_object.stub(:hash_arg?).and_return(true) }
|
685
550
|
|
686
|
-
context 'and Configuration#
|
687
|
-
before { configuration.
|
551
|
+
context 'and Configuration#convert_stub_with_hash_to_allow_to_receive_and_return? is true' do
|
552
|
+
before { configuration.convert_stub_with_hash_to_allow_to_receive_and_return = true }
|
688
553
|
|
689
554
|
context 'and RSpecVersion#receive_messages_available? is true' do
|
690
555
|
before { rspec_version.stub(:receive_messages_available?).and_return(true) }
|
@@ -701,8 +566,8 @@ module Transpec
|
|
701
566
|
end
|
702
567
|
end
|
703
568
|
|
704
|
-
context 'and Configuration#
|
705
|
-
before { configuration.
|
569
|
+
context 'and Configuration#convert_stub_with_hash_to_allow_to_receive_and_return? is false' do
|
570
|
+
before { configuration.convert_stub_with_hash_to_allow_to_receive_and_return = false }
|
706
571
|
|
707
572
|
context 'and RSpecVersion#receive_messages_available? is true' do
|
708
573
|
before { rspec_version.stub(:receive_messages_available?).and_return(true) }
|
@@ -786,6 +651,65 @@ module Transpec
|
|
786
651
|
end
|
787
652
|
end
|
788
653
|
|
654
|
+
describe '#process_operator' do
|
655
|
+
let(:operator_object) { double('operator_object').as_null_object }
|
656
|
+
|
657
|
+
context 'when Configuration#convert_should? is true' do
|
658
|
+
before { configuration.convert_should = true }
|
659
|
+
|
660
|
+
context 'and Configuration#parenthesize_matcher_arg is true' do
|
661
|
+
before { configuration.parenthesize_matcher_arg = true }
|
662
|
+
|
663
|
+
it 'invokes Operator#convert_operator! with true' do
|
664
|
+
operator_object.should_receive(:convert_operator!).with(true)
|
665
|
+
converter.process_operator(operator_object)
|
666
|
+
end
|
667
|
+
end
|
668
|
+
|
669
|
+
context 'and Configuration#parenthesize_matcher_arg is false' do
|
670
|
+
before { configuration.parenthesize_matcher_arg = false }
|
671
|
+
|
672
|
+
it 'invokes Should#expectize! with false as second argument' do
|
673
|
+
operator_object.should_receive(:convert_operator!).with(false)
|
674
|
+
converter.process_operator(operator_object)
|
675
|
+
end
|
676
|
+
end
|
677
|
+
|
678
|
+
context 'and the expectation is one-liner should' do
|
679
|
+
before do
|
680
|
+
operator_object.stub(:expectation).and_return(Syntax::OnelinerShould.new(nil))
|
681
|
+
end
|
682
|
+
|
683
|
+
context 'and RSpecVersion#oneliner_is_expected_available? returns true' do
|
684
|
+
before { rspec_version.stub(:oneliner_is_expected_available?).and_return(true) }
|
685
|
+
|
686
|
+
it 'invokes Operator#convert_operator!' do
|
687
|
+
operator_object.should_receive(:convert_operator!)
|
688
|
+
converter.process_operator(operator_object)
|
689
|
+
end
|
690
|
+
end
|
691
|
+
|
692
|
+
context 'and RSpecVersion#oneliner_is_expected_available? returns false' do
|
693
|
+
before { rspec_version.stub(:oneliner_is_expected_available?).and_return(false) }
|
694
|
+
|
695
|
+
it 'does not invoke Operator#convert_operator!' do
|
696
|
+
operator_object.should_not_receive(:convert_operator!)
|
697
|
+
converter.process_operator(operator_object)
|
698
|
+
end
|
699
|
+
end
|
700
|
+
end
|
701
|
+
end
|
702
|
+
|
703
|
+
context 'when Configuration#convert_should? is false' do
|
704
|
+
before { configuration.convert_should = false }
|
705
|
+
|
706
|
+
it 'does not invoke Operator#convert_operator!' do
|
707
|
+
operator_object.should_not_receive(:convert_operator!)
|
708
|
+
converter.process_operator(operator_object)
|
709
|
+
end
|
710
|
+
end
|
711
|
+
end
|
712
|
+
|
789
713
|
describe '#process_be_boolean' do
|
790
714
|
let(:be_boolean_object) { double('be_boolean_object').as_null_object }
|
791
715
|
|
@@ -871,6 +795,41 @@ module Transpec
|
|
871
795
|
end
|
872
796
|
end
|
873
797
|
|
798
|
+
describe '#process_have' do
|
799
|
+
let(:have_object) { double('have_object').as_null_object }
|
800
|
+
|
801
|
+
context 'when Configuration#convert_have_items? is true' do
|
802
|
+
before { configuration.convert_have_items = true }
|
803
|
+
|
804
|
+
context 'and Configuration#parenthesize_matcher_arg is true' do
|
805
|
+
before { configuration.parenthesize_matcher_arg = true }
|
806
|
+
|
807
|
+
it 'invokes Have#convert_to_standard_expectation! with true' do
|
808
|
+
have_object.should_receive(:convert_to_standard_expectation!).with(true)
|
809
|
+
converter.process_have(have_object)
|
810
|
+
end
|
811
|
+
end
|
812
|
+
|
813
|
+
context 'and Configuration#parenthesize_matcher_arg is false' do
|
814
|
+
before { configuration.parenthesize_matcher_arg = false }
|
815
|
+
|
816
|
+
it 'invokes Have#convert_to_standard_expectation! with false' do
|
817
|
+
have_object.should_receive(:convert_to_standard_expectation!).with(false)
|
818
|
+
converter.process_have(have_object)
|
819
|
+
end
|
820
|
+
end
|
821
|
+
end
|
822
|
+
|
823
|
+
context 'when Configuration#convert_have_items? is false' do
|
824
|
+
before { configuration.convert_have_items = false }
|
825
|
+
|
826
|
+
it 'does not invoke Have#convert_to_standard_expectation!' do
|
827
|
+
have_object.should_not_receive(:convert_to_standard_expectation!)
|
828
|
+
converter.process_have(have_object)
|
829
|
+
end
|
830
|
+
end
|
831
|
+
end
|
832
|
+
|
874
833
|
describe '#process_raise_error' do
|
875
834
|
let(:raise_error_object) { double('raise_error_object').as_null_object }
|
876
835
|
|
@@ -1079,6 +1038,45 @@ module Transpec
|
|
1079
1038
|
end
|
1080
1039
|
end
|
1081
1040
|
|
1041
|
+
describe '#process_example_group' do
|
1042
|
+
let(:example_group) { double('example_group').as_null_object }
|
1043
|
+
|
1044
|
+
context 'when RSpecVersion#non_monkey_patch_example_group_available? returns true' do
|
1045
|
+
before { rspec_version.stub(:non_monkey_patch_example_group_available?).and_return(true) }
|
1046
|
+
|
1047
|
+
context 'and Configuration#convert_example_group? is true' do
|
1048
|
+
before { configuration.convert_example_group = true }
|
1049
|
+
|
1050
|
+
it 'invokes ExampleGroup#convert_to_non_monkey_patch!' do
|
1051
|
+
example_group.should_receive(:convert_to_non_monkey_patch!)
|
1052
|
+
converter.process_example_group(example_group)
|
1053
|
+
end
|
1054
|
+
end
|
1055
|
+
|
1056
|
+
context 'and Configuration#convert_example_group? is false' do
|
1057
|
+
before { configuration.convert_example_group = false }
|
1058
|
+
|
1059
|
+
it 'does nothing' do
|
1060
|
+
example_group.should_not_receive(:convert_to_non_monkey_patch!)
|
1061
|
+
converter.process_example_group(example_group)
|
1062
|
+
end
|
1063
|
+
end
|
1064
|
+
end
|
1065
|
+
|
1066
|
+
context 'when RSpecVersion#non_monkey_patch_example_group_available? returns false' do
|
1067
|
+
before { rspec_version.stub(:non_monkey_patch_example_group_available?).and_return(false) }
|
1068
|
+
|
1069
|
+
context 'and Configuration#convert_example_group? is true' do
|
1070
|
+
before { configuration.convert_example_group = true }
|
1071
|
+
|
1072
|
+
it 'does nothing' do
|
1073
|
+
example_group.should_not_receive(:convert_to_non_monkey_patch!)
|
1074
|
+
converter.process_example_group(example_group)
|
1075
|
+
end
|
1076
|
+
end
|
1077
|
+
end
|
1078
|
+
end
|
1079
|
+
|
1082
1080
|
describe '#process_rspec_configure' do
|
1083
1081
|
let(:rspec_configure) do
|
1084
1082
|
double(
|
@@ -1140,21 +1138,67 @@ module Transpec
|
|
1140
1138
|
context 'and Configuration#convert_deprecated_method? returns true' do
|
1141
1139
|
before { configuration.convert_deprecated_method = true }
|
1142
1140
|
|
1143
|
-
context 'and
|
1144
|
-
before
|
1141
|
+
context 'and SpecSuite#main_rspec_configure_node? returns true' do
|
1142
|
+
before do
|
1143
|
+
spec_suite.stub(:main_rspec_configure_node?).and_return(true)
|
1144
|
+
end
|
1145
|
+
|
1146
|
+
context 'and SpecSuite#need_to_modify_yield_receiver_..._configuration? return true' do
|
1147
|
+
before do
|
1148
|
+
spec_suite.stub(:need_to_modify_yield_receiver_to_any_instance_implementation_blocks_config?)
|
1149
|
+
.and_return(true)
|
1150
|
+
end
|
1145
1151
|
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1152
|
+
context 'and Configuration#add_receiver_arg_to_any_instance_implementation_block? returns true' do
|
1153
|
+
before { configuration.add_receiver_arg_to_any_instance_implementation_block = true }
|
1154
|
+
|
1155
|
+
it 'invokes RSpecConfigure.mocks.yield_receiver_to_any_instance_implementation_blocks= with true' do
|
1156
|
+
rspec_configure.mocks
|
1157
|
+
.should_receive(:yield_receiver_to_any_instance_implementation_blocks=).with(true)
|
1158
|
+
converter.process_rspec_configure(rspec_configure)
|
1159
|
+
end
|
1160
|
+
end
|
1161
|
+
|
1162
|
+
context 'and Configuration#add_receiver_arg_to_any_instance_implementation_block? returns false' do
|
1163
|
+
before { configuration.add_receiver_arg_to_any_instance_implementation_block = false }
|
1164
|
+
|
1165
|
+
it 'invokes RSpecConfigure.mocks.yield_receiver_to_any_instance_implementation_blocks= with false' do
|
1166
|
+
rspec_configure.mocks
|
1167
|
+
.should_receive(:yield_receiver_to_any_instance_implementation_blocks=).with(false)
|
1168
|
+
converter.process_rspec_configure(rspec_configure)
|
1169
|
+
end
|
1170
|
+
end
|
1149
1171
|
end
|
1150
1172
|
end
|
1151
1173
|
|
1152
|
-
context 'and
|
1153
|
-
before
|
1174
|
+
context 'and SpecSuite#need_to_modify_yield_receiver_..._configuration? return false' do
|
1175
|
+
before do
|
1176
|
+
spec_suite.stub(:need_to_modify_yield_receiver_to_any_instance_implementation_blocks_config?)
|
1177
|
+
.and_return(false)
|
1178
|
+
end
|
1179
|
+
|
1180
|
+
context 'and Configuration#add_receiver_arg_to_any_instance_implementation_block? returns true' do
|
1181
|
+
before { configuration.add_receiver_arg_to_any_instance_implementation_block = true }
|
1182
|
+
|
1183
|
+
it 'does not invoke RSpecConfigure.mocks.yield_receiver_to_any_instance_implementation_blocks=' do
|
1184
|
+
rspec_configure.mocks.should_not_receive(:yield_receiver_to_any_instance_implementation_blocks=)
|
1185
|
+
converter.process_rspec_configure(rspec_configure)
|
1186
|
+
end
|
1187
|
+
end
|
1188
|
+
end
|
1189
|
+
|
1190
|
+
context 'and SpecSuite#main_rspec_configure_node? returns false' do
|
1191
|
+
before do
|
1192
|
+
spec_suite.stub(:main_rspec_configure_node?).and_return(false)
|
1193
|
+
end
|
1194
|
+
|
1195
|
+
context 'and Configuration#add_receiver_arg_to_any_instance_implementation_block? returns true' do
|
1196
|
+
before { configuration.add_receiver_arg_to_any_instance_implementation_block = true }
|
1154
1197
|
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1198
|
+
it 'does not invoke RSpecConfigure.mocks.yield_receiver_to_any_instance_implementation_blocks=' do
|
1199
|
+
rspec_configure.mocks.should_not_receive(:yield_receiver_to_any_instance_implementation_blocks=)
|
1200
|
+
converter.process_rspec_configure(rspec_configure)
|
1201
|
+
end
|
1158
1202
|
end
|
1159
1203
|
end
|
1160
1204
|
end
|
@@ -1179,6 +1223,41 @@ module Transpec
|
|
1179
1223
|
converter.process_rspec_configure(rspec_configure)
|
1180
1224
|
end
|
1181
1225
|
end
|
1226
|
+
|
1227
|
+
context 'when RSpecVersion#non_monkey_patch_example_group_available? returns true' do
|
1228
|
+
before { rspec_version.stub(:non_monkey_patch_example_group_available?).and_return(true) }
|
1229
|
+
|
1230
|
+
context 'and Configuration#convert_example_group? is true' do
|
1231
|
+
before { configuration.convert_example_group = true }
|
1232
|
+
|
1233
|
+
it 'invokes RSpecConfigure#expose_dsl_globally= with false' do
|
1234
|
+
rspec_configure.should_receive(:expose_dsl_globally=).with(false)
|
1235
|
+
converter.process_rspec_configure(rspec_configure)
|
1236
|
+
end
|
1237
|
+
end
|
1238
|
+
|
1239
|
+
context 'and Configuration#convert_example_group? is false' do
|
1240
|
+
before { configuration.convert_example_group = false }
|
1241
|
+
|
1242
|
+
it 'does nothing' do
|
1243
|
+
rspec_configure.should_not_receive(:expose_dsl_globally=)
|
1244
|
+
converter.process_rspec_configure(rspec_configure)
|
1245
|
+
end
|
1246
|
+
end
|
1247
|
+
end
|
1248
|
+
|
1249
|
+
context 'when RSpecVersion#non_monkey_patch_example_group_available? returns false' do
|
1250
|
+
before { rspec_version.stub(:non_monkey_patch_example_group_available?).and_return(false) }
|
1251
|
+
|
1252
|
+
context 'and Configuration#convert_example_group? is true' do
|
1253
|
+
before { configuration.convert_example_group = true }
|
1254
|
+
|
1255
|
+
it 'does nothing' do
|
1256
|
+
rspec_configure.should_not_receive(:expose_dsl_globally=)
|
1257
|
+
converter.process_rspec_configure(rspec_configure)
|
1258
|
+
end
|
1259
|
+
end
|
1260
|
+
end
|
1182
1261
|
end
|
1183
1262
|
|
1184
1263
|
describe '#process_useless_and_return' do
|