cucumber-rails 0.3.0 → 0.3.1

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