wally 0.0.29 → 0.0.30

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.
data/bin/wally CHANGED
@@ -10,7 +10,13 @@ elsif ARGV[0] == "push"
10
10
  require "wally"
11
11
  features = []
12
12
  Dir.glob(File.join("#{ARGV[2]}", "**/*.feature")).each do |feature_path|
13
- gherkin = Wally::ParsesFeatures.new.parse(File.read(feature_path))
13
+ begin
14
+ gherkin = Wally::ParsesFeatures.new.parse(File.read(feature_path))
15
+ rescue
16
+ puts "Couldn't parse '#{feature_path}'"
17
+ puts "Contents:"
18
+ puts File.read(feature_path)
19
+ end
14
20
  features << {:path => feature_path, :gherkin => gherkin}
15
21
  end
16
22
  RestClient.put "#{ARGV[1]}/features/?authentication_code=#{File.read(".wally")}", features.to_json, {:content_type => :json, :accept => :json}
data/lib/wally.rb CHANGED
@@ -5,7 +5,6 @@ $:.unshift(File.expand_path(File.dirname(__FILE__)))
5
5
 
6
6
  require "wally/version"
7
7
  require "wally/application"
8
- require "wally/lists_features"
9
8
  require "wally/search_features"
10
9
  require "wally/counts_tags"
11
10
  require "wally/parses_features"
@@ -18,12 +18,8 @@ else
18
18
  MongoMapper.database = "wally"
19
19
  end
20
20
 
21
- def lists_features
22
- Wally::ListsFeatures.new
23
- end
24
-
25
21
  def tag_count
26
- Wally::CountsTags.new(lists_features).count_tags
22
+ Wally::CountsTags.new(Wally::Feature).count_tags
27
23
  end
28
24
 
29
25
  def excessive_wip_tags
@@ -31,7 +27,12 @@ def excessive_wip_tags
31
27
  end
32
28
 
33
29
  def scenario_count
34
- lists_features.features.to_s.scan(/scenario/).length
30
+ Feature.all.inject(0) do |count, feature|
31
+ if feature.gherkin["elements"]
32
+ count += feature.gherkin["elements"].select { |e| e["type"] == "scenario" }
33
+ end
34
+ count
35
+ end
35
36
  end
36
37
 
37
38
  def highlighted_search_result_blurb search_result
@@ -68,9 +69,9 @@ get '/?' do
68
69
  haml :index
69
70
  end
70
71
 
71
- get '/features/:feature/?' do |feature|
72
- lists_features.features.each do |feature_hash|
73
- @feature = feature_hash if feature_hash["id"] == feature
72
+ get '/features/:feature/?' do |id|
73
+ Wally::Feature.all.each do |feature|
74
+ @feature = feature if feature.gherkin["id"] == id
74
75
  end
75
76
  haml :feature
76
77
  end
@@ -81,16 +82,16 @@ end
81
82
 
82
83
  get '/search/?' do
83
84
  if params[:q]
84
- @search_results = Wally::SearchFeatures.new(lists_features).find(:query => params[:q])
85
+ @search_results = Wally::SearchFeatures.new(Wally::Feature).find(:query => params[:q])
85
86
  end
86
87
  haml :search
87
88
  end
88
89
 
89
90
  get '/features/:feature/scenario/:scenario/?' do |feature_id, scenario_id|
90
- lists_features.features.each do |feature|
91
- if feature["id"] == feature_id
91
+ Wally::Feature.all.each do |feature|
92
+ if feature.gherkin["id"] == feature_id
92
93
  @feature = feature
93
- feature["elements"].each do |element|
94
+ feature.gherkin["elements"].each do |element|
94
95
  if element["type"] == "background"
95
96
  @background = element
96
97
  end
@@ -110,8 +111,8 @@ end
110
111
  def get_sorted_scenarios(feature)
111
112
  scenarios = []
112
113
 
113
- if feature["elements"]
114
- feature["elements"].each do |element|
114
+ if feature.gherkin["elements"]
115
+ feature.gherkin["elements"].each do |element|
115
116
  if element["type"] == "scenario" || element["type"] == "scenario_outline"
116
117
  scenarios << element
117
118
  end
@@ -5,14 +5,14 @@ module Wally
5
5
  end
6
6
 
7
7
  def count_tags
8
- @lists_features.features.inject(Hash.new(0)) do |tag_count, feature|
9
- if feature["tags"]
10
- feature["tags"].each do |tag|
8
+ @lists_features.all.inject(Hash.new(0)) do |tag_count, feature|
9
+ if feature.gherkin["tags"]
10
+ feature.gherkin["tags"].each do |tag|
11
11
  tag_count[tag["name"].downcase] += 1
12
12
  end
13
13
  end
14
- if feature["elements"]
15
- feature["elements"].each do |element|
14
+ if feature.gherkin["elements"]
15
+ feature.gherkin["elements"].each do |element|
16
16
  if element["tags"]
17
17
  element["tags"].each do |tag|
18
18
  tag_count[tag["name"].downcase] += 1
data/lib/wally/feature.rb CHANGED
@@ -4,5 +4,13 @@ module Wally
4
4
 
5
5
  key :path, String
6
6
  key :gherkin, Hash
7
+ key :name, String
8
+
9
+ before_save :save_feature_name
10
+
11
+ private
12
+ def save_feature_name
13
+ @name = gherkin["name"]
14
+ end
7
15
  end
8
16
  end
@@ -15,9 +15,16 @@ module Wally
15
15
  io = StringIO.new
16
16
  formatter = Gherkin::Formatter::JSONFormatter.new(io)
17
17
  parser = Gherkin::Parser::Parser.new(formatter, false, 'root')
18
- parser.parse(text, nil, 0)
18
+ begin
19
+ parser.parse(text, nil, 0)
20
+ rescue Exception => e
21
+ raise FeatureParseException.new
22
+ end
19
23
  hash = formatter.to_hash
20
24
  hash
21
25
  end
22
26
  end
27
+
28
+ class FeatureParseException < StandardError
29
+ end
23
30
  end
@@ -9,21 +9,21 @@ module Wally
9
9
  def find(query)
10
10
  searchables = []
11
11
 
12
- @lists_features.features.each do |feature|
13
- feature_text = feature["name"]
14
- if feature["tags"]
15
- feature_text += " " + feature["tags"].map { |tag| tag["name"] }.join(" ")
12
+ @lists_features.all.each do |feature|
13
+ feature_text = feature.gherkin["name"]
14
+ if feature.gherkin["tags"]
15
+ feature_text += " " + feature.gherkin["tags"].map { |tag| tag["name"] }.join(" ")
16
16
  end
17
- if feature["description"]
18
- feature_text += " " + feature["description"]
17
+ if feature.gherkin["description"]
18
+ feature_text += " " + feature.gherkin["description"]
19
19
  end
20
20
  feature_data = OpenStruct.new
21
- feature_data.feature = feature
21
+ feature_data.feature = feature.gherkin
22
22
  feature_data.text = feature_text
23
23
  searchables << feature_data
24
24
 
25
- if feature["elements"]
26
- feature["elements"].each do |element|
25
+ if feature.gherkin["elements"]
26
+ feature.gherkin["elements"].each do |element|
27
27
  element_text = [element["name"]]
28
28
  if element["steps"]
29
29
  element_text << element["steps"].map { |s| s["name"] }
@@ -32,7 +32,7 @@ module Wally
32
32
  element_text << element["tags"].map { |t| t["name"] }
33
33
  end
34
34
  scenario_data = OpenStruct.new
35
- scenario_data.feature = feature
35
+ scenario_data.feature = feature.gherkin
36
36
  scenario_data.scenario = element
37
37
  scenario_data.text = element_text.join(" ")
38
38
  searchables << scenario_data
data/lib/wally/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Wally
2
- VERSION = "0.0.29"
2
+ VERSION = "0.0.30"
3
3
  end
@@ -1,15 +1,14 @@
1
1
  %h2
2
- = @feature["name"]
3
- - if @feature["path"]
4
- %p
5
- from
6
- %em
7
- = @feature["path"]
8
- %section{:class=>"scenarios"}
9
- %section{:class => 'feature'}
10
- :markdown
11
- #{@feature["description"]}
12
- - if @feature["description"]
2
+ = @feature.gherkin["name"]
3
+ %p
4
+ from
5
+ %em
6
+ = @feature.path
7
+ %section{:class=>"scenarios"}
8
+ %section{:class => 'feature'}
9
+ :markdown
10
+ #{@feature.gherkin["description"]}
11
+ - if @feature.gherkin["description"]
13
12
  %h2 Scenarios
14
13
  %ul
15
14
  - get_sorted_scenarios(@feature).each do |scenario|
@@ -1,6 +1,6 @@
1
1
  %li
2
- %a{:href => "/features/#{feature["id"]}"}
3
- = feature["name"]
4
- - if feature["tags"]
5
- - tags = feature["tags"]
2
+ %a{:href => "/features/#{feature.gherkin["id"]}"}
3
+ = feature.gherkin["name"]
4
+ - if feature.gherkin["tags"]
5
+ - tags = feature.gherkin["tags"]
6
6
  = haml :tag_links, {:locals => {:tags => tags}, :layout => false}
@@ -18,19 +18,13 @@
18
18
  %div.container-fluid
19
19
  %div.sidebar
20
20
  %ul
21
- -# %li
22
- -# %a{:href => "/search?q="}
23
- -# = "Scenarios (#{scenario_count})"
24
- -# %li
25
- -# %a{:href => "/"}
26
- -# = "Features (#{lists_features.features.length})"
27
21
  %li
28
22
  %a{:href => "/progress"}
29
23
  Progress
30
24
  %h2
31
- = "Features (#{lists_features.features.length})"
25
+ = "Features (#{Wally::Feature.all.count})"
32
26
  %ul
33
- - lists_features.features.each do |feature|
27
+ - Wally::Feature.sort(:name).each do |feature|
34
28
  = haml :feature_link, {:locals => {:feature => feature}, :layout => false}
35
29
  - if tag_count.any?
36
30
  %h2
@@ -1,6 +1,6 @@
1
1
  %h2
2
2
  %a{"href" => '../'}
3
- = @feature["name"]
3
+ = @feature.gherkin["name"]
4
4
  %h2
5
5
  = @scenario["name"]
6
6
  - if @scenario["tags"]
@@ -17,9 +17,7 @@ module Wally
17
17
  it "counts feature tags" do
18
18
  create_feature("feature-1.feature", "@tag1 @tag2\nFeature: Feature 1")
19
19
  create_feature("feature-2.feature", "@tag2 @tag2\nFeature: Feature 2")
20
- lists_features = ListsFeatures.new
21
-
22
- CountsTags.new(lists_features).count_tags.should == {
20
+ CountsTags.new(Feature).count_tags.should == {
23
21
  "@tag1" => 1,
24
22
  "@tag2" => 3
25
23
  }
@@ -28,8 +26,7 @@ module Wally
28
26
  it "counts scenario tags" do
29
27
  create_feature("feature-1.feature", "Feature: Feature 1\n@tag1@tag1\nScenario: Scenario 1")
30
28
  create_feature("feature-2.feature", "Feature: Feature 2\n@tag3@tag1\nScenario: Scenario 1")
31
- lists_features = ListsFeatures.new
32
- CountsTags.new(lists_features).count_tags.should == {
29
+ CountsTags.new(Feature).count_tags.should == {
33
30
  "@tag1" => 3,
34
31
  "@tag3" => 1
35
32
  }
@@ -39,9 +36,7 @@ module Wally
39
36
  create_feature("feature-1.feature", "@tag1\nFeature: Feature 1")
40
37
  create_feature("feature-2.feature", "@TAG1\nFeature: Feature 2")
41
38
  create_feature("feature-3.feature", "Feature: Feature 2\n@TAG1\nScenario: Scenario 1")
42
- lists_features = ListsFeatures.new
43
-
44
- CountsTags.new(lists_features).count_tags.should == {
39
+ CountsTags.new(Feature).count_tags.should == {
45
40
  "@tag1" => 3
46
41
  }
47
42
  end
@@ -19,5 +19,11 @@ module Wally
19
19
  subject.save
20
20
  Feature.all.first.gherkin.should == {"meh" => "ble"}
21
21
  end
22
+
23
+ it "stores the feature name" do
24
+ subject.gherkin = {"name" => "ble"}
25
+ subject.save
26
+ Feature.all.first.name.should == "ble"
27
+ end
22
28
  end
23
29
  end
@@ -13,5 +13,16 @@ module Wally
13
13
  "uri" => nil
14
14
  }
15
15
  end
16
+
17
+ it "raises nice errors" do
18
+ feature = "!WEFFW"
19
+ error = nil
20
+ begin
21
+ ParsesFeatures.new.parse(feature)
22
+ rescue Exception => e
23
+ error = e
24
+ end
25
+ error.should_not be_nil
26
+ end
16
27
  end
17
28
  end
@@ -13,36 +13,32 @@ module Wally
13
13
  feature.save
14
14
  end
15
15
 
16
- let :lists_features do
17
- ListsFeatures.new
18
- end
19
-
20
16
  it "finds features containing text" do
21
17
  create_feature("sample1.feature", "Feature: Bla")
22
18
  create_feature("sample2.feature", "Feature: Meh")
23
19
 
24
- results = SearchFeatures.new(lists_features).find(:query => "Meh")
20
+ results = SearchFeatures.new(Feature).find(:query => "Meh")
25
21
  results.items.size.should == 1
26
22
  results.items.first.object.feature["name"].should == "Meh"
27
23
  end
28
24
 
29
25
  it "finds features by narrative" do
30
26
  create_feature("sample1.feature", "Feature: bla\nIn order to bananas")
31
- results = SearchFeatures.new(lists_features).find(:query => "bananas")
27
+ results = SearchFeatures.new(Feature).find(:query => "bananas")
32
28
  results.items.size.should == 1
33
29
  results.items.first.object.feature["name"].should == "bla"
34
30
  end
35
31
 
36
32
  it "has a suggestion" do
37
33
  create_feature("sample1.feature", "Feature: Monkeys")
38
- results = SearchFeatures.new(lists_features).find(:query => "mnkeys")
34
+ results = SearchFeatures.new(Feature).find(:query => "mnkeys")
39
35
  results.suggestion.should == "Monkeys"
40
36
  end
41
37
 
42
38
  it "has a suggestion only when it's different from the search query" do
43
39
  create_feature("sample1.feature", "Feature: monkeys\nScenario: feature")
44
40
  create_feature("sample2.feature", "Feature: dogs\nScenario: Sample scenario")
45
- results = SearchFeatures.new(lists_features).find(:query => "feature")
41
+ results = SearchFeatures.new(Feature).find(:query => "feature")
46
42
  results.suggestion.should be_nil
47
43
  end
48
44
 
@@ -59,13 +55,13 @@ module Wally
59
55
  end
60
56
 
61
57
  it "finds scenarios containing text" do
62
- results = SearchFeatures.new(lists_features).find(:query => "MATCHED")
58
+ results = SearchFeatures.new(Feature).find(:query => "MATCHED")
63
59
  results.items.size.should == 1
64
60
  results.items.first.object.scenario["name"].should == "Matched Scenario"
65
61
  end
66
62
 
67
63
  it "finds scenario steps" do
68
- results = SearchFeatures.new(lists_features).find(:query => "DOUGHNUTS")
64
+ results = SearchFeatures.new(Feature).find(:query => "DOUGHNUTS")
69
65
  results.items.size.should == 1
70
66
  results.items.first.object.scenario["name"].should == "Matched Scenario"
71
67
  end
@@ -74,13 +70,13 @@ module Wally
74
70
  context "feature with tags" do
75
71
  it "finds features by tag" do
76
72
  create_feature("example-feature.feature", "@tag_name\nFeature: Example Feature")
77
- results = SearchFeatures.new(lists_features).find(:query => "@tag_NAME")
73
+ results = SearchFeatures.new(Feature).find(:query => "@tag_NAME")
78
74
  results.items.first.object.feature["name"].should == "Example Feature"
79
75
  end
80
76
 
81
77
  it "finds scenarios by tag" do
82
78
  create_feature("example-feature.feature", "Feature: Example Feature\n@scenario_tag\nScenario: Example Scenario")
83
- results = SearchFeatures.new(lists_features).find(:query => "@scenario_TAG")
79
+ results = SearchFeatures.new(Feature).find(:query => "@scenario_TAG")
84
80
  results.items.first.object.scenario["name"].should == "Example Scenario"
85
81
  end
86
82
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wally
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.29
4
+ version: 0.0.30
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-12-05 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
16
- requirement: &70100057374200 !ruby/object:Gem::Requirement
16
+ requirement: &70272590012520 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70100057374200
24
+ version_requirements: *70272590012520
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: sinatra
27
- requirement: &70100057373740 !ruby/object:Gem::Requirement
27
+ requirement: &70272590011980 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70100057373740
35
+ version_requirements: *70272590011980
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: haml
38
- requirement: &70100057373320 !ruby/object:Gem::Requirement
38
+ requirement: &70272590011500 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70100057373320
46
+ version_requirements: *70272590011500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rdiscount
49
- requirement: &70100057372900 !ruby/object:Gem::Requirement
49
+ requirement: &70272590010780 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70100057372900
57
+ version_requirements: *70272590010780
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: gherkin
60
- requirement: &70100057372480 !ruby/object:Gem::Requirement
60
+ requirement: &70272590010040 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70100057372480
68
+ version_requirements: *70272590010040
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: komainu
71
- requirement: &70100057372060 !ruby/object:Gem::Requirement
71
+ requirement: &70272590009360 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70100057372060
79
+ version_requirements: *70272590009360
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: cucumber
82
- requirement: &70100057371600 !ruby/object:Gem::Requirement
82
+ requirement: &70272590008620 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70100057371600
90
+ version_requirements: *70272590008620
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: capybara
93
- requirement: &70100057371180 !ruby/object:Gem::Requirement
93
+ requirement: &70272590007760 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70100057371180
101
+ version_requirements: *70272590007760
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: rspec
104
- requirement: &70100057370760 !ruby/object:Gem::Requirement
104
+ requirement: &70272590006900 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70100057370760
112
+ version_requirements: *70272590006900
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: fakefs
115
- requirement: &70100057370340 !ruby/object:Gem::Requirement
115
+ requirement: &70272590006080 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70100057370340
123
+ version_requirements: *70272590006080
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: launchy
126
- requirement: &70100057369880 !ruby/object:Gem::Requirement
126
+ requirement: &70272590005180 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ! '>='
@@ -131,7 +131,7 @@ dependencies:
131
131
  version: '0'
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70100057369880
134
+ version_requirements: *70272590005180
135
135
  description: ''
136
136
  email:
137
137
  - andrew.vos@gmail.com
@@ -171,7 +171,6 @@ files:
171
171
  - lib/wally/application.rb
172
172
  - lib/wally/counts_tags.rb
173
173
  - lib/wally/feature.rb
174
- - lib/wally/lists_features.rb
175
174
  - lib/wally/parses_features.rb
176
175
  - lib/wally/public/bootstrap.min.css
177
176
  - lib/wally/public/skin.css
@@ -189,7 +188,6 @@ files:
189
188
  - spec/spec_helper.rb
190
189
  - spec/wally/counts_tags_spec.rb
191
190
  - spec/wally/feature_spec.rb
192
- - spec/wally/lists_features_spec.rb
193
191
  - spec/wally/parses_features_spec.rb
194
192
  - spec/wally/search_features_spec.rb
195
193
  - wally.gemspec
@@ -235,6 +233,5 @@ test_files:
235
233
  - spec/spec_helper.rb
236
234
  - spec/wally/counts_tags_spec.rb
237
235
  - spec/wally/feature_spec.rb
238
- - spec/wally/lists_features_spec.rb
239
236
  - spec/wally/parses_features_spec.rb
240
237
  - spec/wally/search_features_spec.rb
@@ -1,24 +0,0 @@
1
- require 'gherkin/formatter/json_formatter'
2
- require 'gherkin/parser/parser'
3
-
4
- module Gherkin::Formatter
5
- class JSONFormatter
6
- def to_hash
7
- @feature_hash
8
- end
9
- end
10
- end
11
-
12
- module Wally
13
- class ListsFeatures
14
- def features
15
- features = []
16
- Feature.all.each do |feature|
17
- gherkin = feature.gherkin
18
- gherkin["path"] = feature.path
19
- features << gherkin
20
- end
21
- features.sort {|a,b| a["name"] <=> b["name"]}
22
- end
23
- end
24
- end
@@ -1,28 +0,0 @@
1
- require File.join(File.dirname(__FILE__), "..", "spec_helper")
2
- require 'fileutils'
3
-
4
- module Wally
5
- describe ListsFeatures do
6
- after do
7
- Feature.delete_all
8
- end
9
-
10
- def create_feature path, content
11
- feature = Feature.new
12
- feature.path = path
13
- feature.gherkin = ParsesFeatures.new.parse(content)
14
- feature.save
15
- end
16
-
17
- it "returns a list of alphabeticaly ordered features" do
18
- create_feature("1-sample.feature", "Feature: Zorro")
19
- create_feature("2-sample.feature", "Feature: Malgor")
20
- create_feature("3-sample.feature", "Feature: Adrian")
21
- lists_features = ListsFeatures.new
22
- lists_features.features.size.should == 3
23
- lists_features.features[0]["name"].should == "Adrian"
24
- lists_features.features[1]["name"].should == "Malgor"
25
- lists_features.features[2]["name"].should == "Zorro"
26
- end
27
- end
28
- end