transpec 1.9.3 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -1
  3. data/.travis.yml +1 -1
  4. data/CHANGELOG.md +5 -0
  5. data/CONTRIBUTING.md +19 -0
  6. data/README.md +78 -9
  7. data/README.md.erb +68 -10
  8. data/lib/transpec/annotatable.rb +16 -0
  9. data/lib/transpec/cli.rb +35 -27
  10. data/lib/transpec/configuration.rb +1 -0
  11. data/lib/transpec/conversion_error.rb +23 -0
  12. data/lib/transpec/converter.rb +59 -50
  13. data/lib/transpec/dynamic_analyzer.rb +13 -29
  14. data/lib/transpec/dynamic_analyzer/rewriter.rb +3 -10
  15. data/lib/transpec/dynamic_analyzer/runtime_data.rb +16 -8
  16. data/lib/transpec/file_finder.rb +1 -1
  17. data/lib/transpec/git.rb +1 -1
  18. data/lib/transpec/option_parser.rb +12 -10
  19. data/lib/transpec/project.rb +3 -3
  20. data/lib/transpec/record.rb +19 -2
  21. data/lib/transpec/report.rb +29 -13
  22. data/lib/transpec/rspec_version.rb +7 -7
  23. data/lib/transpec/static_context_inspector.rb +1 -5
  24. data/lib/transpec/syntax.rb +11 -16
  25. data/lib/transpec/syntax/be_boolean.rb +1 -1
  26. data/lib/transpec/syntax/be_close.rb +1 -1
  27. data/lib/transpec/syntax/current_example.rb +88 -0
  28. data/lib/transpec/syntax/double.rb +1 -1
  29. data/lib/transpec/syntax/example.rb +60 -54
  30. data/lib/transpec/syntax/have.rb +27 -15
  31. data/lib/transpec/syntax/have/have_record.rb +12 -0
  32. data/lib/transpec/syntax/have/source_builder.rb +18 -16
  33. data/lib/transpec/syntax/its.rb +12 -11
  34. data/lib/transpec/syntax/matcher_definition.rb +1 -1
  35. data/lib/transpec/syntax/method_stub.rb +3 -7
  36. data/lib/transpec/syntax/mixin/matcher_owner.rb +2 -2
  37. data/lib/transpec/syntax/mixin/monkey_patch.rb +3 -5
  38. data/lib/transpec/syntax/mixin/monkey_patch_any_instance.rb +2 -4
  39. data/lib/transpec/syntax/mixin/owned_matcher.rb +1 -4
  40. data/lib/transpec/syntax/mixin/send.rb +7 -9
  41. data/lib/transpec/syntax/oneliner_should.rb +4 -4
  42. data/lib/transpec/syntax/operator.rb +27 -11
  43. data/lib/transpec/syntax/pending.rb +110 -0
  44. data/lib/transpec/syntax/raise_error.rb +1 -1
  45. data/lib/transpec/syntax/receive.rb +4 -4
  46. data/lib/transpec/syntax/rspec_configure/framework.rb +3 -3
  47. data/lib/transpec/syntax/should.rb +2 -2
  48. data/lib/transpec/syntax/should_receive.rb +3 -3
  49. data/lib/transpec/util.rb +38 -6
  50. data/lib/transpec/version.rb +2 -2
  51. data/spec/support/file_helper.rb +1 -1
  52. data/spec/support/shared_context.rb +3 -8
  53. data/spec/transpec/cli_spec.rb +63 -1
  54. data/spec/transpec/configuration_spec.rb +1 -0
  55. data/spec/transpec/converter_spec.rb +106 -15
  56. data/spec/transpec/dynamic_analyzer/rewriter_spec.rb +12 -52
  57. data/spec/transpec/dynamic_analyzer_spec.rb +2 -2
  58. data/spec/transpec/option_parser_spec.rb +3 -2
  59. data/spec/transpec/report_spec.rb +33 -4
  60. data/spec/transpec/rspec_version_spec.rb +5 -2
  61. data/spec/transpec/syntax/current_example_spec.rb +267 -0
  62. data/spec/transpec/syntax/example_spec.rb +156 -122
  63. data/spec/transpec/syntax/have_spec.rb +43 -32
  64. data/spec/transpec/syntax/method_stub_spec.rb +8 -0
  65. data/spec/transpec/syntax/operator_spec.rb +67 -2
  66. data/spec/transpec/syntax/pending_spec.rb +375 -0
  67. metadata +12 -4
  68. data/lib/transpec/context_error.rb +0 -23
@@ -65,8 +65,9 @@ module Transpec
65
65
  ['oneliner', :convert_oneliner?],
66
66
  ['should_receive', :convert_should_receive?],
67
67
  ['stub', :convert_stub?],
68
- ['have_items', :convert_have_items],
69
- ['its', :convert_its],
68
+ ['have_items', :convert_have_items?],
69
+ ['its', :convert_its?],
70
+ ['pending', :convert_pending?],
70
71
  ['deprecated', :convert_deprecated_method?]
71
72
  ].each do |cli_type, config_attr|
72
73
  context "when #{cli_type.inspect} is specified" do
@@ -10,10 +10,10 @@ module Transpec
10
10
  subject(:report) { Report.new }
11
11
 
12
12
  before do
13
- report.records << Record.new('obj.stub(:message)', 'allow(obj).to receive(:message)')
13
+ report.records << Record.new('obj.stub(:message)', 'allow(obj).to receive(:message)', double('annotation'))
14
14
  report.records << Record.new('obj.should', 'expect(obj).to')
15
- report.records << Record.new('obj.should', 'expect(obj).to')
16
- report.context_errors << ContextError.new(double('range'), '#should', '#expect')
15
+ report.records << Record.new('obj.should', 'expect(obj).to', double('annotation'))
16
+ report.conversion_errors << ContextError.new('#should', '#expect', double('range'))
17
17
  end
18
18
 
19
19
  describe '#unique_record_counts' do
@@ -81,7 +81,36 @@ module Transpec
81
81
 
82
82
  describe '#stats' do
83
83
  it 'returns stats string' do
84
- report.stats.should == '3 conversions, 1 incomplete, 0 errors'
84
+ report.stats.should == '3 conversions, 1 incomplete, 2 cautions, 0 errors'
85
+ end
86
+ end
87
+
88
+ describe '#<<' do
89
+ subject(:concated_report) { report << another_report }
90
+
91
+ let(:another_report) do
92
+ report = Report.new
93
+ report.records << Record.new('obj.stub(:message)', 'allow(obj).to receive(:message)')
94
+ report.conversion_errors << ContextError.new('#should', '#expect', double('range'))
95
+ report.conversion_errors << ContextError.new('#stub', '#allow', double('range'))
96
+ report.syntax_errors << double('syntax error')
97
+ report
98
+ end
99
+
100
+ it 'returns the receiver' do
101
+ concated_report.should equal(report)
102
+ end
103
+
104
+ it 'concats records' do
105
+ concated_report.should have(4).records
106
+ end
107
+
108
+ it 'concats conversion errors' do
109
+ concated_report.should have(3).conversion_errors
110
+ end
111
+
112
+ it 'concats syntax errors' do
113
+ concated_report.should have(1).syntax_errors
85
114
  end
86
115
  end
87
116
  end
@@ -39,7 +39,10 @@ module Transpec
39
39
  ]
40
40
  end
41
41
 
42
- [:oneliner_is_expected_available?].each do |method|
42
+ [
43
+ :oneliner_is_expected_available?,
44
+ :skip_available?
45
+ ].each do |method|
43
46
  include_examples 'version comparisons', method, [
44
47
  ['2.14.0', false],
45
48
  ['2.99.0.beta1', false],
@@ -75,7 +78,7 @@ module Transpec
75
78
  ]
76
79
  end
77
80
 
78
- include_examples 'version comparisons', :migration_term_of_any_instance_implementation_block?, [
81
+ include_examples 'version comparisons', :rspec_2_99?, [
79
82
  ['2.14.0', false],
80
83
  ['2.99.0.beta1', true],
81
84
  ['2.99.0.beta2', true],
@@ -0,0 +1,267 @@
1
+ # coding: utf-8
2
+
3
+ require 'spec_helper'
4
+ require 'transpec/syntax/current_example'
5
+
6
+ module Transpec
7
+ class Syntax
8
+ describe CurrentExample do
9
+ include_context 'parsed objects'
10
+ include_context 'syntax object', CurrentExample, :current_example_object
11
+
12
+ let(:record) { current_example_object.report.records.last }
13
+
14
+ describe '#convert!' do
15
+ before do
16
+ current_example_object.convert! unless example.metadata[:no_auto_convert]
17
+ end
18
+
19
+ (RSpecDSL::EXAMPLE_METHODS + RSpecDSL::HOOK_METHODS).each do |method|
20
+ context "when it is `#{method} do example end` form" do
21
+ let(:source) do
22
+ <<-END
23
+ describe 'example' do
24
+ #{method} do
25
+ do_something if example.metadata[:foo]
26
+ end
27
+ end
28
+ END
29
+ end
30
+
31
+ let(:expected_source) do
32
+ <<-END
33
+ describe 'example' do
34
+ #{method} do |example|
35
+ do_something if example.metadata[:foo]
36
+ end
37
+ end
38
+ END
39
+ end
40
+
41
+ it "converts into `#{method} do |example| example end` form" do
42
+ rewritten_source.should == expected_source
43
+ end
44
+
45
+ it "adds record `#{method} { example }` -> `#{method} { |example| example }`" do
46
+ record.original_syntax.should == "#{method} { example }"
47
+ record.converted_syntax.should == "#{method} { |example| example }"
48
+ end
49
+ end
50
+ end
51
+
52
+ RSpecDSL::HELPER_METHODS.each do |method|
53
+ context "when it is `#{method}(:name) do example end` form" do
54
+ let(:source) do
55
+ <<-END
56
+ describe 'example' do
57
+ #{method}(:name) do
58
+ do_something if example.metadata[:foo]
59
+ end
60
+ end
61
+ END
62
+ end
63
+
64
+ let(:expected_source) do
65
+ <<-END
66
+ describe 'example' do
67
+ #{method}(:name) do |example|
68
+ do_something if example.metadata[:foo]
69
+ end
70
+ end
71
+ END
72
+ end
73
+
74
+ it "converts into `#{method}(:name) do |example| example end` form" do
75
+ rewritten_source.should == expected_source
76
+ end
77
+
78
+ it "adds record `#{method}(:name) { example }` -> `#{method}(:name) { |example| example }`" do
79
+ record.original_syntax.should == "#{method}(:name) { example }"
80
+ record.converted_syntax.should == "#{method}(:name) { |example| example }"
81
+ end
82
+ end
83
+ end
84
+
85
+ context 'when it is `after { example }` form' do
86
+ let(:source) do
87
+ <<-END
88
+ describe 'example' do
89
+ after {
90
+ do_something if example.metadata[:foo]
91
+ }
92
+ end
93
+ END
94
+ end
95
+
96
+ let(:expected_source) do
97
+ <<-END
98
+ describe 'example' do
99
+ after { |example|
100
+ do_something if example.metadata[:foo]
101
+ }
102
+ end
103
+ END
104
+ end
105
+
106
+ it 'converts into `after { |example| example }` form' do
107
+ rewritten_source.should == expected_source
108
+ end
109
+ end
110
+
111
+ context 'when it is `after do running_example end` form' do
112
+ let(:source) do
113
+ <<-END
114
+ describe 'example' do
115
+ after do
116
+ do_something if running_example.metadata[:foo]
117
+ end
118
+ end
119
+ END
120
+ end
121
+
122
+ let(:expected_source) do
123
+ <<-END
124
+ describe 'example' do
125
+ after do |example|
126
+ do_something if example.metadata[:foo]
127
+ end
128
+ end
129
+ END
130
+ end
131
+
132
+ it 'converts into `after do |example| example end` form' do
133
+ rewritten_source.should == expected_source
134
+ end
135
+ end
136
+
137
+ context 'when the wrapper block contains multiple invocation of `example`', :no_auto_convert do
138
+ let(:source) do
139
+ <<-END
140
+ describe 'example' do
141
+ after do
142
+ do_something if example.metadata[:foo]
143
+ puts example.description
144
+ end
145
+ end
146
+ END
147
+ end
148
+
149
+ let(:expected_source) do
150
+ <<-END
151
+ describe 'example' do
152
+ after do |example|
153
+ do_something if example.metadata[:foo]
154
+ puts example.description
155
+ end
156
+ end
157
+ END
158
+ end
159
+
160
+ let(:current_example_objects) do
161
+ ast.each_node.reduce([]) do |objects, node|
162
+ if CurrentExample.conversion_target_node?(node)
163
+ objects << CurrentExample.new(node, source_rewriter, runtime_data)
164
+ end
165
+ objects
166
+ end
167
+ end
168
+
169
+ it 'adds only a block argument' do
170
+ current_example_objects.size.should eq(2)
171
+ current_example_objects.each(&:convert!)
172
+ rewritten_source.should == expected_source
173
+ end
174
+ end
175
+
176
+ context 'when it is `around do |ex| example end` form' do
177
+ let(:source) do
178
+ <<-END
179
+ describe 'example' do
180
+ around do |ex|
181
+ do_something if example.metadata[:foo]
182
+ end
183
+ end
184
+ END
185
+ end
186
+
187
+ let(:expected_source) do
188
+ <<-END
189
+ describe 'example' do
190
+ around do |ex|
191
+ do_something if ex.metadata[:foo]
192
+ end
193
+ end
194
+ END
195
+ end
196
+
197
+ it 'converts into `around do |ex| ex end` form' do
198
+ rewritten_source.should == expected_source
199
+ end
200
+ end
201
+
202
+ context "when it is `example 'it does something' do do_something end` form", :no_auto_convert do
203
+ let(:source) do
204
+ <<-END
205
+ describe 'example' do
206
+ example 'it does something' do
207
+ do_something
208
+ end
209
+ end
210
+ END
211
+ end
212
+
213
+ it 'does nothing' do
214
+ rewritten_source.should == source
215
+ end
216
+ end
217
+
218
+ context 'when it is `def helper_method example; end` form' do
219
+ let(:source) do
220
+ <<-END
221
+ module Helper
222
+ def display_description
223
+ puts example.description
224
+ end
225
+ end
226
+
227
+ describe 'example' do
228
+ include Helper
229
+
230
+ after do
231
+ display_description
232
+ end
233
+ end
234
+ END
235
+ end
236
+
237
+ let(:expected_source) do
238
+ <<-END
239
+ module Helper
240
+ def display_description
241
+ puts RSpec.current_example.description
242
+ end
243
+ end
244
+
245
+ describe 'example' do
246
+ include Helper
247
+
248
+ after do
249
+ display_description
250
+ end
251
+ end
252
+ END
253
+ end
254
+
255
+ it 'converts into `def helper_method RSpec.current_example; end` form' do
256
+ rewritten_source.should == expected_source
257
+ end
258
+
259
+ it 'adds record `def helper_method example; end` -> `def helper_method RSpec.current_example; end`' do
260
+ record.original_syntax.should == 'def helper_method example; end'
261
+ record.converted_syntax.should == 'def helper_method RSpec.current_example; end'
262
+ end
263
+ end
264
+ end
265
+ end
266
+ end
267
+ end
@@ -2,181 +2,164 @@
2
2
 
3
3
  require 'spec_helper'
4
4
  require 'transpec/syntax/example'
5
+ require 'ast'
5
6
 
6
7
  module Transpec
7
8
  class Syntax
8
9
  describe Example do
10
+ include ::AST::Sexp
9
11
  include_context 'parsed objects'
10
12
  include_context 'syntax object', Example, :example_object
11
13
 
12
14
  let(:record) { example_object.report.records.last }
13
15
 
14
- describe '#convert!' do
15
- before do
16
- example_object.convert! unless example.metadata[:no_auto_convert]
17
- end
18
-
19
- (RSpecDSL::EXAMPLE_METHODS + RSpecDSL::HOOK_METHODS).each do |method|
20
- context "when it is `#{method} do example end` form" do
21
- let(:source) do
22
- <<-END
23
- describe 'example' do
24
- #{method} do
25
- do_something if example.metadata[:foo]
26
- end
27
- end
28
- END
29
- end
30
-
31
- let(:expected_source) do
32
- <<-END
33
- describe 'example' do
34
- #{method} do |example|
35
- do_something if example.metadata[:foo]
36
- end
37
- end
38
- END
39
- end
40
-
41
- it "converts into `#{method} do |example| example end` form" do
42
- rewritten_source.should == expected_source
43
- end
16
+ describe '.conversion_target_node?' do
17
+ subject { Example.conversion_target_node?(pending_node, runtime_data) }
44
18
 
45
- it "adds record `#{method} { example }` -> `#{method} { |example| example }`" do
46
- record.original_syntax.should == "#{method} { example }"
47
- record.converted_syntax.should == "#{method} { |example| example }"
48
- end
19
+ let(:pending_node) do
20
+ ast.each_descendent_node do |node|
21
+ next unless node.send_type?
22
+ method_name = node.children[1]
23
+ return node if method_name == :pending
49
24
  end
25
+ fail 'No #pending node is found!'
50
26
  end
51
27
 
52
- RSpecDSL::HELPER_METHODS.each do |method|
53
- context "when it is `#{method}(:name) do example end` form" do
54
- let(:source) do
55
- <<-END
56
- describe 'example' do
57
- #{method}(:name) do
58
- do_something if example.metadata[:foo]
59
- end
60
- end
61
- END
62
- end
63
-
64
- let(:expected_source) do
65
- <<-END
66
- describe 'example' do
67
- #{method}(:name) do |example|
68
- do_something if example.metadata[:foo]
69
- end
28
+ context 'when #pending example node is passed' do
29
+ let(:source) do
30
+ <<-END
31
+ describe 'example' do
32
+ pending 'will be skipped' do
70
33
  end
71
- END
72
- end
34
+ end
35
+ END
36
+ end
73
37
 
74
- it "converts into `#{method}(:name) do |example| example end` form" do
75
- rewritten_source.should == expected_source
76
- end
38
+ context 'without runtime information' do
39
+ it { should be_true }
40
+ end
77
41
 
78
- it "adds record `#{method}(:name) { example }` -> `#{method}(:name) { |example| example }`" do
79
- record.original_syntax.should == "#{method}(:name) { example }"
80
- record.converted_syntax.should == "#{method}(:name) { |example| example }"
81
- end
42
+ context 'with runtime information' do
43
+ include_context 'dynamic analysis objects'
44
+ it { should be_true }
82
45
  end
83
46
  end
84
47
 
85
- context 'when it is `after { example }` form' do
48
+ context 'when #pending specification node inside of an example is passed' do
86
49
  let(:source) do
87
50
  <<-END
88
51
  describe 'example' do
89
- after {
90
- do_something if example.metadata[:foo]
91
- }
52
+ it 'will be skipped' do
53
+ pending
54
+ end
92
55
  end
93
56
  END
94
57
  end
95
58
 
96
- let(:expected_source) do
59
+ context 'without runtime information' do
60
+ it { should be_false }
61
+ end
62
+
63
+ context 'with runtime information' do
64
+ include_context 'dynamic analysis objects'
65
+ it { should be_false }
66
+ end
67
+ end
68
+ end
69
+
70
+ describe '#metadata_key_nodes' do
71
+ subject { example_object.metadata_key_nodes }
72
+
73
+ context 'when it is `it { }` form' do
74
+ let(:source) do
97
75
  <<-END
98
76
  describe 'example' do
99
- after { |example|
100
- do_something if example.metadata[:foo]
101
- }
77
+ it { do_something }
102
78
  end
103
79
  END
104
80
  end
105
81
 
106
- it 'converts into `after { |example| example }` form' do
107
- rewritten_source.should == expected_source
82
+ it 'returns empty array' do
83
+ should be_empty
108
84
  end
109
85
  end
110
86
 
111
- context 'when it is `after do running_example end` form' do
87
+ context "when it is `it 'description' { }` form" do
112
88
  let(:source) do
113
89
  <<-END
114
90
  describe 'example' do
115
- after do
116
- do_something if running_example.metadata[:foo]
91
+ it 'is an example' do
92
+ do_something
117
93
  end
118
94
  end
119
95
  END
120
96
  end
121
97
 
122
- let(:expected_source) do
98
+ it 'returns empty array' do
99
+ should be_empty
100
+ end
101
+ end
102
+
103
+ context "when it is `it 'description', :foo { }` form" do
104
+ let(:source) do
123
105
  <<-END
124
106
  describe 'example' do
125
- after do |example|
126
- do_something if example.metadata[:foo]
107
+ it 'is an example', :foo do
108
+ do_something
127
109
  end
128
110
  end
129
111
  END
130
112
  end
131
113
 
132
- it 'converts into `after do |example| example end` form' do
133
- rewritten_source.should == expected_source
114
+ it 'returns [(sym :foo)]' do
115
+ should == [s(:sym, :foo)]
134
116
  end
135
117
  end
136
118
 
137
- context 'when the wrapper block contains multiple invocation of `example`', :no_auto_convert do
119
+ context "when it is `it 'description', foo: true { }` form" do
138
120
  let(:source) do
139
121
  <<-END
140
122
  describe 'example' do
141
- after do
142
- do_something if example.metadata[:foo]
143
- puts example.description
123
+ it 'is an example', foo: true do
124
+ do_something
144
125
  end
145
126
  end
146
127
  END
147
128
  end
148
129
 
149
- let(:expected_source) do
130
+ it 'returns [(sym :foo)]' do
131
+ should == [s(:sym, :foo)]
132
+ end
133
+ end
134
+
135
+ context "when it is `it 'description', :foo, :bar, baz: true { }` form" do
136
+ let(:source) do
150
137
  <<-END
151
138
  describe 'example' do
152
- after do |example|
153
- do_something if example.metadata[:foo]
154
- puts example.description
139
+ it 'is an example', :foo, :bar, baz: true do
140
+ do_something
155
141
  end
156
142
  end
157
143
  END
158
144
  end
159
145
 
160
- let(:example_objects) do
161
- ast.each_node.reduce([]) do |objects, node|
162
- objects << Example.new(node, source_rewriter, runtime_data) if Example.conversion_target_node?(node)
163
- objects
164
- end
146
+ it 'returns [s(:sym, :foo), s(:sym, :bar), s(:sym, :baz)]' do
147
+ should == [s(:sym, :foo), s(:sym, :bar), s(:sym, :baz)]
165
148
  end
149
+ end
150
+ end
166
151
 
167
- it 'adds only a block argument' do
168
- example_objects.size.should eq(2)
169
- example_objects.each(&:convert!)
170
- rewritten_source.should == expected_source
171
- end
152
+ describe '#convert_pending_to_skip!' do
153
+ before do
154
+ example_object.convert_pending_to_skip!
172
155
  end
173
156
 
174
- context 'when it is `around do |ex| example end` form' do
157
+ context "when it is `pending 'is an example' { }` form" do
175
158
  let(:source) do
176
159
  <<-END
177
160
  describe 'example' do
178
- around do |ex|
179
- do_something if example.metadata[:foo]
161
+ pending 'will be skipped' do
162
+ do_something
180
163
  end
181
164
  end
182
165
  END
@@ -185,23 +168,28 @@ module Transpec
185
168
  let(:expected_source) do
186
169
  <<-END
187
170
  describe 'example' do
188
- around do |ex|
189
- do_something if ex.metadata[:foo]
171
+ skip 'will be skipped' do
172
+ do_something
190
173
  end
191
174
  end
192
175
  END
193
176
  end
194
177
 
195
- it 'converts into `around do |ex| ex end` form' do
178
+ it "converts into `skip 'is an example' { }` form" do
196
179
  rewritten_source.should == expected_source
197
180
  end
181
+
182
+ it "adds record `pending 'is an example' { }` -> `skip 'is an example' { }`" do
183
+ record.original_syntax.should == "pending 'is an example' { }"
184
+ record.converted_syntax.should == "skip 'is an example' { }"
185
+ end
198
186
  end
199
187
 
200
- context "when it is `example 'it does something' do do_something end` form", :no_auto_convert do
188
+ context "when it is `it 'is an example' { }` form" do
201
189
  let(:source) do
202
190
  <<-END
203
191
  describe 'example' do
204
- example 'it does something' do
192
+ it 'is normal example' do
205
193
  do_something
206
194
  end
207
195
  end
@@ -213,20 +201,43 @@ module Transpec
213
201
  end
214
202
  end
215
203
 
216
- context 'when it is `def helper_method example; end` form' do
204
+ context "when it is `it 'is an example', :pending { }` form" do
217
205
  let(:source) do
218
206
  <<-END
219
- module Helper
220
- def display_description
221
- puts example.description
207
+ describe 'example' do
208
+ it 'will be skipped', :pending do
209
+ do_something
222
210
  end
223
211
  end
212
+ END
213
+ end
224
214
 
215
+ let(:expected_source) do
216
+ <<-END
225
217
  describe 'example' do
226
- include Helper
218
+ it 'will be skipped', :skip do
219
+ do_something
220
+ end
221
+ end
222
+ END
223
+ end
224
+
225
+ it "converts into `it 'is an example', :skip { }` form" do
226
+ rewritten_source.should == expected_source
227
+ end
227
228
 
228
- after do
229
- display_description
229
+ it "adds record `it 'is an example', :pending { }` -> `it 'is an example', :skip { }`" do
230
+ record.original_syntax.should == "it 'is an example', :pending { }"
231
+ record.converted_syntax.should == "it 'is an example', :skip { }"
232
+ end
233
+ end
234
+
235
+ context "when it is `it 'description', :pending => true { }` form" do
236
+ let(:source) do
237
+ <<-END
238
+ describe 'example' do
239
+ it 'will be skipped', :pending => true do
240
+ do_something
230
241
  end
231
242
  end
232
243
  END
@@ -234,29 +245,52 @@ module Transpec
234
245
 
235
246
  let(:expected_source) do
236
247
  <<-END
237
- module Helper
238
- def display_description
239
- puts RSpec.current_example.description
248
+ describe 'example' do
249
+ it 'will be skipped', :skip => true do
250
+ do_something
240
251
  end
241
252
  end
253
+ END
254
+ end
255
+
256
+ it "converts into `it 'description', :skip => true { }` form" do
257
+ rewritten_source.should == expected_source
258
+ end
259
+
260
+ it "adds record `it 'is an example', :pending => value { }` -> `it 'is an example', :skip => value { }`" do
261
+ record.original_syntax.should == "it 'is an example', :pending => value { }"
262
+ record.converted_syntax.should == "it 'is an example', :skip => value { }"
263
+ end
264
+ end
242
265
 
266
+ context "when it is `it 'description', pending: true { }` form" do
267
+ let(:source) do
268
+ <<-END
243
269
  describe 'example' do
244
- include Helper
270
+ it 'will be skipped', pending: true do
271
+ do_something
272
+ end
273
+ end
274
+ END
275
+ end
245
276
 
246
- after do
247
- display_description
277
+ let(:expected_source) do
278
+ <<-END
279
+ describe 'example' do
280
+ it 'will be skipped', skip: true do
281
+ do_something
248
282
  end
249
283
  end
250
284
  END
251
285
  end
252
286
 
253
- it 'converts into `def helper_method RSpec.current_example; end` form' do
287
+ it "converts into `it 'description', skip: true { }` form" do
254
288
  rewritten_source.should == expected_source
255
289
  end
256
290
 
257
- it 'adds record `def helper_method example; end` -> `def helper_method RSpec.current_example; end`' do
258
- record.original_syntax.should == 'def helper_method example; end'
259
- record.converted_syntax.should == 'def helper_method RSpec.current_example; end'
291
+ it "adds record `it 'is an example', :pending => value { }` -> `it 'is an example', :skip => value { }`" do
292
+ record.original_syntax.should == "it 'is an example', :pending => value { }"
293
+ record.converted_syntax.should == "it 'is an example', :skip => value { }"
260
294
  end
261
295
  end
262
296
  end