cucumber-rails 0.4.1 → 0.5.0.beta1

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 (56) hide show
  1. data/History.txt +9 -0
  2. data/README.md +74 -0
  3. data/config/cucumber.yml +1 -0
  4. data/cucumber-rails.gemspec +18 -18
  5. data/features/capybara_javascript_drivers.feature +1 -0
  6. data/features/emulate_javascript.feature +33 -0
  7. data/features/multiple_databases.feature +74 -0
  8. data/features/no_database.feature +1 -0
  9. data/features/pseduo_class_selectors.feature +24 -0
  10. data/features/select_dates.feature +36 -0
  11. data/features/step_definitions/cucumber_rails_steps.rb +1 -0
  12. data/lib/cucumber/rails.rb +1 -5
  13. data/lib/cucumber/rails/capybara/javascript_emulation.rb +4 -4
  14. data/lib/cucumber/rails/capybara/select_dates_and_times.rb +1 -1
  15. data/lib/cucumber/rails/hooks/database_cleaner.rb +0 -25
  16. data/lib/generators/cucumber/feature/feature_generator.rb +7 -16
  17. data/{templates/feature → lib/generators/cucumber/feature/templates}/feature.erb +0 -0
  18. data/{templates/feature → lib/generators/cucumber/feature/templates}/steps.erb +0 -0
  19. data/lib/generators/cucumber/install/install_generator.rb +68 -23
  20. data/{templates/install → lib/generators/cucumber/install/templates}/config/cucumber.yml.erb +0 -0
  21. data/{templates/install → lib/generators/cucumber/install/templates}/environments/cucumber.rb.erb +0 -4
  22. data/{templates/install → lib/generators/cucumber/install/templates}/script/cucumber +0 -0
  23. data/{templates/install/step_definitions/capybara_steps.rb.erb → lib/generators/cucumber/install/templates/step_definitions/web_steps.rb.erb} +2 -2
  24. data/{templates/install → lib/generators/cucumber/install/templates}/step_definitions/web_steps_cs.rb.erb +0 -0
  25. data/{templates/install → lib/generators/cucumber/install/templates}/step_definitions/web_steps_da.rb.erb +0 -0
  26. data/{templates/install → lib/generators/cucumber/install/templates}/step_definitions/web_steps_de.rb.erb +15 -24
  27. data/{templates/install → lib/generators/cucumber/install/templates}/step_definitions/web_steps_es.rb.erb +0 -0
  28. data/{templates/install → lib/generators/cucumber/install/templates}/step_definitions/web_steps_ja.rb.erb +0 -0
  29. data/{templates/install → lib/generators/cucumber/install/templates}/step_definitions/web_steps_ko.rb.erb +0 -0
  30. data/{templates/install → lib/generators/cucumber/install/templates}/step_definitions/web_steps_no.rb.erb +0 -0
  31. data/{templates/install → lib/generators/cucumber/install/templates}/step_definitions/web_steps_pt-BR.rb.erb +0 -0
  32. data/{templates/install → lib/generators/cucumber/install/templates}/support/_rails_each_run.rb.erb +12 -0
  33. data/{templates/install → lib/generators/cucumber/install/templates}/support/_rails_prefork.rb.erb +0 -0
  34. data/{templates/install → lib/generators/cucumber/install/templates}/support/capybara.rb +0 -0
  35. data/{templates/install → lib/generators/cucumber/install/templates}/support/edit_warning.txt +0 -0
  36. data/{templates/install → lib/generators/cucumber/install/templates}/support/paths.rb +3 -3
  37. data/{templates/install → lib/generators/cucumber/install/templates}/support/rails.rb.erb +1 -1
  38. data/{templates/install → lib/generators/cucumber/install/templates}/support/rails_spork.rb.erb +1 -1
  39. data/{templates/install → lib/generators/cucumber/install/templates}/support/selectors.rb +3 -3
  40. data/{templates/install → lib/generators/cucumber/install/templates}/support/web_steps_warning.txt +0 -0
  41. data/{templates/install → lib/generators/cucumber/install/templates}/tasks/cucumber.rake.erb +0 -0
  42. metadata +64 -73
  43. data/HACKING.rdoc +0 -22
  44. data/README.rdoc +0 -68
  45. data/VERSION +0 -1
  46. data/generators/cucumber/USAGE +0 -13
  47. data/generators/cucumber/cucumber_generator.rb +0 -46
  48. data/generators/feature/USAGE +0 -12
  49. data/generators/feature/feature_generator.rb +0 -47
  50. data/lib/cucumber/rails/version.rb +0 -22
  51. data/lib/cucumber/rails2.rb +0 -16
  52. data/lib/cucumber/rails2/action_controller.rb +0 -29
  53. data/lib/generators/cucumber/feature/feature_base.rb +0 -29
  54. data/lib/generators/cucumber/install/install_base.rb +0 -149
  55. data/templates/install/step_definitions/webrat_steps.rb.erb +0 -277
  56. data/templates/install/support/webrat.rb +0 -8
data/History.txt CHANGED
@@ -1,3 +1,12 @@
1
+ == 0.5.0.beta1
2
+
3
+ * Dropped support for Rails 2 (Aslak Hellesøy)
4
+ * Dropped support for Webrat (Aslak Hellesøy)
5
+ * Removed database cleaner strategy overrides (#134 Daniel Morrison, Daniel Duvall)
6
+ * Upgrade to Capybara 1.0.0.beta1 or newer (#130 Simon Menke, Klaus Hartl, Aslak Hellesøy)
7
+ * Generated paths.rb cleanup (#133 Tim Pope)
8
+ * Allow css pseudo-classes in scopers (#122 twalpole)
9
+
1
10
  == 0.4.1 2011-04-05
2
11
 
3
12
  === Bugfixes
data/README.md ADDED
@@ -0,0 +1,74 @@
1
+ # Cucumber-Rails
2
+
3
+ Cucumber-Rails brings Cucumber to Rails3. It contains 2 generators - one
4
+ for bootstrapping your Rails app for Cucumber, and a second one for generating features.
5
+
6
+ Cucumber-Rails also contains Cucumber Step Definitions that wrap Capybara,
7
+ giving you a head start for writing Cucumber features against your Rails app.
8
+
9
+ ## Installation
10
+
11
+ Before you can use the generator, add the gem to your project's Gemfile as follows:
12
+
13
+ group :test do
14
+ gem 'cucumber-rails'
15
+ # database_cleaner is not required, but highly recommended
16
+ gem 'database_cleaner'
17
+ end
18
+
19
+ Then install it by running:
20
+
21
+ bundle install
22
+
23
+ Learn about the various options:
24
+
25
+ ruby rails generate cucumber:install --help
26
+
27
+ Finally, bootstrap your Rails app, for example:
28
+
29
+ rails generate cucumber:install
30
+
31
+ ## Generating a Cucumber feature
32
+
33
+ IMPORTANT: Only do this if you are new to Cucumber. We recommend you write your
34
+ Cucumber features by hand once you get the hang of it.
35
+
36
+ Example:
37
+
38
+ ruby rails generate cucumber:feature post title:string body:text published:boolean
39
+ ruby rails generate scaffold post title:string body:text published:boolean
40
+ rake db:migrate
41
+ rake cucumber
42
+
43
+ ## Running Cucumber
44
+
45
+ With Rake:
46
+
47
+ rake cucumber
48
+
49
+ Without Rake:
50
+
51
+ [bundle exec] cucumber
52
+
53
+ ## Hacking on Cucumber-Rails
54
+
55
+ If you have a bugfix or a new feature you want to contribute, please fork on Github and make your own feature branch:
56
+
57
+ git clone git@github.com:you/cucumber-rails.git
58
+ git checkout -b 87-my-awesome-bugfix
59
+
60
+ The feature branch should contain a ticket number (if applicable) and a descriptive name that aligns with the ticket name.
61
+ When you think you're done send a pull request.
62
+
63
+ ### Setting up your environment
64
+
65
+ I strongly recommend rvm and ruby 1.9.2. When you have that, cd into your cucumber-rails repository and:
66
+
67
+ gem install bundler
68
+ bundle install
69
+
70
+ ### Running all features
71
+
72
+ rake cucumber
73
+
74
+ One of the features uses MongoDB, which needs to be running in order to make features/mongoid.feature to pass.
@@ -0,0 +1 @@
1
+ default: --tags ~@broken
@@ -1,36 +1,36 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
3
- require 'cucumber/rails/version'
4
3
 
5
4
  Gem::Specification.new do |s|
6
5
  s.name = 'cucumber-rails'
7
- s.version = Cucumber::Rails::VERSION
6
+ s.version = '0.5.0.beta1'
8
7
  s.authors = ["Aslak Hellesøy", "Dennis Blöte", "Rob Holland"]
9
8
  s.description = "Cucumber Generators and Runtime for Rails"
10
- s.summary = "cucumber-rails-#{s.version}"
9
+ s.summary = "#{s.name}-#{s.version}"
11
10
  s.email = 'cukes@googlegroups.com'
12
11
  s.homepage = "http://cukes.info"
13
12
 
14
- s.add_dependency('cucumber', Cucumber::Rails::DEPS['cucumber'])
15
- s.add_dependency('rack-test', Cucumber::Rails::DEPS['rack-test'])
16
- s.add_dependency('nokogiri', Cucumber::Rails::DEPS['nokogiri'])
17
- s.add_development_dependency('bundler', Cucumber::Rails::DEPS['bundler'])
18
- s.add_development_dependency('aruba', Cucumber::Rails::DEPS['aruba'])
19
- s.add_development_dependency('rails', Cucumber::Rails::DEPS['rails'])
20
- s.add_development_dependency('sqlite3-ruby', Cucumber::Rails::DEPS['sqlite3-ruby'])
21
- s.add_development_dependency('rspec-rails', Cucumber::Rails::DEPS['rspec-rails'])
22
- s.add_development_dependency('capybara', Cucumber::Rails::DEPS['capybara'])
23
- s.add_development_dependency('webrat', Cucumber::Rails::DEPS['webrat'])
24
- s.add_development_dependency('database_cleaner', Cucumber::Rails::DEPS['database_cleaner'])
25
- s.add_development_dependency('mongoid', Cucumber::Rails::DEPS['mongoid'])
26
- s.add_development_dependency('bson_ext', Cucumber::Rails::DEPS['bson_ext'])
27
- s.add_development_dependency('akephalos', Cucumber::Rails::DEPS['akephalos'])
13
+ s.add_dependency('cucumber', '>= 0.10.2')
14
+ s.add_dependency('rack-test', '>= 0.5.7')
15
+ s.add_dependency('nokogiri', '>= 1.4.4')
16
+ s.add_dependency('capybara', '>= 1.0.0.beta1')
17
+ s.add_development_dependency('bundler', '>= 1.0.12')
18
+ s.add_development_dependency('aruba', '>= 0.3.6')
19
+ s.add_development_dependency('rails', '>= 3.0.7')
20
+ s.add_development_dependency('sqlite3-ruby', '>= 1.3.3')
21
+ s.add_development_dependency('rspec', '>= 2.6.0.rc6')
22
+ s.add_development_dependency('rspec-rails', '>= 2.2.0')
23
+ s.add_development_dependency('factory_girl', '>= 2.0.0.beta2')
24
+ s.add_development_dependency('database_cleaner', '>= 0.6.7')
25
+ s.add_development_dependency('mongoid', '>= 2.0.1')
26
+ s.add_development_dependency('bson_ext', '>= 1.3.0')
27
+ # s.add_development_dependency('akephalos', '>= 0.2.5')
28
28
 
29
29
  s.rubygems_version = ">= 1.6.1"
30
30
  s.files = `git ls-files`.split("\n")
31
31
  s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
32
32
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
33
- s.extra_rdoc_files = ["LICENSE", "README.rdoc", "History.txt"]
33
+ s.extra_rdoc_files = ["LICENSE", "README.md", "History.txt"]
34
34
  s.rdoc_options = ["--charset=UTF-8"]
35
35
  s.require_path = "lib"
36
36
  end
@@ -1,3 +1,4 @@
1
+ @broken
1
2
  Feature: Capybara Javascript Drivers
2
3
 
3
4
  Background: A simple calendar app
@@ -0,0 +1,33 @@
1
+ Feature: Emulate Javascript
2
+
3
+ Scenario: Delete a widget
4
+ Given I have created a new Rails 3 app "widgets" with cucumber-rails support
5
+ And I successfully run `rails generate scaffold widget name:string`
6
+ And I write to "features/f.feature" with:
7
+ """
8
+ Feature: Widget inventory
9
+ Scenario: Delete a widget
10
+ Given there is a widget named "wrench"
11
+ When I go to the widgets page
12
+ And I follow "Destroy"
13
+ Then I should not see "wrench"
14
+ """
15
+ And I write to "features/step_definitions/s.rb" with:
16
+ """
17
+ Given /^there is a widget named "([^"]*)"$/ do |name|
18
+ Factory(:widget, :name => name)
19
+ end
20
+ """
21
+ And I write to "features/support/factories.rb" with:
22
+ """
23
+ Factory.define :widget do |f|
24
+ f.name 'testwidget'
25
+ end
26
+ """
27
+ When I run `rake db:migrate cucumber`
28
+ Then it should pass with:
29
+ """
30
+ 1 scenario (1 passed)
31
+ 4 steps (4 passed)
32
+ """
33
+
@@ -0,0 +1,74 @@
1
+ Feature: Multiple Databases
2
+ In order to use Database Cleaner with multiple database repositories
3
+ As an engineer
4
+ I want to specify explicit strategies for each
5
+
6
+ Background: A Rails 3 app utilizing multiple database repositories exists
7
+ Given I have created a new Rails 3 app "rails-3-app" with cucumber-rails support
8
+ And I remove the file "features/step_definitions/web_steps.rb"
9
+ And I append to "config/database.yml" with:
10
+ """
11
+
12
+ ursidae:
13
+ adapter: sqlite3
14
+ database: db/ursidae.sqlite3
15
+ """
16
+ And I write to "app/models/bear.rb" with:
17
+ """
18
+ class Bear < ActiveRecord::Base
19
+ establish_connection "ursidae"
20
+ end
21
+ """
22
+ And a directory named "db/migrate"
23
+ And I write to "db/migrate/001_create_bears.rb" with:
24
+ """
25
+ class CreateBears < ActiveRecord::Migration
26
+ def self.up
27
+ if Rails.env == 'ursidae'
28
+ create_table :bears do |t|
29
+ t.string :name, :null => false
30
+ end
31
+ add_index :bears, :name, :unique => true
32
+ end
33
+ end
34
+ end
35
+ """
36
+ And I successfully run `bundle exec rake db:migrate`
37
+ And I successfully run `bundle exec rake db:migrate RAILS_ENV=ursidae`
38
+ And I write to "features/support/env.rb" with:
39
+ """
40
+ require 'cucumber/rails'
41
+ DatabaseCleaner.strategy = :transaction
42
+ DatabaseCleaner[:active_record, {:connection => "ursidae"}].strategy = :truncation
43
+ """
44
+ And I write to "features/create_bear.feature" with:
45
+ """
46
+ Feature: Screws up in transactional test and must use truncation
47
+ Scenario: I create a bear
48
+ When I create a bear
49
+ And something transactional happens
50
+ """
51
+ And I write to "features/step_definitions/create_bear_steps.rb" with:
52
+ """
53
+ When /^I create a bear$/ do
54
+ Bear.create!(:name => "yogi")
55
+ end
56
+ When /^something transactional happens$/ do
57
+ Bear.transaction { Bear.find_by_name("yogi").lock! }
58
+ end
59
+ """
60
+
61
+ Scenario: Default transactional strategy is not attempted on second database
62
+ When I run `bundle exec rake cucumber FEATURE=features/create_bear.feature`
63
+ Then it should pass with:
64
+ """
65
+ 1 scenario (1 passed)
66
+ 2 steps (2 passed)
67
+ """
68
+ And the output should not contain "cannot rollback - no transaction is active"
69
+
70
+ Scenario: Truncation strategy is used on the second database
71
+ Given I successfully run `bundle exec rails runner 'Bear.create(:name => "boo boo")'`
72
+ And I successfully run `bundle exec rake cucumber FEATURE=features/create_bear.feature`
73
+ When I run `bundle exec rails runner 'raise "ahh! bears!" if Bear.count > 0'`
74
+ Then the exit status should be 0
@@ -1,3 +1,4 @@
1
+ @announce
1
2
  Feature: No Database
2
3
  Allow Cucumber to work with a Rails app without a database
3
4
 
@@ -0,0 +1,24 @@
1
+ Feature: Pseudo-class Selectors
2
+
3
+ Scenario: Look within css pseudo-class selectors
4
+ Given a project without ActiveRecord
5
+ And a cukes resource
6
+ And I write to "app/views/cukes/index.html.erb" with:
7
+ """
8
+ <div>foo</div>
9
+ <div>bar</div>
10
+ """
11
+ And I write to "features/tests.feature" with:
12
+ """
13
+ Feature: Tests
14
+ Scenario: Tests
15
+ When I go to the cukes page
16
+ Then I should see "bar" within "div:nth-child(2)"
17
+ And I should not see "foo" within "div:nth-child(2)"
18
+ """
19
+ And I run `rake cucumber`
20
+ Then it should pass with:
21
+ """
22
+ 1 scenario (1 passed)
23
+ 3 steps (3 passed)
24
+ """
@@ -53,6 +53,42 @@ Feature: Select dates
53
53
  <% end %>
54
54
  """
55
55
  When I run `bundle exec rake db:migrate cucumber`
56
+ Then it should pass with:
57
+ """
58
+ 1 scenario (1 passed)
59
+ 6 steps (6 passed)
60
+ """
61
+
62
+ Scenario: Select date when the order of fields is changed and label is set to the first select
63
+ Given I successfully run `bundle exec rails g scaffold appointment name:string when:date`
64
+ And I write to "features/create_appointment.feature" with:
65
+ """
66
+ Feature: Create appointments
67
+ Scenario: Constitution on May 17
68
+ Given I am on the new appointment page
69
+ And I fill in "Norway's constitution" for "Name"
70
+ And I select "2009-02-20" as the "When" date
71
+ And I press "Create Appointment"
72
+ Then I should see "Norway's constitution"
73
+ And I should see "2009-02-20"
74
+ """
75
+ And I write to "app/views/appointments/_form.html.erb" with:
76
+ """
77
+ <%= form_for(@appointment) do |f| %>
78
+ <div class="field">
79
+ <%= f.label :name %><br />
80
+ <%= f.text_field :name %>
81
+ </div>
82
+ <div class="field">
83
+ <%= f.label :when, :for => "appointment_when_2i" %><br />
84
+ <%= f.date_select :when, :order=>[:month, :day, :year] %>
85
+ </div>
86
+ <div class="actions">
87
+ <%= f.submit %>
88
+ </div>
89
+ <% end %>
90
+ """
91
+ When I run `bundle exec rake db:migrate cucumber`
56
92
  Then it should pass with:
57
93
  """
58
94
  1 scenario (1 passed)
@@ -12,6 +12,7 @@ Given /^I have created a new Rails 3 app "([^"]*)" with cucumber\-rails support$
12
12
  gem "capybara", :group => :test
13
13
  gem "rspec-rails", :group => :test
14
14
  gem "database_cleaner", :group => :test
15
+ gem 'factory_girl', :group => :test
15
16
 
16
17
  """
17
18
  And I successfully run `bundle exec rails generate cucumber:install`
@@ -1,9 +1,5 @@
1
1
  require 'rails'
2
- if Rails.version.to_f < 3.0
3
- require 'cucumber/rails2'
4
- else
5
- require 'cucumber/rails3'
6
- end
2
+ require 'cucumber/rails3'
7
3
 
8
4
  require 'cucumber/rails/world'
9
5
  require 'cucumber/rails/hooks'
@@ -11,7 +11,7 @@ module Cucumber
11
11
 
12
12
  def click_with_javascript_emulation
13
13
  if link_with_non_get_http_method?
14
- ::Capybara::Driver::RackTest::Form.new(driver, js_form(element_node.document, self[:href], emulated_method)).submit(self)
14
+ ::Capybara::RackTest::Form.new(driver, js_form(element_node.document, self[:href], emulated_method)).submit(self)
15
15
  else
16
16
  click_without_javascript_emulation
17
17
  end
@@ -64,20 +64,20 @@ module Cucumber
64
64
  end
65
65
  end
66
66
 
67
- class Capybara::Driver::RackTest::Node
67
+ class Capybara::RackTest::Node
68
68
  include ::Cucumber::Rails::Capybara::JavascriptEmulation
69
69
  end
70
70
 
71
71
  Before('~@no-js-emulation') do
72
72
  # Enable javascript emulation
73
- ::Capybara::Driver::RackTest::Node.class_eval do
73
+ ::Capybara::RackTest::Node.class_eval do
74
74
  alias_method :click, :click_with_javascript_emulation
75
75
  end
76
76
  end
77
77
 
78
78
  Before('@no-js-emulation') do
79
79
  # Disable javascript emulation
80
- ::Capybara::Driver::RackTest::Node.class_eval do
80
+ ::Capybara::RackTest::Node.class_eval do
81
81
  alias_method :click, :click_without_javascript_emulation
82
82
  end
83
83
  end
@@ -28,7 +28,7 @@ module Cucumber
28
28
 
29
29
  # @example "event_starts_at_"
30
30
  def get_base_dom_id_from_label_tag(field)
31
- find(:xpath, "//label[contains(., '#{field}')]")['for'].gsub(/(_1i)$/, '')
31
+ find(:xpath, "//label[contains(., '#{field}')]")['for'].gsub(/(_[1-5]i)$/, '')
32
32
  end
33
33
  end
34
34
  end
@@ -1,32 +1,7 @@
1
- # Default setup for DatabaseCleaner that will work for most projects.
2
- # If you need your own setup, roll your own.
3
1
  begin
4
2
  require 'database_cleaner'
5
3
 
6
4
  Before do
7
- begin
8
- $__cucumber_global_database_cleaner_strategy ||= DatabaseCleaner.connections[0].strategy # There is no accessor on the DatabaseCleaner
9
- rescue DatabaseCleaner::NoStrategySetError => e
10
- e.message << "\nYou can set the strategy in your features/support/env.rb"
11
- end
12
- end
13
-
14
- Before('~@no-txn', '~@selenium', '~@culerity', '~@celerity', '~@javascript') do
15
- DatabaseCleaner.strategy = $__cucumber_global_database_cleaner_strategy
16
- end
17
-
18
- Before('@no-txn,@selenium,@culerity,@celerity,@javascript') do
19
- DatabaseCleaner.strategy = :truncation
20
- end
21
-
22
- Before do
23
- # TODO: May have to patch DatabaseCleaner's Transaction class to do what we used to do:
24
- # run_callbacks :setup if respond_to?(:run_callbacks)
25
- # IIRC There was a cucumber-rails ticket that added that to support multiple connections...
26
- # Similar in After (use run_callbacks :teardown if respond_to?(:run_callbacks))
27
- #
28
- # May also have to add this to Transaction:
29
- # include ActiveSupport::Testing::SetupAndTeardown if ActiveSupport::Testing.const_defined?("SetupAndTeardown")
30
5
  DatabaseCleaner.start
31
6
  end
32
7
 
@@ -1,11 +1,9 @@
1
1
  require File.join(File.dirname(__FILE__), 'named_arg')
2
- require File.join(File.dirname(__FILE__), 'feature_base')
3
2
 
4
3
  module Cucumber
5
4
  class FeatureGenerator < ::Rails::Generators::NamedBase
5
+ source_root File.expand_path("../templates", __FILE__)
6
6
 
7
- include Cucumber::Generators::FeatureBase
8
-
9
7
  argument :fields, :optional => true, :type => :array, :banner => "[field:type, field:type]"
10
8
 
11
9
  attr_reader :named_args
@@ -15,23 +13,16 @@ module Cucumber
15
13
  end
16
14
 
17
15
  def generate
18
- create_directory
19
- create_feature_file
20
- create_steps_file
21
- create_support_file
16
+ empty_directory 'features/step_definitions'
17
+ template 'feature.erb', "features/manage_#{plural_name}.feature"
18
+ template 'steps.erb', "features/step_definitions/#{singular_name}_steps.rb"
19
+ gsub_file 'features/support/paths.rb', /'\/'/mi do |match|
20
+ "#{match}\n when /the new #{singular_name} page/\n new_#{singular_name}_path\n"
21
+ end
22
22
  end
23
23
 
24
24
  def self.banner
25
25
  "#{$0} cucumber:feature ModelName [field:type, field:type]"
26
26
  end
27
-
28
- def self.gem_root
29
- File.expand_path("../../../../../", __FILE__)
30
- end
31
-
32
- def self.source_root
33
- File.join(gem_root, 'templates', 'feature')
34
- end
35
-
36
27
  end
37
28
  end