Commit 861a2a43797f769f5d102569a60b8b8472ccc5df

Authored by Antonio Terceiro
1 parent 26b0349f

Upgrading to cucumber 0.4.x

ActionItem1279
config/environments/cucumber.rb
  1 +# IMPORTANT: This file was generated by Cucumber 0.4.0
  2 +# Edit at your own peril - it's recommended to regenerate this file
  3 +# in the future when you upgrade to a newer version of Cucumber.
  4 +
1 config.cache_classes = true # This must be true for Cucumber to operate correctly! 5 config.cache_classes = true # This must be true for Cucumber to operate correctly!
2 6
3 # Log error messages when you accidentally call methods on nil. 7 # Log error messages when you accidentally call methods on nil.
@@ -15,7 +19,8 @@ config.action_controller.allow_forgery_protection = false @@ -15,7 +19,8 @@ config.action_controller.allow_forgery_protection = false
15 # ActionMailer::Base.deliveries array. 19 # ActionMailer::Base.deliveries array.
16 config.action_mailer.delivery_method = :test 20 config.action_mailer.delivery_method = :test
17 21
18 -config.gem "cucumber", :lib => false, :version => ">=0.3.11" unless File.directory?(File.join(Rails.root, 'vendor/plugins/cucumber'))  
19 -config.gem "webrat", :lib => false, :version => ">=0.4.4" unless File.directory?(File.join(Rails.root, 'vendor/plugins/webrat'))  
20 -config.gem "rspec", :lib => 'spec', :version => ">=1.2.6" unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec'))  
21 -config.gem "rspec-rails", :lib => 'spec/rails', :version => ">=1.2.6" unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec-rails')) 22 +config.gem 'cucumber', :lib => false, :version => '>=0.4.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/cucumber'))
  23 +config.gem 'webrat', :lib => false, :version => '>=0.5.0' unless File.directory?(File.join(Rails.root, 'vendor/plugins/webrat'))
  24 +config.gem 'rspec', :lib => 'spec', :version => '>=1.2.8' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec'))
  25 +config.gem 'rspec-rails', :lib => 'spec/rails', :version => '>=1.2.7.1' unless File.directory?(File.join(Rails.root, 'vendor/plugins/rspec-rails'))
  26 +
features/step_definitions/webrat_steps.rb
  1 +# IMPORTANT: This file was generated by Cucumber 0.4.0
  2 +# Edit at your own peril - it's recommended to regenerate this file
  3 +# in the future when you upgrade to a newer version of Cucumber.
  4 +# Consider adding your own code to a new file instead of editing this one.
  5 +
1 require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths")) 6 require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
2 7
3 # Commonly used webrat steps 8 # Commonly used webrat steps
@@ -19,21 +24,46 @@ When /^I follow "([^\"]*)"$/ do |link| @@ -19,21 +24,46 @@ When /^I follow "([^\"]*)"$/ do |link|
19 click_link(link) 24 click_link(link)
20 end 25 end
21 26
  27 +When /^I follow "([^\"]*)" within "([^\"]*)"$/ do |link, parent|
  28 + click_link_within(parent, link)
  29 +end
  30 +
22 When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value| 31 When /^I fill in "([^\"]*)" with "([^\"]*)"$/ do |field, value|
23 - fill_in(field, :with => value) 32 + fill_in(field, :with => value)
  33 +end
  34 +
  35 +When /^I fill in "([^\"]*)" for "([^\"]*)"$/ do |value, field|
  36 + fill_in(field, :with => value)
  37 +end
  38 +
  39 +# Use this to fill in an entire form with data from a table. Example:
  40 +#
  41 +# When I fill in the following:
  42 +# | Account Number | 5002 |
  43 +# | Expiry date | 2009-11-01 |
  44 +# | Note | Nice guy |
  45 +# | Wants Email? | |
  46 +#
  47 +# TODO: Add support for checkbox, select og option
  48 +# based on naming conventions.
  49 +#
  50 +When /^I fill in the following:$/ do |fields|
  51 + fields.rows_hash.each do |name, value|
  52 + When %{I fill in "#{name}" with "#{value}"}
  53 + end
24 end 54 end
25 55
26 When /^I select "([^\"]*)" from "([^\"]*)"$/ do |value, field| 56 When /^I select "([^\"]*)" from "([^\"]*)"$/ do |value, field|
27 - select(value, :from => field) 57 + select(value, :from => field)
28 end 58 end
29 59
30 # Use this step in conjunction with Rail's datetime_select helper. For example: 60 # Use this step in conjunction with Rail's datetime_select helper. For example:
31 -# When I select "December 25, 2008 10:00" as the date and time 61 +# When I select "December 25, 2008 10:00" as the date and time
32 When /^I select "([^\"]*)" as the date and time$/ do |time| 62 When /^I select "([^\"]*)" as the date and time$/ do |time|
33 select_datetime(time) 63 select_datetime(time)
34 end 64 end
35 65
36 -# Use this step when using multiple datetime_select helpers on a page or 66 +# Use this step when using multiple datetime_select helpers on a page or
37 # you want to specify which datetime to select. Given the following view: 67 # you want to specify which datetime to select. Given the following view:
38 # <%= f.label :preferred %><br /> 68 # <%= f.label :preferred %><br />
39 # <%= f.datetime_select :preferred %> 69 # <%= f.datetime_select :preferred %>
@@ -49,7 +79,7 @@ end @@ -49,7 +79,7 @@ end
49 # Use this step in conjunction with Rail's time_select helper. For example: 79 # Use this step in conjunction with Rail's time_select helper. For example:
50 # When I select "2:20PM" as the time 80 # When I select "2:20PM" as the time
51 # Note: Rail's default time helper provides 24-hour time-- not 12 hour time. Webrat 81 # Note: Rail's default time helper provides 24-hour time-- not 12 hour time. Webrat
52 -# will convert the 2:20PM to 14:20 and then select it. 82 +# will convert the 2:20PM to 14:20 and then select it.
53 When /^I select "([^\"]*)" as the time$/ do |time| 83 When /^I select "([^\"]*)" as the time$/ do |time|
54 select_time(time) 84 select_time(time)
55 end 85 end
@@ -75,11 +105,11 @@ When /^I select &quot;([^\&quot;]*)&quot; as the &quot;([^\&quot;]*)&quot; date$/ do |date, date_label| @@ -75,11 +105,11 @@ When /^I select &quot;([^\&quot;]*)&quot; as the &quot;([^\&quot;]*)&quot; date$/ do |date, date_label|
75 end 105 end
76 106
77 When /^I check "([^\"]*)"$/ do |field| 107 When /^I check "([^\"]*)"$/ do |field|
78 - check(field) 108 + check(field)
79 end 109 end
80 110
81 When /^I uncheck "([^\"]*)"$/ do |field| 111 When /^I uncheck "([^\"]*)"$/ do |field|
82 - uncheck(field) 112 + uncheck(field)
83 end 113 end
84 114
85 When /^I choose "([^\"]*)"$/ do |field| 115 When /^I choose "([^\"]*)"$/ do |field|
@@ -94,10 +124,46 @@ Then /^I should see &quot;([^\&quot;]*)&quot;$/ do |text| @@ -94,10 +124,46 @@ Then /^I should see &quot;([^\&quot;]*)&quot;$/ do |text|
94 response.should contain(text) 124 response.should contain(text)
95 end 125 end
96 126
  127 +Then /^I should see "([^\"]*)" within "([^\"]*)"$/ do |text, selector|
  128 + within(selector) do |content|
  129 + content.should contain(text)
  130 + end
  131 +end
  132 +
  133 +Then /^I should see \/([^\/]*)\/$/ do |regexp|
  134 + regexp = Regexp.new(regexp)
  135 + response.should contain(regexp)
  136 +end
  137 +
  138 +Then /^I should see \/([^\/]*)\/ within "([^\"]*)"$/ do |regexp, selector|
  139 + within(selector) do |content|
  140 + regexp = Regexp.new(regexp)
  141 + content.should contain(regexp)
  142 + end
  143 +end
  144 +
97 Then /^I should not see "([^\"]*)"$/ do |text| 145 Then /^I should not see "([^\"]*)"$/ do |text|
98 response.should_not contain(text) 146 response.should_not contain(text)
99 end 147 end
100 148
  149 +Then /^I should not see "([^\"]*)" within "([^\"]*)"$/ do |text, selector|
  150 + within(selector) do |content|
  151 + content.should_not contain(text)
  152 + end
  153 +end
  154 +
  155 +Then /^I should not see \/([^\/]*)\/$/ do |regexp|
  156 + regexp = Regexp.new(regexp)
  157 + response.should_not contain(regexp)
  158 +end
  159 +
  160 +Then /^I should not see \/([^\/]*)\/ within "([^\"]*)"$/ do |regexp, selector|
  161 + within(selector) do |content|
  162 + regexp = Regexp.new(regexp)
  163 + content.should_not contain(regexp)
  164 + end
  165 +end
  166 +
101 Then /^the "([^\"]*)" field should contain "([^\"]*)"$/ do |field, value| 167 Then /^the "([^\"]*)" field should contain "([^\"]*)"$/ do |field, value|
102 field_labeled(field).value.should =~ /#{value}/ 168 field_labeled(field).value.should =~ /#{value}/
103 end 169 end
@@ -105,7 +171,7 @@ end @@ -105,7 +171,7 @@ end
105 Then /^the "([^\"]*)" field should not contain "([^\"]*)"$/ do |field, value| 171 Then /^the "([^\"]*)" field should not contain "([^\"]*)"$/ do |field, value|
106 field_labeled(field).value.should_not =~ /#{value}/ 172 field_labeled(field).value.should_not =~ /#{value}/
107 end 173 end
108 - 174 +
109 Then /^the "([^\"]*)" checkbox should be checked$/ do |label| 175 Then /^the "([^\"]*)" checkbox should be checked$/ do |label|
110 field_labeled(label).should be_checked 176 field_labeled(label).should be_checked
111 end 177 end
@@ -117,3 +183,7 @@ end @@ -117,3 +183,7 @@ end
117 Then /^I should be on (.+)$/ do |page_name| 183 Then /^I should be on (.+)$/ do |page_name|
118 URI.parse(current_url).path.should == path_to(page_name) 184 URI.parse(current_url).path.should == path_to(page_name)
119 end 185 end
  186 +
  187 +Then /^show me the page$/ do
  188 + save_and_open_page
  189 +end
120 \ No newline at end of file 190 \ No newline at end of file
features/support/env.rb
  1 +# IMPORTANT: This file was generated by Cucumber 0.4.0
  2 +# Edit at your own peril - it's recommended to regenerate this file
  3 +# in the future when you upgrade to a newer version of Cucumber.
  4 +# Consider adding your own code to a new file instead of editing this one.
  5 +
1 # Sets up the Rails environment for Cucumber 6 # Sets up the Rails environment for Cucumber
2 ENV["RAILS_ENV"] ||= "cucumber" 7 ENV["RAILS_ENV"] ||= "cucumber"
3 require File.expand_path(File.dirname(__FILE__) + '/../../config/environment') 8 require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
4 require 'cucumber/rails/world' 9 require 'cucumber/rails/world'
5 10
6 -# Comment out the next line if you don't want Cucumber Unicode support  
7 -require 'cucumber/formatter/unicode' 11 +# If you set this to true, each scenario will run in a database transaction.
  12 +# You can still turn off transactions on a per-scenario basis, simply tagging
  13 +# a feature or scenario with the @no-txn tag.
  14 +#
  15 +# If you set this to false, transactions will be off for all scenarios,
  16 +# regardless of whether you use @no-txn or not.
  17 +#
  18 +# Beware that turning transactions off will leave data in your database
  19 +# after each scenario, which can lead to hard-to-debug failures in
  20 +# subsequent scenarios. If you do this, we recommend you create a Before
  21 +# block that will explicitly put your database in a known state.
  22 +Cucumber::Rails::World.use_transactional_fixtures = true
8 23
9 -# Comment out the next line if you don't want transactions to  
10 -# open/roll back around each scenario  
11 -Cucumber::Rails.use_transactional_fixtures 24 +# If you set this to false, any error raised from within your app will bubble
  25 +# up to your step definition and out to cucumber unless you catch it somewhere
  26 +# on the way. You can make Rails rescue errors and render error pages on a
  27 +# per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
  28 +#
  29 +# If you set this to true, Rails will rescue all errors and render error
  30 +# pages, more or less in the same way your application would behave in the
  31 +# default production environment. It's not recommended to do this for all
  32 +# of your scenarios, as this makes it hard to discover errors in your application.
  33 +ActionController::Base.allow_rescue = false
12 34
13 -# Comment out the next line if you want Rails' own error handling  
14 -# (e.g. rescue_action_in_public / rescue_responses / rescue_from)  
15 -Cucumber::Rails.bypass_rescue 35 +require 'cucumber'
  36 +# Comment out the next line if you don't want Cucumber Unicode support
  37 +require 'cucumber/formatter/unicode'
  38 +require 'cucumber/webrat/element_locator' # Lets you do table.diff!(element_at('#my_table_or_dl_or_ul_or_ol').to_table)
  39 +require 'cucumber/rails/rspec'
16 40
17 require 'webrat' 41 require 'webrat'
18 - 42 +require 'webrat/core/matchers'
19 Webrat.configure do |config| 43 Webrat.configure do |config|
20 config.mode = :rails 44 config.mode = :rails
  45 + config.open_error_files = false # Set to true if you want error pages to pop up in the browser
21 end 46 end
22 47
23 -require 'cucumber/rails/rspec'  
24 -require 'webrat/core/matchers'  
25 -  
26 -# set the very basic fixtures for Noosfero  
27 -Fixtures.reset_cache  
28 -fixtures_folder = File.join(RAILS_ROOT, 'test', 'fixtures')  
29 -fixtures = ['environments', 'roles']  
30 -Fixtures.create_fixtures(fixtures_folder, fixtures)  
features/support/fixtures.rb 0 → 100644
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
  1 +# set the very basic fixtures for Noosfero
  2 +Fixtures.reset_cache
  3 +fixtures_folder = File.join(RAILS_ROOT, 'test', 'fixtures')
  4 +fixtures = ['environments', 'roles']
  5 +Fixtures.create_fixtures(fixtures_folder, fixtures)
  6 +
features/support/version_check.rb 0 → 100644
@@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
  1 +if Cucumber::VERSION::STRING != '0.4.0'
  2 +warning = <<-WARNING
  3 +(::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::)
  4 +
  5 + (::) R O T T E N C U C U M B E R A L E R T (::)
  6 +
  7 +Your #{__FILE__.gsub(/version_check.rb$/, 'env.rb')} file was generated with Cucumber 0.4.0,
  8 +but you seem to be running Cucumber #{Cucumber::VERSION::STRING}. If you're running an older
  9 +version than #{Cucumber::VERSION::STRING}, just upgrade your gem. If you're running a newer
  10 +version than #{Cucumber::VERSION::STRING} you should:
  11 +
  12 + 1) Read http://wiki.github.com/aslakhellesoy/cucumber/upgrading
  13 +
  14 + 2) Regenerate your cucumber environment with the following command:
  15 +
  16 + ruby script/generate cucumber
  17 +
  18 +If you get prompted to replace a file, hit 'd' to see the difference.
  19 +When you're sure you have captured any personal edits, confirm that you
  20 +want to overwrite #{__FILE__.gsub(/version_check.rb$/, 'env.rb')} by pressing 'y'. Then reapply any
  21 +personal changes that may have been overwritten.
  22 +
  23 +This message will then self destruct.
  24 +
  25 +(::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::)
  26 +WARNING
  27 +warn(warning)
  28 +at_exit {warn(warning)}
  29 +end
0 \ No newline at end of file 30 \ No newline at end of file
lib/tasks/cucumber.rake
  1 +# This file was generated by
1 $LOAD_PATH.unshift(RAILS_ROOT + '/vendor/plugins/cucumber/lib') if File.directory?(RAILS_ROOT + '/vendor/plugins/cucumber/lib') 2 $LOAD_PATH.unshift(RAILS_ROOT + '/vendor/plugins/cucumber/lib') if File.directory?(RAILS_ROOT + '/vendor/plugins/cucumber/lib')
2 3
  4 +unless ARGV.any? {|a| a =~ /^gems/}
  5 +
3 begin 6 begin
4 require 'cucumber/rake/task' 7 require 'cucumber/rake/task'
5 8
6 - Cucumber::Rake::Task.new(:features) do |t|  
7 - t.fork = true  
8 - t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'pretty')] 9 + # Use vendored cucumber binary if possible. If it's not vendored,
  10 + # Cucumber::Rake::Task will automatically use installed gem's cucumber binary
  11 + vendored_cucumber_binary = Dir["#{RAILS_ROOT}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
  12 +
  13 + namespace :cucumber do
  14 + Cucumber::Rake::Task.new({:ok => 'db:test:prepare'}, 'Run features that should pass') do |t|
  15 + t.binary = vendored_cucumber_binary
  16 + t.fork = true # You may get faster startup if you set this to false
  17 + t.cucumber_opts = "--color --tags ~@wip --strict --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}"
  18 + end
  19 +
  20 + Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t|
  21 + t.binary = vendored_cucumber_binary
  22 + t.fork = true # You may get faster startup if you set this to false
  23 + t.cucumber_opts = "--color --tags @wip:2 --wip --format #{ENV['CUCUMBER_FORMAT'] || 'pretty'}"
  24 + end
  25 +
  26 + desc 'Run all features'
  27 + task :all => [:ok, :wip]
  28 + end
  29 + desc 'Alias for cucumber:ok'
  30 + task :cucumber => 'cucumber:ok'
  31 +
  32 + task :default => :cucumber
  33 +
  34 + task :features => :cucumber do
  35 + STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
9 end 36 end
10 - task :features => 'db:test:prepare'  
11 rescue LoadError 37 rescue LoadError
12 - desc 'Cucumber rake task not available'  
13 - task :features do 38 + desc 'cucumber rake task not available (cucumber not installed)'
  39 + task :cucumber do
14 abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin' 40 abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
15 end 41 end
16 end 42 end
  43 +
  44 +end
script/cucumber 0 → 100755
@@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
  1 +#!/usr/bin/env ruby
  2 +
  3 +vendored_cucumber_binary = Dir[File.join(File.dirname(__FILE__),
  4 + '..',
  5 + 'vendor',
  6 + '{gems,plugins}',
  7 + 'cucumber*',
  8 + 'bin',
  9 + 'cucumber')].first
  10 +
  11 +if vendored_cucumber_binary
  12 + load File.expand_path(vendored_cucumber_binary)
  13 +else
  14 + require 'rubygems' unless ENV['NO_RUBYGEMS']
  15 + require 'cucumber'
  16 + load Cucumber::BINARY
  17 +end