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.
- checksums.yaml +4 -4
- data/.rubocop.yml +0 -4
- data/.travis.yml +2 -1
- data/CHANGELOG.md +4 -0
- data/Guardfile +1 -1
- data/README.md +168 -18
- data/README.md.erb +154 -18
- data/lib/transpec/ast/node.rb +47 -0
- data/lib/transpec/cli.rb +1 -1
- data/lib/transpec/commit_message.rb +11 -1
- data/lib/transpec/configuration.rb +11 -10
- data/lib/transpec/converter.rb +36 -14
- data/lib/transpec/dynamic_analyzer/rewriter.rb +2 -2
- data/lib/transpec/option_parser.rb +11 -0
- data/lib/transpec/report.rb +16 -9
- data/lib/transpec/rspec_version.rb +9 -0
- data/lib/transpec/static_context_inspector.rb +4 -4
- data/lib/transpec/syntax/allow.rb +20 -0
- data/lib/transpec/syntax/example.rb +1 -1
- data/lib/transpec/syntax/expect.rb +5 -20
- data/lib/transpec/syntax/its.rb +2 -8
- data/lib/transpec/syntax/method_stub.rb +72 -37
- data/lib/transpec/syntax/mixin/allow_no_message.rb +8 -17
- data/lib/transpec/syntax/mixin/any_instance_block.rb +34 -0
- data/lib/transpec/syntax/mixin/expect_base.rb +70 -0
- data/lib/transpec/syntax/mixin/expectizable.rb +3 -0
- data/lib/transpec/syntax/mixin/have_matcher_owner.rb +5 -2
- data/lib/transpec/syntax/mixin/monkey_patch.rb +6 -0
- data/lib/transpec/syntax/mixin/{any_instance.rb → monkey_patch_any_instance.rb} +12 -8
- data/lib/transpec/syntax/mixin/send.rb +16 -3
- data/lib/transpec/syntax/mixin/should_base.rb +8 -2
- data/lib/transpec/syntax/oneliner_should.rb +2 -4
- data/lib/transpec/syntax/operator_matcher.rb +2 -2
- data/lib/transpec/syntax/raise_error.rb +2 -2
- data/lib/transpec/syntax/receive.rb +49 -0
- data/lib/transpec/syntax/rspec_configure.rb +8 -96
- data/lib/transpec/syntax/rspec_configure/expectations.rb +15 -0
- data/lib/transpec/syntax/rspec_configure/framework.rb +166 -0
- data/lib/transpec/syntax/rspec_configure/mocks.rb +19 -0
- data/lib/transpec/syntax/should.rb +1 -4
- data/lib/transpec/syntax/should_receive.rb +89 -43
- data/lib/transpec/util.rb +21 -7
- data/lib/transpec/version.rb +2 -2
- data/spec/transpec/ast/node_spec.rb +52 -0
- data/spec/transpec/commit_message_spec.rb +2 -2
- data/spec/transpec/configuration_spec.rb +14 -13
- data/spec/transpec/converter_spec.rb +151 -20
- data/spec/transpec/option_parser_spec.rb +10 -0
- data/spec/transpec/rspec_version_spec.rb +20 -6
- data/spec/transpec/static_context_inspector_spec.rb +2 -2
- data/spec/transpec/syntax/allow_spec.rb +140 -0
- data/spec/transpec/syntax/double_spec.rb +1 -1
- data/spec/transpec/syntax/expect_spec.rb +103 -10
- data/spec/transpec/syntax/have_spec.rb +4 -4
- data/spec/transpec/syntax/method_stub_spec.rb +41 -1
- data/spec/transpec/syntax/operator_matcher_spec.rb +6 -6
- data/spec/transpec/syntax/receive_spec.rb +270 -0
- data/spec/transpec/syntax/rspec_configure_spec.rb +241 -30
- data/spec/transpec/syntax/should_receive_spec.rb +93 -2
- data/spec/transpec/syntax/should_spec.rb +2 -2
- data/spec/transpec/util_spec.rb +2 -6
- data/transpec.gemspec +5 -3
- metadata +37 -14
@@ -181,13 +181,13 @@ module Transpec
|
|
181
181
|
let(:parenthesize_arg) { false }
|
182
182
|
|
183
183
|
let(:expected_source) do
|
184
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
14
|
-
|
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.#{
|
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.#{
|
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.#{
|
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
|
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
|
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.#{
|
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
|
-
|
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
|
-
|
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.#{
|
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
|
-
|
114
|
+
<<-END
|
121
115
|
RSpec.configure do |config|
|
122
|
-
config.#{
|
116
|
+
config.#{framework_block_method} :rspec do |c|
|
123
117
|
c.syntax = :expect
|
124
118
|
end
|
125
119
|
end
|
126
|
-
|
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
|
-
|
132
|
+
<<-END
|
139
133
|
RSpec.configure do |config|
|
140
|
-
config.#{
|
134
|
+
config.#{framework_block_method} :rspec do |c|
|
141
135
|
c.syntax = [:should, :expect]
|
142
136
|
end
|
143
137
|
end
|
144
|
-
|
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
|
153
|
-
|
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
|
157
|
-
|
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
|