cucumber-in-the-yard 1.6.1 → 1.6.3

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 (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'