transpec 1.9.3 → 1.10.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 (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