cucumber-rails 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. data/HACKING.rdoc +7 -17
  2. data/History.txt +30 -0
  3. data/README.rdoc +16 -10
  4. data/Rakefile +2 -2
  5. data/VERSION +1 -1
  6. data/cucumber-rails.gemspec +12 -10
  7. data/features/rails2.feature +51 -8
  8. data/features/rails3.feature +55 -14
  9. data/features/rerun_profile.feature +38 -0
  10. data/features/step_definitions/cucumber_rails_steps.rb +23 -0
  11. data/lib/cucumber/rails/capybara_javascript_emulation.rb +2 -2
  12. data/lib/cucumber/rails/rspec.rb +3 -5
  13. data/lib/cucumber/rails/test_unit.rb +4 -6
  14. data/lib/cucumber/rails/world.rb +1 -1
  15. data/lib/cucumber/web/tableish.rb +50 -9
  16. data/lib/generators/cucumber/skeleton/skeleton_base.rb +4 -4
  17. data/rvm.yml +2 -2
  18. data/spec/cucumber/web/tableish_spec.rb +36 -6
  19. data/templates/feature/feature.erb +10 -12
  20. data/templates/feature/steps.erb +1 -1
  21. data/templates/skeleton/config/cucumber.yml.erb +4 -3
  22. data/templates/skeleton/environments/cucumber.rb.erb +1 -1
  23. data/templates/skeleton/step_definitions/capybara_steps.rb.erb +40 -23
  24. data/templates/skeleton/step_definitions/web_steps_de.rb.erb +33 -33
  25. data/templates/skeleton/step_definitions/web_steps_ja.rb.erb +139 -0
  26. data/templates/skeleton/step_definitions/web_steps_ko.rb.erb +141 -0
  27. data/templates/skeleton/step_definitions/webrat_steps.rb.erb +36 -28
  28. data/templates/skeleton/support/{_rails_each_run.rb → _rails_each_run.rb.erb} +2 -1
  29. data/templates/skeleton/support/_rails_prefork.rb.erb +2 -0
  30. data/templates/skeleton/support/paths.rb +10 -4
  31. data/templates/skeleton/support/rails.rb.erb +1 -1
  32. data/templates/skeleton/support/rails_spork.rb.erb +1 -1
  33. data/templates/skeleton/tasks/cucumber.rake.erb +6 -0
  34. metadata +11 -9
  35. data/generators/cucumber/templates/step_definitions/web_steps_ja.rb.erb +0 -136
@@ -9,26 +9,16 @@ The feature branch should contain a ticket number (if appliccable) and a descrip
9
9
 
10
10
  == Setting up your environment
11
11
 
12
- Before you change anything, you should make sure you can run all the Cucumber features for Cucumber-Rails.
13
- The first time you clone the repo you may have to install Rails for all of the Ruby versions we're testing against.
14
- For this you need RVM:
12
+ Before you change anything, you should make sure you can run all the Cucumber features for Cucumber-Rails. You need rvm.
15
13
 
16
- === Installing rubies with RVM
14
+ sudo gem install rvm
15
+ rvm install 1.8.7 1.9.1
17
16
 
18
- sudo gem install rvm
19
- rvm install 1.8.7 1.9.1
17
+ == Running all features
20
18
 
21
- === Installing gems
22
-
23
- In order to avoid conflicts we'll use RVM's gem sets to set up a gem set for each combination of Ruby version and Rails version
24
- to be tested against. Open platforms.yml and modify the rubies section if you have different patchlevels for the rubies.
25
-
26
- Installing the various gem sets is done with the following command:
27
-
28
- rake gemsets:install
29
-
30
- This will take 10-15 minutes to complete, as there are many gems to download. After you have done this once you shouldn't have
31
- to do it again (unless future versions require new gems).
19
+ rake cucumber
20
+
21
+ This takes a long time because a lot of gems have to be installed. (This is done while running the cucumber features)
32
22
 
33
23
  == Gotchas
34
24
  * https://rails.lighthouseapp.com/projects/8994/tickets/3865-invalid-gemspec-format-in-and-already-initialized-constant-warnings-with-ruby-192dev
@@ -1,3 +1,33 @@
1
+ == 0.3.1
2
+
3
+ This release has a lot of bugfixes! The test suite (based on Aruba) verifies that Cucumber-Rails
4
+ now works with various combinations of:
5
+
6
+ * Cucumber 0.6.x/0.7.2
7
+ * Rails2/Rails3
8
+ * RSpec1/RSpec2/Test-Unit/Mini-Uint
9
+ * Webrat/CapyBara
10
+ * MRI 1.8.6/1.8.7/1.9.1
11
+
12
+ This one requires a special mention: The handy (but error prone) rerun functionality has moved to a
13
+ separate rerun profile, so all rerun.txt related issues should now be gone.
14
+
15
+ == New features
16
+ * New Capybara Step Definitions for Dates. (Rob Holland)
17
+ * Steps now recognise "Given I am on the users page" etc. (Solomon White)
18
+ * Relegate rerun to its own profile and rake task (Mike Sassak)
19
+ * Added new Then /^(?:|I )should see JSON:$/ step definition to Capybara - useful for REST. (Aslak Hellesøy)
20
+ * The #tableish method now understands tables with colspan and rowspan
21
+ * Support RSpec 2 (Johan Kiviniemi, Aslak Hellesøy, Rolf Bjaanes)
22
+ * Added @no-js-emulation, which turns off javascript emulation for delete links when not using browser testing. (Rob Holland, Aslak Hellesøy)
23
+ * Korean translation (Shim Taewon)
24
+
25
+ === Bugfixes
26
+ * No longer need to install the test-unit gem on 1.9.1 (Aslak Hellesøy)
27
+ * capybara rack-test field should contain step support for textarea (#28 Nicholas Rutherford)
28
+ * "Rspec is not missing constant Matchers!" error. (#27 David Chelimsky, Aslak Hellesøy)
29
+ * @culerity tag breaks Rails 3 RESTful helpers (#17 Aslak Hellesøy)
30
+
1
31
  == 0.3.0
2
32
 
3
33
  This is a major release since we're now supporting both Rails 3 and RSpec 2. Older versions
@@ -15,20 +15,22 @@ Before you can use the generator, add the necessary gems to your project's Gemfi
15
15
  gem 'capybara'
16
16
  gem 'database_cleaner'
17
17
  gem 'cucumber-rails'
18
-
19
- Or if you prefer the latest and greatest:
20
-
21
- gem 'capybara', :git => 'git://github.com/jnicklas/capybara.git'
22
- gem 'database_cleaner', :git => 'git://github.com/bmabey/database_cleaner.git'
23
- gem 'cucumber-rails', :git => 'git://github.com/aslakhellesoy/cucumber-rails3.git'
18
+ gem 'cucumber', '0.7.2'
19
+ gem 'rspec-rails', '2.0.0.beta.8'
20
+ gem 'spork'
21
+ gem 'launchy' # So you can do Then show me the page
24
22
 
25
23
  Then install the gems by running:
26
24
 
27
25
  bundle install
28
26
 
29
- Finally, bootstrap your Rails app by running:
27
+ Learn about the various options:
28
+
29
+ ruby script/rails generate cucumber:skeleton --help
30
30
 
31
- ruby script/rails generate cucumber:skeleton
31
+ Finally, bootstrap your Rails app, for example:
32
+
33
+ ruby script/rails generate cucumber:skeleton --rspec --capybara
32
34
 
33
35
  === Rails 2.x:
34
36
 
@@ -36,9 +38,13 @@ Before you can use the generator, install the gem by running:
36
38
 
37
39
  gem install cucumber-rails
38
40
 
39
- Finally, bootstrap your Rails app by running:
41
+ Learn about the various options:
42
+
43
+ ruby script/generate cucumber --help
44
+
45
+ Finally, bootstrap your Rails app, for example:
40
46
 
41
- script/generate cucumber
47
+ ruby script/generate cucumber --rspec --capybara
42
48
 
43
49
  == Generating a Cucumber feature
44
50
 
data/Rakefile CHANGED
@@ -11,8 +11,8 @@ begin
11
11
  gemspec.authors = ["Dennis Blöte", "Aslak Hellesøy", "Rob Holland"]
12
12
  gemspec.homepage = "http://github.com/aslakhellesoy/cucumber-rails"
13
13
 
14
- gemspec.add_dependency 'cucumber', '>= 0.6.2'
15
- gemspec.add_development_dependency 'aruba', '>= 0.1.5'
14
+ gemspec.add_dependency 'cucumber', '>= 0.7.2'
15
+ gemspec.add_development_dependency 'aruba', '>= 0.1.9'
16
16
  end
17
17
  Jeweler::GemcutterTasks.new
18
18
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{cucumber-rails}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Dennis Bl\303\266te", "Aslak Helles\303\270y", "Rob Holland"]
12
- s.date = %q{2010-02-26}
12
+ s.date = %q{2010-05-04}
13
13
  s.description = %q{Cucumber Generators and Runtime for Rails}
14
14
  s.email = %q{cukes@googlegroups.com}
15
15
  s.extra_rdoc_files = [
@@ -28,12 +28,12 @@ Gem::Specification.new do |s|
28
28
  "dev_tasks/rspec.rake",
29
29
  "features/rails2.feature",
30
30
  "features/rails3.feature",
31
+ "features/rerun_profile.feature",
31
32
  "features/step_definitions/cucumber_rails_steps.rb",
32
33
  "features/support/env.rb",
33
34
  "features/support/matchers/files.rb",
34
35
  "generators/cucumber/USAGE",
35
36
  "generators/cucumber/cucumber_generator.rb",
36
- "generators/cucumber/templates/step_definitions/web_steps_ja.rb.erb",
37
37
  "generators/feature/USAGE",
38
38
  "generators/feature/feature_generator.rb",
39
39
  "lib/cucumber/rails/action_controller.rb",
@@ -65,10 +65,12 @@ Gem::Specification.new do |s|
65
65
  "templates/skeleton/step_definitions/web_steps_da.rb.erb",
66
66
  "templates/skeleton/step_definitions/web_steps_de.rb.erb",
67
67
  "templates/skeleton/step_definitions/web_steps_es.rb.erb",
68
+ "templates/skeleton/step_definitions/web_steps_ja.rb.erb",
69
+ "templates/skeleton/step_definitions/web_steps_ko.rb.erb",
68
70
  "templates/skeleton/step_definitions/web_steps_no.rb.erb",
69
71
  "templates/skeleton/step_definitions/web_steps_pt-BR.rb.erb",
70
72
  "templates/skeleton/step_definitions/webrat_steps.rb.erb",
71
- "templates/skeleton/support/_rails_each_run.rb",
73
+ "templates/skeleton/support/_rails_each_run.rb.erb",
72
74
  "templates/skeleton/support/_rails_prefork.rb.erb",
73
75
  "templates/skeleton/support/capybara.rb",
74
76
  "templates/skeleton/support/edit_warning.txt",
@@ -94,15 +96,15 @@ Gem::Specification.new do |s|
94
96
  s.specification_version = 3
95
97
 
96
98
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
97
- s.add_runtime_dependency(%q<cucumber>, [">= 0.6.2"])
98
- s.add_development_dependency(%q<aruba>, [">= 0.1.5"])
99
+ s.add_runtime_dependency(%q<cucumber>, [">= 0.7.2"])
100
+ s.add_development_dependency(%q<aruba>, [">= 0.1.9"])
99
101
  else
100
- s.add_dependency(%q<cucumber>, [">= 0.6.2"])
101
- s.add_dependency(%q<aruba>, [">= 0.1.5"])
102
+ s.add_dependency(%q<cucumber>, [">= 0.7.2"])
103
+ s.add_dependency(%q<aruba>, [">= 0.1.9"])
102
104
  end
103
105
  else
104
- s.add_dependency(%q<cucumber>, [">= 0.6.2"])
105
- s.add_dependency(%q<aruba>, [">= 0.1.5"])
106
+ s.add_dependency(%q<cucumber>, [">= 0.7.2"])
107
+ s.add_dependency(%q<aruba>, [">= 0.1.9"])
106
108
  end
107
109
  end
108
110
 
@@ -5,13 +5,22 @@ Feature: Rails 2
5
5
 
6
6
  Scenario Outline: Install Cucumber-Rails
7
7
  Given I am using rvm "1.8.7"
8
- And I am using rvm gemset "cucumber-rails-2.3.5"
8
+ And I am using rvm gemset "cucumber-rails-2.3.5" with Gemfile:
9
+ """
10
+ gem 'rails', '2.3.5'
11
+ gem 'sqlite3-ruby', '1.2.5'
12
+ gem 'capybara', '0.3.7'
13
+ gem 'webrat', '0.7.0'
14
+ gem 'rspec-rails', '1.3.2'
15
+ gem 'cucumber', '0.7.2'
16
+ """
9
17
  When I successfully run "rails rails-2-app"
10
18
  Then it should pass with:
11
19
  """
12
20
  create README
13
21
  """
14
22
  And I cd to "rails-2-app"
23
+ And I symlink this repo to "vendor/plugins/cucumber-rails"
15
24
  When I successfully run "ruby script/generate cucumber <args>"
16
25
  Then the following files should exist:
17
26
  | config/cucumber.yml |
@@ -34,23 +43,57 @@ Feature: Rails 2
34
43
 
35
44
  @announce-cmd
36
45
  Scenario Outline: Run Cucumber
37
- Given I am using rvm "1.8.7"
38
- And I am using rvm gemset "cucumber-rails-2.3.5"
46
+ Given I am using rvm "<ruby_version>"
47
+ And I am using rvm gemset "cucumber-rails-2.3.5" with Gemfile:
48
+ """
49
+ gem 'rails', '2.3.5'
50
+ gem 'sqlite3-ruby', '1.2.5'
51
+ gem 'capybara', '0.3.7'
52
+ gem 'webrat', '0.7.0'
53
+ gem 'rspec-rails', '1.3.2'
54
+ gem 'cucumber', '0.7.2'
55
+ gem 'database_cleaner', '0.5.2'
56
+ gem 'culerity', '0.2.10'
57
+ gem 'celerity', '0.7.9'
58
+ """
39
59
  And I successfully run "rails rails-2-app"
40
60
  And I cd to "rails-2-app"
41
61
  And I symlink this repo to "vendor/plugins/cucumber-rails"
42
62
  And I successfully run "ruby script/generate cucumber --capybara"
43
63
  And I successfully run "ruby script/generate feature post title:string body:text published:boolean <feature_args>"
44
64
  And I successfully run "ruby script/generate scaffold post title:string body:text published:boolean"
65
+ And I successfully run "ruby script/generate scaffold cukes name:string"
66
+ And I write to "app/controllers/cukes_controller.rb" with:
67
+ """
68
+ class CukesController < ApplicationController
69
+ def index
70
+ redirect_to cuke_path(10, :params => {:name => 'cucumber', :what => 'vegetable'})
71
+ end
72
+
73
+ def show
74
+ render :text => "Cuke #{params[:id]}"
75
+ end
76
+ end
77
+ """
78
+ And I write to "features/tests.feature" with:
79
+ """
80
+ Feature: Tests
81
+ Scenario: Tests
82
+ When I go to the cukes page
83
+ Then I should have the following query string:
84
+ |name|cucumber|
85
+ |what|vegetable|
86
+ And I should see "Cuke 10"
87
+ """
45
88
  And I successfully run "rake db:migrate"
46
89
  When I successfully run "rake cucumber"
47
90
  Then it should pass with:
48
91
  """
49
- 2 scenarios (2 passed)
50
- 11 steps (11 passed)
92
+ 3 scenarios (3 passed)
93
+ 14 steps (14 passed)
51
94
  """
52
95
 
53
96
  Examples:
54
- | feature_args |
55
- | |
56
- | --capybara culerity |
97
+ | generator_args | feature_args | ruby_version |
98
+ | --webrat --testunit | | 1.8.6 |
99
+ | --capybara --rspec | --capybara culerity | 1.8.7 |
@@ -6,7 +6,12 @@ Feature: Rails 3
6
6
 
7
7
  Scenario: Install Cucumber-Rails
8
8
  Given I am using rvm "1.8.7"
9
- And I am using rvm gemset "cucumber-rails-3.0.0.beta"
9
+ And I am using rvm gemset "cucumber-rails-3.0.0.beta" with Gemfile:
10
+ """
11
+ gem 'rails', '3.0.0.beta'
12
+ gem 'sqlite3-ruby', '1.2.5'
13
+ gem 'capybara', '0.3.7'
14
+ """
10
15
  When I successfully run "rails rails-3-app"
11
16
  Then it should pass with:
12
17
  """
@@ -14,7 +19,7 @@ Feature: Rails 3
14
19
  """
15
20
  And I cd to "rails-3-app"
16
21
  And I symlink this repo to "vendor/plugins/cucumber-rails"
17
- When I successfully run "rails generate cucumber:skeleton"
22
+ When I successfully run "rails generate cucumber:skeleton --capybara"
18
23
  Then the following files should exist:
19
24
  | config/cucumber.yml |
20
25
  | script/cucumber |
@@ -25,28 +30,64 @@ Feature: Rails 3
25
30
  And the file "features/support/env.rb" should contain "require 'cucumber/rails/world'"
26
31
  And the file "features/support/env.rb" should contain "require 'capybara/rails'"
27
32
 
28
- Scenario: Run Cucumber
29
- Given I am using rvm "1.8.7"
30
- And I am using rvm gemset "cucumber-rails-3.0.0.beta"
33
+ Scenario Outline: Run Cucumber
34
+ Given I am using rvm "<ruby_version>"
35
+ And I am using rvm gemset "cucumber-rails-3.0.0.beta" with Gemfile:
36
+ """
37
+ source :gemcutter
38
+
39
+ gem 'rails', '3.0.0.beta'
40
+ gem 'sqlite3-ruby', '1.2.5'
41
+ gem 'capybara', '0.3.7'
42
+ gem 'rspec-rails', '<rspec_version>'
43
+ """
31
44
  And I successfully run "rails rails-3-app"
32
45
  And I cd to "rails-3-app"
33
46
  And I symlink this repo to "vendor/plugins/cucumber-rails"
34
- And I successfully run "rails generate cucumber:skeleton"
47
+ And I successfully run "rails generate cucumber:skeleton --capybara"
35
48
  And I successfully run "rails generate cucumber:feature post title:string body:text published:boolean"
36
49
  And I successfully run "rails generate scaffold post title:string body:text published:boolean"
50
+ And I successfully run "rails generate scaffold cukes name:string"
37
51
  And I append to "Gemfile" with:
38
52
  """
39
- gem 'cucumber'
40
- gem 'database_cleaner'
41
- gem 'capybara', :git => 'git://github.com/jnicklas/capybara.git'
53
+ gem 'capybara', '0.3.7'
54
+ gem 'cucumber', '0.7.2'
42
55
 
43
56
  """
44
- And I run "bundle install"
57
+ And I write to "app/controllers/cukes_controller.rb" with:
58
+ """
59
+ class CukesController < ApplicationController
60
+ def index
61
+ redirect_to cuke_path(10, :overwrite_params => {:name => 'cucumber', :what => 'vegetable'})
62
+ end
63
+
64
+ def show
65
+ render :text => "Cuke #{params[:id]}"
66
+ end
67
+ end
68
+ """
69
+ And I write to "features/tests.feature" with:
70
+ """
71
+ Feature: Tests
72
+ Scenario: Tests
73
+ When I go to the cukes page
74
+ Then I should have the following query string:
75
+ |name|cucumber|
76
+ |what|vegetable|
77
+ |controller|cukes|
78
+ |action|index|
79
+ And I should see "Cuke 10"
80
+ """
81
+ And I successfully run "bundle install"
45
82
  And I successfully run "rake db:migrate"
46
- And I run "rake cucumber"
83
+ And I successfully run "rake cucumber"
47
84
  Then it should pass with:
48
85
  """
49
- 2 scenarios (2 passed)
50
- 11 steps (11 passed)
86
+ 3 scenarios (3 passed)
87
+ 14 steps (14 passed)
51
88
  """
52
-
89
+
90
+ Examples:
91
+ | ruby_version | rspec_version |
92
+ | 1.8.7 | 1.3.2 |
93
+ | 1.9.1 | 2.0.0.beta.8 |
@@ -0,0 +1,38 @@
1
+ Feature: Rerun profile
2
+ In order to concentrate on failing features
3
+ As a Rails developer working with Cucumber
4
+ I want to rerun only failing features
5
+
6
+ Scenario: Rerun
7
+ Given I have created a new Rails 2 app "rails-2-app" with cucumber-rails support
8
+ And a file named "rerun.txt" with:
9
+ """
10
+ features/rerun_test.feature:2
11
+ """
12
+ And a file named "features/rerun_test.feature" with:
13
+ """
14
+ Feature: Rerun test
15
+ Scenario: failing before
16
+ Given fixed now
17
+
18
+ Scenario: always passing
19
+ Given passing
20
+ """
21
+ And a file named "features/step_definitions/rerun_steps.rb" with:
22
+ """
23
+ Given /fixed now/ do
24
+ puts "All fixed now"
25
+ end
26
+
27
+ Given /passing/ do
28
+ puts "I've always been passing"
29
+ end
30
+ """
31
+ When I successfully run "rake cucumber:rerun"
32
+ Then it should pass with:
33
+ """
34
+ 1 scenario (1 passed)
35
+ 1 step (1 passed)
36
+ """
37
+ And the file "rerun.txt" should not contain "features/rerun_test.feature:2"
38
+
@@ -5,3 +5,26 @@ Given /^I symlink this repo to "([^\"]*)"$/ do |target|
5
5
  FileUtils.ln_s(source, target)
6
6
  end
7
7
  end
8
+
9
+ Given /^I have created a new Rails 2 app "([^\"]*)" with cucumber\-rails support$/ do |app_name|
10
+ steps %Q{
11
+ Given I am using rvm "1.8.7"
12
+ And I am using rvm gemset "cucumber-rails-2.3.5" with Gemfile:
13
+ """
14
+ gem 'rails', '2.3.5'
15
+ gem 'sqlite3-ruby', '1.2.5'
16
+ gem 'capybara', '0.3.6'
17
+ gem 'webrat'
18
+ gem 'rspec-rails'
19
+ gem 'cucumber'
20
+ gem 'database_cleaner'
21
+ gem 'culerity'
22
+ gem 'celerity'
23
+ """
24
+ And I successfully run "rails #{app_name}"
25
+ And I cd to "#{app_name}"
26
+ And I symlink this repo to "vendor/plugins/cucumber-rails"
27
+ And I successfully run "ruby script/generate cucumber --capybara"
28
+ And I successfully run "rake db:migrate"
29
+ }
30
+ end