transpec 1.6.1 → 1.7.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.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +0 -4
  3. data/.travis.yml +2 -1
  4. data/CHANGELOG.md +4 -0
  5. data/Guardfile +1 -1
  6. data/README.md +168 -18
  7. data/README.md.erb +154 -18
  8. data/lib/transpec/ast/node.rb +47 -0
  9. data/lib/transpec/cli.rb +1 -1
  10. data/lib/transpec/commit_message.rb +11 -1
  11. data/lib/transpec/configuration.rb +11 -10
  12. data/lib/transpec/converter.rb +36 -14
  13. data/lib/transpec/dynamic_analyzer/rewriter.rb +2 -2
  14. data/lib/transpec/option_parser.rb +11 -0
  15. data/lib/transpec/report.rb +16 -9
  16. data/lib/transpec/rspec_version.rb +9 -0
  17. data/lib/transpec/static_context_inspector.rb +4 -4
  18. data/lib/transpec/syntax/allow.rb +20 -0
  19. data/lib/transpec/syntax/example.rb +1 -1
  20. data/lib/transpec/syntax/expect.rb +5 -20
  21. data/lib/transpec/syntax/its.rb +2 -8
  22. data/lib/transpec/syntax/method_stub.rb +72 -37
  23. data/lib/transpec/syntax/mixin/allow_no_message.rb +8 -17
  24. data/lib/transpec/syntax/mixin/any_instance_block.rb +34 -0
  25. data/lib/transpec/syntax/mixin/expect_base.rb +70 -0
  26. data/lib/transpec/syntax/mixin/expectizable.rb +3 -0
  27. data/lib/transpec/syntax/mixin/have_matcher_owner.rb +5 -2
  28. data/lib/transpec/syntax/mixin/monkey_patch.rb +6 -0
  29. data/lib/transpec/syntax/mixin/{any_instance.rb → monkey_patch_any_instance.rb} +12 -8
  30. data/lib/transpec/syntax/mixin/send.rb +16 -3
  31. data/lib/transpec/syntax/mixin/should_base.rb +8 -2
  32. data/lib/transpec/syntax/oneliner_should.rb +2 -4
  33. data/lib/transpec/syntax/operator_matcher.rb +2 -2
  34. data/lib/transpec/syntax/raise_error.rb +2 -2
  35. data/lib/transpec/syntax/receive.rb +49 -0
  36. data/lib/transpec/syntax/rspec_configure.rb +8 -96
  37. data/lib/transpec/syntax/rspec_configure/expectations.rb +15 -0
  38. data/lib/transpec/syntax/rspec_configure/framework.rb +166 -0
  39. data/lib/transpec/syntax/rspec_configure/mocks.rb +19 -0
  40. data/lib/transpec/syntax/should.rb +1 -4
  41. data/lib/transpec/syntax/should_receive.rb +89 -43
  42. data/lib/transpec/util.rb +21 -7
  43. data/lib/transpec/version.rb +2 -2
  44. data/spec/transpec/ast/node_spec.rb +52 -0
  45. data/spec/transpec/commit_message_spec.rb +2 -2
  46. data/spec/transpec/configuration_spec.rb +14 -13
  47. data/spec/transpec/converter_spec.rb +151 -20
  48. data/spec/transpec/option_parser_spec.rb +10 -0
  49. data/spec/transpec/rspec_version_spec.rb +20 -6
  50. data/spec/transpec/static_context_inspector_spec.rb +2 -2
  51. data/spec/transpec/syntax/allow_spec.rb +140 -0
  52. data/spec/transpec/syntax/double_spec.rb +1 -1
  53. data/spec/transpec/syntax/expect_spec.rb +103 -10
  54. data/spec/transpec/syntax/have_spec.rb +4 -4
  55. data/spec/transpec/syntax/method_stub_spec.rb +41 -1
  56. data/spec/transpec/syntax/operator_matcher_spec.rb +6 -6
  57. data/spec/transpec/syntax/receive_spec.rb +270 -0
  58. data/spec/transpec/syntax/rspec_configure_spec.rb +241 -30
  59. data/spec/transpec/syntax/should_receive_spec.rb +93 -2
  60. data/spec/transpec/syntax/should_spec.rb +2 -2
  61. data/spec/transpec/util_spec.rb +2 -6
  62. data/transpec.gemspec +5 -3
  63. metadata +37 -14
@@ -181,13 +181,13 @@ module Transpec
181
181
  let(:parenthesize_arg) { false }
182
182
 
183
183
  let(:expected_source) do
184
- <<-END
184
+ <<-END
185
185
  describe 'example' do
186
186
  it 'is 1' do
187
187
  subject.should eq 1
188
188
  end
189
189
  end
190
- END
190
+ END
191
191
  end
192
192
 
193
193
  it 'converts into `eq 1` form' do
@@ -691,13 +691,13 @@ module Transpec
691
691
  let(:always) { true }
692
692
 
693
693
  let(:expected_source) do
694
- <<-END
694
+ <<-END
695
695
  describe 'example' do
696
696
  it 'is 1' do
697
697
  subject.should eq(1)
698
698
  end
699
699
  end
700
- END
700
+ END
701
701
  end
702
702
 
703
703
  it 'inserts parentheses' do
@@ -709,13 +709,13 @@ module Transpec
709
709
  let(:always) { false }
710
710
 
711
711
  let(:expected_source) do
712
- <<-END
712
+ <<-END
713
713
  describe 'example' do
714
714
  it 'is 1' do
715
715
  subject.should eq 1
716
716
  end
717
717
  end
718
- END
718
+ END
719
719
  end
720
720
 
721
721
  it 'does not nothing' do
@@ -0,0 +1,270 @@
1
+ # coding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require 'transpec/syntax/receive'
5
+ require 'transpec/syntax/expect'
6
+ require 'transpec/syntax/allow'
7
+
8
+ module Transpec
9
+ class Syntax
10
+ describe Receive do
11
+ include_context 'parsed objects'
12
+ include_context 'syntax object', Expect, :expect_object
13
+ include_context 'syntax object', Allow, :allow_object
14
+
15
+ describe '#add_receiver_arg_to_any_instance_implementation_block!' do
16
+ let(:record) { receive_object.report.records.last }
17
+
18
+ before do
19
+ receive_object.add_receiver_arg_to_any_instance_implementation_block!
20
+ end
21
+
22
+ context 'with #expect' do
23
+ let(:receive_object) { expect_object.receive_matcher }
24
+
25
+ context 'when it is `expect_any_instance_of(Klass).to receive(:method) do |arg| .. end` form' do
26
+ let(:source) do
27
+ <<-END
28
+ describe 'example' do
29
+ it 'receives #foo' do
30
+ expect_any_instance_of(Klass).to receive(:foo) do |arg|
31
+ end
32
+ end
33
+ end
34
+ END
35
+ end
36
+
37
+ let(:expected_source) do
38
+ <<-END
39
+ describe 'example' do
40
+ it 'receives #foo' do
41
+ expect_any_instance_of(Klass).to receive(:foo) do |instance, arg|
42
+ end
43
+ end
44
+ end
45
+ END
46
+ end
47
+
48
+ it 'converts into `expect_any_instance_of(Klass).to receive(:method) do |instance, arg| .. end` form' do
49
+ rewritten_source.should == expected_source
50
+ end
51
+
52
+ it 'adds record `expect_any_instance_of(Klass).to receive(:message) { |arg| }` ' +
53
+ '-> `Klass.any_instance.should_receive(:message) { |instance, arg| }`' do
54
+ record.original_syntax.should == 'expect_any_instance_of(Klass).to receive(:message) { |arg| }'
55
+ record.converted_syntax.should == 'expect_any_instance_of(Klass).to receive(:message) { |instance, arg| }'
56
+ end
57
+ end
58
+
59
+ context 'when it is `expect_any_instance_of(Klass).to receive(:method) { |arg| .. }` form' do
60
+ let(:source) do
61
+ <<-END
62
+ describe 'example' do
63
+ it 'receives #foo' do
64
+ expect_any_instance_of(Klass).to receive(:foo) { |arg|
65
+ }
66
+ end
67
+ end
68
+ END
69
+ end
70
+
71
+ let(:expected_source) do
72
+ <<-END
73
+ describe 'example' do
74
+ it 'receives #foo' do
75
+ expect_any_instance_of(Klass).to receive(:foo) { |instance, arg|
76
+ }
77
+ end
78
+ end
79
+ END
80
+ end
81
+
82
+ it 'converts into `expect_any_instance_of(Klass).to receive(:method) { |instance, arg| .. }` form' do
83
+ rewritten_source.should == expected_source
84
+ end
85
+
86
+ it 'adds record `expect_any_instance_of(Klass).to receive(:message) { |arg| }` ' +
87
+ '-> `Klass.any_instance.should_receive(:message) { |instance, arg| }`' do
88
+ record.original_syntax.should == 'expect_any_instance_of(Klass).to receive(:message) { |arg| }'
89
+ record.converted_syntax.should == 'expect_any_instance_of(Klass).to receive(:message) { |instance, arg| }'
90
+ end
91
+ end
92
+
93
+ context 'when it is `expect_any_instance_of(Klass).to receive(:method) do .. end` form' do
94
+ let(:source) do
95
+ <<-END
96
+ describe 'example' do
97
+ it 'receives #foo' do
98
+ expect_any_instance_of(Klass).to receive(:foo) do
99
+ end
100
+ end
101
+ end
102
+ END
103
+ end
104
+
105
+ it 'does nothing' do
106
+ rewritten_source.should == source
107
+ end
108
+ end
109
+
110
+ context 'when it is `expect_any_instance_of(Klass).to receive(:method) do |instance| .. end` form' do
111
+ let(:source) do
112
+ <<-END
113
+ describe 'example' do
114
+ it 'receives #foo' do
115
+ expect_any_instance_of(Klass).to receive(:foo) do |instance|
116
+ end
117
+ end
118
+ end
119
+ END
120
+ end
121
+
122
+ it 'does nothing' do
123
+ rewritten_source.should == source
124
+ end
125
+ end
126
+
127
+ context 'when it is `expect(subject).to receive(:method) do |arg| .. end` form' do
128
+ let(:source) do
129
+ <<-END
130
+ describe 'example' do
131
+ it 'receives #foo' do
132
+ expect(subject).to receive(:foo) do |arg|
133
+ end
134
+ end
135
+ end
136
+ END
137
+ end
138
+
139
+ it 'does nothing' do
140
+ rewritten_source.should == source
141
+ end
142
+ end
143
+ end
144
+
145
+ context 'with #allow' do
146
+ let(:receive_object) { allow_object.receive_matcher }
147
+
148
+ context 'when it is `allow_any_instance_of(Klass).to receive(:method) do |arg| .. end` form' do
149
+ let(:source) do
150
+ <<-END
151
+ describe 'example' do
152
+ it 'responds to #foo' do
153
+ allow_any_instance_of(Klass).to receive(:foo) do |arg|
154
+ end
155
+ end
156
+ end
157
+ END
158
+ end
159
+
160
+ let(:expected_source) do
161
+ <<-END
162
+ describe 'example' do
163
+ it 'responds to #foo' do
164
+ allow_any_instance_of(Klass).to receive(:foo) do |instance, arg|
165
+ end
166
+ end
167
+ end
168
+ END
169
+ end
170
+
171
+ it 'converts into `allow_any_instance_of(Klass).to receive(:method) do |instance, arg| .. end` form' do
172
+ rewritten_source.should == expected_source
173
+ end
174
+
175
+ it 'adds record `allow_any_instance_of(Klass).to receive(:message) { |arg| }` ' +
176
+ '-> `Klass.any_instance.should_receive(:message) { |instance, arg| }`' do
177
+ record.original_syntax.should == 'allow_any_instance_of(Klass).to receive(:message) { |arg| }'
178
+ record.converted_syntax.should == 'allow_any_instance_of(Klass).to receive(:message) { |instance, arg| }'
179
+ end
180
+ end
181
+
182
+ context 'when it is `allow_any_instance_of(Klass).to receive(:method) { |arg| .. }` form' do
183
+ let(:source) do
184
+ <<-END
185
+ describe 'example' do
186
+ it 'responds to #foo' do
187
+ allow_any_instance_of(Klass).to receive(:foo) { |arg|
188
+ }
189
+ end
190
+ end
191
+ END
192
+ end
193
+
194
+ let(:expected_source) do
195
+ <<-END
196
+ describe 'example' do
197
+ it 'responds to #foo' do
198
+ allow_any_instance_of(Klass).to receive(:foo) { |instance, arg|
199
+ }
200
+ end
201
+ end
202
+ END
203
+ end
204
+
205
+ it 'converts into `allow_any_instance_of(Klass).to receive(:method) { |instance, arg| .. }` form' do
206
+ rewritten_source.should == expected_source
207
+ end
208
+
209
+ it 'adds record `allow_any_instance_of(Klass).to receive(:message) { |arg| }` ' +
210
+ '-> `Klass.any_instance.should_receive(:message) { |instance, arg| }`' do
211
+ record.original_syntax.should == 'allow_any_instance_of(Klass).to receive(:message) { |arg| }'
212
+ record.converted_syntax.should == 'allow_any_instance_of(Klass).to receive(:message) { |instance, arg| }'
213
+ end
214
+ end
215
+
216
+ context 'when it is `allow_any_instance_of(Klass).to receive(:method) do .. end` form' do
217
+ let(:source) do
218
+ <<-END
219
+ describe 'example' do
220
+ it 'responds to #foo' do
221
+ allow_any_instance_of(Klass).to receive(:foo) do
222
+ end
223
+ end
224
+ end
225
+ END
226
+ end
227
+
228
+ it 'does nothing' do
229
+ rewritten_source.should == source
230
+ end
231
+ end
232
+
233
+ context 'when it is `allow_any_instance_of(Klass).to receive(:method) do |instance| .. end` form' do
234
+ let(:source) do
235
+ <<-END
236
+ describe 'example' do
237
+ it 'responds to #foo' do
238
+ allow_any_instance_of(Klass).to receive(:foo) do |instance|
239
+ end
240
+ end
241
+ end
242
+ END
243
+ end
244
+
245
+ it 'does nothing' do
246
+ rewritten_source.should == source
247
+ end
248
+ end
249
+
250
+ context 'when it is `allow(subject).to receive(:method) do |arg| .. end` form' do
251
+ let(:source) do
252
+ <<-END
253
+ describe 'example' do
254
+ it 'responds to #foo' do
255
+ allow(subject).to receive(:foo) do |arg|
256
+ end
257
+ end
258
+ end
259
+ END
260
+ end
261
+
262
+ it 'does nothing' do
263
+ rewritten_source.should == source
264
+ end
265
+ end
266
+ end
267
+ end
268
+ end
269
+ end
270
+ end
@@ -9,18 +9,15 @@ module Transpec
9
9
  include_context 'parsed objects'
10
10
  include_context 'syntax object', RSpecConfigure, :rspec_configure
11
11
 
12
- [
13
- [:expectation_syntaxes, :expect_with, 'RSpec::Matchers::Configuration'],
14
- [:mock_syntaxes, :mock_with, 'RSpec::Mocks::Configuration']
15
- ].each do |subject_method, config_block_method, framework_config_class|
16
- describe "##{subject_method}" do
17
- subject { rspec_configure.send(subject_method) }
12
+ shared_examples '#syntaxes' do |framework_block_method|
13
+ describe '#syntaxes' do
14
+ subject { super().syntaxes }
18
15
 
19
16
  context 'when :should is enabled' do
20
17
  let(:source) do
21
18
  <<-END
22
19
  RSpec.configure do |config|
23
- config.#{config_block_method} :rspec do |c|
20
+ config.#{framework_block_method} :rspec do |c|
24
21
  c.syntax = :should
25
22
  end
26
23
  end
@@ -36,7 +33,7 @@ module Transpec
36
33
  let(:source) do
37
34
  <<-END
38
35
  RSpec.configure do |config|
39
- config.#{config_block_method} :rspec do |c|
36
+ config.#{framework_block_method} :rspec do |c|
40
37
  c.syntax = [:should, :expect]
41
38
  end
42
39
  end
@@ -52,7 +49,7 @@ module Transpec
52
49
  let(:source) do
53
50
  <<-END
54
51
  RSpec.configure do |config|
55
- config.#{config_block_method} :rspec do |c|
52
+ config.#{framework_block_method} :rspec do |c|
56
53
  c.syntax = some_syntax
57
54
  end
58
55
  end
@@ -60,11 +57,11 @@ module Transpec
60
57
  end
61
58
 
62
59
  it 'raises error' do
63
- -> { subject }.should raise_error(RSpecConfigure::UnknownSyntaxError)
60
+ -> { subject }.should raise_error(RSpecConfigure::Framework::UnknownSyntaxError)
64
61
  end
65
62
  end
66
63
 
67
- context "when RSpec::Core::Configuration##{config_block_method} block does not exist" do
64
+ context "when ##{framework_block_method} block does not exist" do
68
65
  let(:source) do
69
66
  <<-END
70
67
  RSpec.configure do |config|
@@ -77,11 +74,11 @@ module Transpec
77
74
  end
78
75
  end
79
76
 
80
- context "when #{framework_config_class}#syntax= does not exist" do
77
+ context "when ##{framework_block_method} { #syntax= } does not exist" do
81
78
  let(:source) do
82
79
  <<-END
83
80
  RSpec.configure do |config|
84
- config.#{config_block_method} :rspec do |c|
81
+ config.#{framework_block_method} :rspec do |c|
85
82
  end
86
83
  end
87
84
  END
@@ -94,19 +91,16 @@ module Transpec
94
91
  end
95
92
  end
96
93
 
97
- [
98
- [:modify_expectation_syntaxes!, :expect_with, 'RSpec::Matchers::Configuration'],
99
- [:modify_mock_syntaxes!, :mock_with, 'RSpec::Mocks::Configuration']
100
- ].each do |subject_method, config_block_method, framework_config_class|
101
- describe "##{subject_method}" do
94
+ shared_examples '#syntaxes=' do |framework_block_method|
95
+ describe '#syntaxes=' do
102
96
  before do
103
- rspec_configure.send(subject_method, syntaxes)
97
+ subject.syntaxes = syntaxes
104
98
  end
105
99
 
106
100
  let(:source) do
107
101
  <<-END
108
102
  RSpec.configure do |config|
109
- config.#{config_block_method} :rspec do |c|
103
+ config.#{framework_block_method} :rspec do |c|
110
104
  c.syntax = :should
111
105
  end
112
106
  end
@@ -117,13 +111,13 @@ module Transpec
117
111
  let(:syntaxes) { :expect }
118
112
 
119
113
  let(:expected_source) do
120
- <<-END
114
+ <<-END
121
115
  RSpec.configure do |config|
122
- config.#{config_block_method} :rspec do |c|
116
+ config.#{framework_block_method} :rspec do |c|
123
117
  c.syntax = :expect
124
118
  end
125
119
  end
126
- END
120
+ END
127
121
  end
128
122
 
129
123
  it 'rewrites syntax specification to `c.syntax = :expect`' do
@@ -135,13 +129,13 @@ module Transpec
135
129
  let(:syntaxes) { [:should, :expect] }
136
130
 
137
131
  let(:expected_source) do
138
- <<-END
132
+ <<-END
139
133
  RSpec.configure do |config|
140
- config.#{config_block_method} :rspec do |c|
134
+ config.#{framework_block_method} :rspec do |c|
141
135
  c.syntax = [:should, :expect]
142
136
  end
143
137
  end
144
- END
138
+ END
145
139
  end
146
140
 
147
141
  it 'rewrites syntax specification to `c.syntax = [:should, :expect]`' do
@@ -149,12 +143,229 @@ module Transpec
149
143
  end
150
144
  end
151
145
 
152
- context 'when RSpec::Core::Configuration#expect_with block does not exist' do
153
- pending
146
+ context "when ##{framework_block_method} { #syntax= } does not exist" do
147
+ let(:source) do
148
+ <<-END
149
+ RSpec.configure do |config|
150
+ config.#{framework_block_method} :rspec do |c|
151
+ end
152
+ end
153
+ END
154
+ end
155
+
156
+ let(:syntaxes) { :expect }
157
+
158
+ let(:expected_source) do
159
+ <<-END
160
+ RSpec.configure do |config|
161
+ config.#{framework_block_method} :rspec do |c|
162
+ c.syntax = :expect
163
+ end
164
+ end
165
+ END
166
+ end
167
+
168
+ it 'adds #syntax= statement' do
169
+ rewritten_source.should == expected_source
170
+ end
154
171
  end
155
172
 
156
- context "when #{framework_config_class}#syntax= does not exist" do
157
- pending
173
+ context "when ##{framework_block_method} block does not exist" do
174
+ let(:source) do
175
+ <<-END
176
+ RSpec.configure do |config|
177
+ end
178
+ END
179
+ end
180
+
181
+ let(:syntaxes) { :expect }
182
+
183
+ let(:expected_source) do
184
+ <<-END
185
+ RSpec.configure do |config|
186
+ config.#{framework_block_method} :rspec do |c|
187
+ c.syntax = :expect
188
+ end
189
+ end
190
+ END
191
+ end
192
+
193
+ it "adds ##{framework_block_method} block " +
194
+ 'and #syntax= statement' do
195
+ rewritten_source.should == expected_source
196
+ end
197
+
198
+ context 'when there are already some configurations' do
199
+ let(:source) do
200
+ <<-END
201
+ RSpec.configure do |config|
202
+ config.foo = 1
203
+ end
204
+ END
205
+ end
206
+
207
+ let(:syntaxes) { :expect }
208
+
209
+ let(:expected_source) do
210
+ <<-END
211
+ RSpec.configure do |config|
212
+ config.foo = 1
213
+
214
+ config.#{framework_block_method} :rspec do |c|
215
+ c.syntax = :expect
216
+ end
217
+ end
218
+ END
219
+ end
220
+
221
+ it 'adds the block after a blank line' do
222
+ rewritten_source.should == expected_source
223
+ end
224
+ end
225
+ end
226
+ end
227
+ end
228
+
229
+ describe '#expectations' do
230
+ subject { rspec_configure.expectations }
231
+
232
+ include_examples '#syntaxes', :expect_with
233
+ include_examples '#syntaxes=', :expect_with
234
+ end
235
+
236
+ describe '#mocks' do
237
+ subject(:mocks) { rspec_configure.mocks }
238
+
239
+ include_examples '#syntaxes', :mock_with
240
+ include_examples '#syntaxes=', :mock_with
241
+
242
+ describe '#yield_receiver_to_any_instance_implementation_blocks=' do
243
+ before do
244
+ mocks.yield_receiver_to_any_instance_implementation_blocks = value
245
+ end
246
+
247
+ context 'when #mock_with { #yield_receiver_to_any_instance_implementation_blocks= } exists' do
248
+ let(:source) do
249
+ <<-END
250
+ RSpec.configure do |config|
251
+ config.mock_with :rspec do |c|
252
+ c.yield_receiver_to_any_instance_implementation_blocks = foo
253
+ end
254
+ end
255
+ END
256
+ end
257
+
258
+ context 'when true is passed' do
259
+ let(:value) { true }
260
+
261
+ let(:expected_source) do
262
+ <<-END
263
+ RSpec.configure do |config|
264
+ config.mock_with :rspec do |c|
265
+ c.yield_receiver_to_any_instance_implementation_blocks = true
266
+ end
267
+ end
268
+ END
269
+ end
270
+
271
+ it 'rewrites the setter argument to `true`' do
272
+ rewritten_source.should == expected_source
273
+ end
274
+ end
275
+
276
+ context 'when false is passed' do
277
+ let(:value) { false }
278
+
279
+ let(:expected_source) do
280
+ <<-END
281
+ RSpec.configure do |config|
282
+ config.mock_with :rspec do |c|
283
+ c.yield_receiver_to_any_instance_implementation_blocks = false
284
+ end
285
+ end
286
+ END
287
+ end
288
+
289
+ it 'rewrites the setter argument to `false`' do
290
+ rewritten_source.should == expected_source
291
+ end
292
+ end
293
+ end
294
+
295
+ context 'when #mock_with { #yield_receiver_to_any_instance_implementation_blocks= } does not exist' do
296
+ let(:source) do
297
+ <<-END
298
+ RSpec.configure do |config|
299
+ config.mock_with :rspec do |c|
300
+ end
301
+ end
302
+ END
303
+ end
304
+
305
+ let(:value) { true }
306
+
307
+ let(:expected_source) do
308
+ <<-END
309
+ RSpec.configure do |config|
310
+ config.mock_with :rspec do |c|
311
+ c.yield_receiver_to_any_instance_implementation_blocks = true
312
+ end
313
+ end
314
+ END
315
+ end
316
+
317
+ it 'adds #yield_receiver_to_any_instance_implementation_blocks= statement' do
318
+ rewritten_source.should == expected_source
319
+ end
320
+ end
321
+
322
+ context 'when #mock_with block does not exist' do
323
+ let(:source) do
324
+ <<-END
325
+ RSpec.configure do |config|
326
+ end
327
+ END
328
+ end
329
+
330
+ let(:value) { true }
331
+
332
+ let(:expected_source) do
333
+ <<-END
334
+ RSpec.configure do |config|
335
+ config.mock_with :rspec do |c|
336
+ c.yield_receiver_to_any_instance_implementation_blocks = true
337
+ end
338
+ end
339
+ END
340
+ end
341
+
342
+ it 'adds #mock_with block ' +
343
+ 'and #yield_receiver_to_any_instance_implementation_blocks= statement' do
344
+ rewritten_source.should == expected_source
345
+ end
346
+
347
+ context "when RSpec.configure's argument variable name is `rspec`" do
348
+ let(:source) do
349
+ <<-END
350
+ RSpec.configure do |rspec|
351
+ end
352
+ END
353
+ end
354
+
355
+ let(:expected_source) do
356
+ <<-END
357
+ RSpec.configure do |rspec|
358
+ rspec.mock_with :rspec do |mocks|
359
+ mocks.yield_receiver_to_any_instance_implementation_blocks = true
360
+ end
361
+ end
362
+ END
363
+ end
364
+
365
+ it 'defines #mock_with block argument name as `mocks`' do
366
+ rewritten_source.should == expected_source
367
+ end
368
+ end
158
369
  end
159
370
  end
160
371
  end