cucumber-in-the-yard 1.6.1 → 1.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. data/History.txt +13 -0
  2. data/README.md +27 -50
  3. data/example/child_feature/grandchild_feature/scenario.feature +52 -0
  4. data/example/child_feature/scenario.feature +52 -0
  5. data/example/scenario.feature +51 -0
  6. data/example/scenario_outline.feature +60 -0
  7. data/example/step_definitions/example.step.rb +7 -2
  8. data/example/step_definitions/first.step.rb +15 -0
  9. data/example/step_definitions/support/support.rb +6 -0
  10. data/example/transform.feature +13 -0
  11. data/lib/city.rb +2 -1
  12. data/lib/cucumber/city_builder.rb +10 -0
  13. data/lib/templates/default/feature/html/no_steps_defined.erb +1 -1
  14. data/lib/templates/default/feature/html/outline.erb +36 -29
  15. data/lib/templates/default/feature/html/scenario.erb +1 -1
  16. data/lib/templates/default/feature/html/steps.erb +20 -8
  17. data/lib/templates/default/feature/html/table.erb +16 -16
  18. data/lib/templates/default/feature/setup.rb +1 -1
  19. data/lib/templates/default/{tags → featuretags}/html/namespace.erb +0 -0
  20. data/lib/templates/default/{tags → featuretags}/html/setup.rb +0 -0
  21. data/lib/templates/default/fulldoc/html/css/common.css +25 -5
  22. data/lib/templates/default/requirements/html/namespace.erb +47 -34
  23. data/lib/templates/default/requirements/html/setup.rb +16 -5
  24. data/lib/templates/default/steptransformers/html/transformers.erb +5 -0
  25. data/lib/templates/default/steptransformers/html/undefined_steps.erb +30 -0
  26. data/lib/templates/default/steptransformers/setup.rb +17 -7
  27. data/lib/yard/code_objects/cucumber/namespace_object.rb +2 -2
  28. data/lib/yard/code_objects/step_definition.rb +2 -35
  29. data/lib/yard/code_objects/step_transform.rb +1 -34
  30. data/lib/yard/code_objects/step_transformer.rb +50 -0
  31. data/lib/yard/handlers/cucumber/feature_handler.rb +1 -1
  32. data/lib/yard/handlers/step_definition_handler.rb +0 -36
  33. data/lib/yard/handlers/step_transform_handler.rb +1 -33
  34. metadata +27 -22
  35. data/.autotest +0 -15
  36. data/autotest/discover.rb +0 -3
  37. data/example/example.third.feature +0 -33
  38. data/example/first_example.feature +0 -19
  39. data/example/second_example.feature +0 -51
  40. data/example/sub_features/second_example.feature +0 -51
  41. data/spec/city/feature_parser_spec_examples.rb +0 -153
  42. data/spec/city/gherkin_loader_spec.rb +0 -39
  43. data/spec/city/test.feature +0 -36
  44. data/spec/city/yard_handlers_cucumber_spec.rb +0 -24
  45. data/spec/city/yard_namespace_object_spec.rb +0 -8
  46. data/spec/city/yard_parser_cucumber_spec.rb +0 -215
  47. data/spec/city/yard_rb_extensions_spec.rb +0 -128
  48. data/spec/spec_helper.rb +0 -5
@@ -1,215 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
- require File.dirname(__FILE__) + '/feature_parser_spec_examples.rb'
3
-
4
- module YARD::Parser::Cucumber
5
-
6
- describe YARD::CodeObjects::Cucumber::Tag do
7
-
8
- [:value].each do |attribute|
9
- it "should respond to method #{attribute}" do
10
- YARD::CodeObjects::Cucumber::Tag.new(:root,"tag_name").should respond_to(attribute)
11
- end
12
- end
13
-
14
- end
15
-
16
- describe YARD::CodeObjects::Cucumber::Step do
17
-
18
- [:value, :definition].each do |attribute|
19
- it "should respond to method #{attribute}" do
20
- YARD::CodeObjects::Cucumber::Step.new(:root,"name").should respond_to(attribute)
21
- end
22
- end
23
-
24
- it "should return the line prefix and the remainder" do
25
- step = YARD::CodeObjects::Cucumber::Step.new(:root,"name") {|s| s.value = "Given something something" }
26
- step.keyword.should == "Given"
27
- step.line.should == "something something"
28
- end
29
-
30
- end
31
-
32
- describe YARD::CodeObjects::Cucumber::Scenario do
33
-
34
- [:value, :description, :steps, :tags ].each do |attribute|
35
- it "should respond to method #{attribute}" do
36
- YARD::CodeObjects::Cucumber::Scenario.new(:root,"name").should respond_to(attribute)
37
- end
38
- end
39
-
40
- end
41
-
42
- describe YARD::CodeObjects::Cucumber::Feature do
43
-
44
- [:value, :description, :scenarios, :background, :tags ].each do |attribute|
45
- it "should respond to method #{attribute}" do
46
- YARD::CodeObjects::Cucumber::Feature.new(:root,"name").should respond_to(attribute)
47
- end
48
- end
49
-
50
- end
51
-
52
-
53
- describe FeatureParser do
54
-
55
-
56
- it "should accept source and a file when created" do
57
- lambda { FeatureParser.new("source code","filename") }.should_not raise_exception(Exception)
58
- end
59
-
60
- [ "parse", "tokenize", "enumerator" ].each do |required_method|
61
- it "should have a method named #{required_method}" do
62
- FeatureParser.instance_methods.should include(required_method)
63
- end
64
- end
65
-
66
- it "should return itself when parse is called" do
67
- parser = FeatureParser.new("source","filename")
68
- parser.parse.should == parser
69
- end
70
-
71
- context "feature file with tags, feature, and description" do
72
-
73
- before(:all) do
74
- @feature = { :file => 'new.exciting.feature',
75
- :name => "New Exciting Feature",
76
- :tags => [ "@bvt", "@build", "@wip" ],
77
- :description => [ "This feature is going to save the company." ] }
78
-
79
- @parser = FeatureParser.new(%{
80
- #{@feature[:tags].join(" ")}
81
- Feature: #{@feature[:name]}
82
- #{@feature[:description].join("\n")}
83
- },@feature[:file])
84
-
85
- @parser = @parser.parse
86
- end
87
-
88
- after(:all) do
89
- @parser = nil
90
- end
91
-
92
- it_should_behave_like "a feature file"
93
-
94
- end
95
-
96
- context "feature file with a description that uses step keywords" do
97
-
98
- before(:all) do
99
- @feature = { :file => 'description.with.keywords.feature',
100
- :name => "Fully Described Feature",
101
- :tags => [ "@bvt", "@build", "@wip" ],
102
- :description => ["As a product owner",
103
- "When I ask about the work done",
104
- "Then I want to see what this cukes things is all about",
105
- "And I really want a straight answer",
106
- "Given that I can be provided with one"] }
107
-
108
- @parser = FeatureParser.new(%{
109
- #{@feature[:tags].join(" ")}
110
- Feature: #{@feature[:name]}
111
- #{@feature[:description].join("\n")}
112
- },@feature[:file])
113
-
114
- @parser = @parser.parse
115
- end
116
-
117
- after(:all) do
118
- @parser = nil
119
- end
120
-
121
- it_should_behave_like "a feature file"
122
-
123
- end
124
-
125
-
126
- context "feature file with background and one scenario" do
127
-
128
- before(:all) do
129
-
130
- @feature = { :file => "ninja.exciting.feature",
131
- :name => "Ninja Feature Set",
132
- :tags => [ "@bvt", "@build", "@wip" ],
133
- :description => ["This feature is going to save the company"] }
134
-
135
- @background = [ "Given that I have taken a nap" ]
136
-
137
- @scenarios = [ { :tags => ["@ninja"],
138
- :title => ["Ninja striking an opponent in the morning"],
139
- :steps => [ "Given that there is an opponent",
140
- "And a reason to fight him",
141
- "When I karate strike him",
142
- "Then I expect him to fall" ] } ]
143
-
144
- @parser = FeatureParser.new(%{
145
- #{@feature[:tags].join(" ")}
146
- Feature: #{@feature[:name]}
147
- #{@feature[:description].join("\n")}
148
- Background:
149
- #{@background.join("\n")}
150
- #{@scenarios.first[:tags].join(" ")}
151
- Scenario: #{@scenarios.first[:title].join("\n")}
152
- #{@scenarios.first[:steps].join("\n")}
153
- },@feature[:file])
154
- @parser = @parser.parse
155
- end
156
-
157
- after(:all) do
158
- @parser = nil
159
- end
160
-
161
- it_should_behave_like "a feature file"
162
- it_should_behave_like "a feature file with a background"
163
- it_should_behave_like "a feature file with scenarios"
164
-
165
- end
166
-
167
- context "feature file no background and multiple scenarios" do
168
-
169
- before(:all) do
170
-
171
- @feature = { :file => "ninja.strike.feature",
172
- :name => "Ninja Feature Set",
173
- :tags => [ "@kill", "@silently", "@sneak" ],
174
- :description => ["This feature is going to save the company"] }
175
-
176
- @scenarios = [
177
- { :tags => ["@ninja"],
178
- :title => ["Killing Scenario"],
179
- :steps => [ "Given that there is an opponent",
180
- "And a reason to fight him",
181
- "When I karate strike him",
182
- "Then I expect him to fall" ] },
183
- { :tags => [],
184
- :title => ["Dissappearing Scenario"],
185
- :steps => [ "Given that I have defeated an opponent",
186
- "And there are no more opponents",
187
- "When I stop to take a breath",
188
- "Then I expect to dissapear" ] } ]
189
-
190
- @parser = FeatureParser.new(%{
191
- #{@feature[:tags].join(" ")}
192
- Feature: #{@feature[:name]}
193
- #{@feature[:description].join("\n")}
194
- #{@scenarios.collect {|scenario|
195
- scenario[:tags].join(" ") +
196
- "\nScenario: " + scenario[:title].join("\n") + "\n" +
197
- scenario[:steps].join("\n")
198
- }.join("\n")}},@feature[:file])
199
- @parser = @parser.parse
200
- end
201
-
202
- after(:all) do
203
- @parser = nil
204
- end
205
-
206
- it_should_behave_like "a feature file"
207
- it_should_behave_like "a feature file with scenarios"
208
-
209
- end
210
-
211
-
212
-
213
- end
214
-
215
- end
@@ -1,128 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
-
3
- module YARD::CodeObjects
4
-
5
- describe YARD::CodeObjects do
6
-
7
- shared_examples_for "CodeObjects" do
8
- it "should respond to all defined attributes" do
9
- @attributes.each {|attribute| @object.should respond_to(attribute) }
10
- end
11
- end
12
-
13
- describe StepDefinitionObject do
14
-
15
- before(:each) do
16
- @attributes = [ :value, :keyword, :constants, :compare_value ]
17
- @object = StepDefinitionObject.new(:root,:unique_name)
18
- end
19
-
20
- class TestObject
21
- attr_accessor :name, :value
22
- def initialize ; yield self ; end
23
- end
24
-
25
- it_should_behave_like "CodeObjects"
26
-
27
- describe "compare_value" do
28
-
29
- [ { :value => "/THERE (?:IS|ARE) THREE \#\{ CONSTANTS \} IN HERE \#\{ FOR\} YOU TO \#\{FIND \}",
30
- :results => [ 'CONSTANTS', 'FOR', 'FIND' ] } ].each do |data|
31
-
32
- it "should find all the constants within the step definition" do
33
-
34
- stepdef = StepDefinitionObject.new(:root,"name")
35
- stepdef.value = data[:value]
36
-
37
-
38
- data[:results].each do |result|
39
- stepdef._value_constants(data[:value]).should include(result)
40
- stepdef._value_constants.should include(result)
41
- end
42
-
43
- end
44
- end
45
-
46
-
47
- [ { :value => "/WHEN THE \#\{NOUN\} HITS THE FAN/",
48
- :constants => [ TestObject.new{|c| c.name = "NOUN" ; c.value = "/SMURF/" } ], :result => "WHEN THE SMURF HITS THE FAN" },
49
-
50
- { :value => "/\#\{ SUBJECT \} WALK INTO THE \#\{ PLACE\} AND ASK THE \#\{PERSON \}/",
51
- :constants => [ TestObject.new{|c| c.name = "SUBJECT" ; c.value = "/1 PERSON/" },
52
- TestObject.new{|c| c.name = "PLACE" ; c.value = "/BAR/" },
53
- TestObject.new{|c| c.name = "PERSON" ; c.value = "/BARTENDER/" } ],
54
- :result => "1 PERSON WALK INTO THE BAR AND ASK THE BARTENDER" },
55
-
56
- ].each do |data|
57
-
58
- it "should replace all constants found within (#{data[:value]}) the value" do
59
-
60
- stepdef = StepDefinitionObject.new(:root,"name")
61
- stepdef.value = data[:value]
62
- stepdef.constants = data[:constants]
63
-
64
- stepdef.compare_value.should == data[:result]
65
-
66
- end
67
-
68
- end
69
-
70
-
71
- end
72
-
73
-
74
-
75
- end
76
-
77
- describe StepTransformObject do
78
-
79
- before(:each) do
80
- @attributes = [ :value ]
81
- @object = StepTransformObject.new(:root,:unique_name)
82
- end
83
-
84
- it_should_behave_like "CodeObjects"
85
-
86
- end
87
-
88
- end
89
-
90
- end
91
-
92
- module YARD::Handlers::Ruby::Legacy
93
-
94
- describe YARD::Handlers::Ruby::Legacy do
95
-
96
- shared_examples_for "Handlers" do
97
- it "should match #{@match_criteria}" do
98
- @handler::MATCH.should == @match_criteria
99
- end
100
-
101
- it "should respond to the method process" do
102
- @handler.should respond_to(:process)
103
- end
104
-
105
- end
106
-
107
- describe StepDefinitionHandler do
108
- before(:each) do
109
- @handler = StepDefinitionHandler
110
- @match_criteria = /^((When|Given|And|Then)\s*(\/[^\/]+\/).+)$/
111
- end
112
-
113
- it_should_behave_like "Handlers"
114
- end
115
-
116
- describe StepTransformHandler do
117
- before(:each) do
118
- @handler = StepTransformHandler
119
- @match_criteria = /^Transform\s*(\/[^\/]+\/).+$/
120
- end
121
-
122
- it_should_behave_like "Handlers"
123
- end
124
-
125
-
126
- end
127
-
128
- end
data/spec/spec_helper.rb DELETED
@@ -1,5 +0,0 @@
1
-
2
- $:.unshift(File.dirname(__FILE__) + '/../lib')
3
- $:.unshift(File.dirname(__FILE__))
4
-
5
- require 'city'