cucumber-rails 0.4.0.beta.1 → 0.4.0

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 (49) hide show
  1. data/.rvmrc +1 -1
  2. data/HACKING.rdoc +6 -8
  3. data/History.txt +18 -2
  4. data/README.rdoc +8 -10
  5. data/cucumber-rails.gemspec +10 -6
  6. data/dev_tasks/cucumber.rake +1 -1
  7. data/features/allow_rescue.feature +61 -0
  8. data/features/inspect_query_string.feature +36 -0
  9. data/features/install_cucumber_rails.feature +16 -0
  10. data/features/mongoid.feature +53 -0
  11. data/features/named_selectors.feature +33 -0
  12. data/features/no_database.feature +69 -0
  13. data/features/rerun_profile.feature +1 -2
  14. data/features/rest_api.feature +46 -0
  15. data/features/routing.feature +21 -0
  16. data/features/select_dates.feature +25 -0
  17. data/features/step_definitions/cucumber_rails_steps.rb +65 -4
  18. data/features/support/env.rb +5 -1
  19. data/generators/cucumber/cucumber_generator.rb +1 -27
  20. data/lib/cucumber/rails.rb +3 -20
  21. data/lib/cucumber/rails/capybara.rb +7 -0
  22. data/lib/cucumber/rails/capybara/select_dates_and_times.rb +21 -14
  23. data/lib/cucumber/rails/hooks.rb +3 -0
  24. data/lib/cucumber/rails/hooks/database_cleaner.rb +16 -3
  25. data/lib/cucumber/rails/rspec.rb +2 -0
  26. data/lib/cucumber/rails/version.rb +14 -9
  27. data/lib/cucumber/rails/world.rb +6 -0
  28. data/lib/cucumber/rails2.rb +1 -1
  29. data/lib/cucumber/rails3.rb +7 -7
  30. data/lib/generators/cucumber/install/install_base.rb +11 -51
  31. data/templates/install/config/cucumber.yml.erb +1 -1
  32. data/templates/install/step_definitions/capybara_steps.rb.erb +63 -85
  33. data/templates/install/step_definitions/web_steps_cs.rb.erb +11 -20
  34. data/templates/install/step_definitions/web_steps_da.rb.erb +11 -20
  35. data/templates/install/step_definitions/web_steps_es.rb.erb +11 -20
  36. data/templates/install/step_definitions/web_steps_ja.rb.erb +1 -0
  37. data/templates/install/step_definitions/web_steps_ko.rb.erb +1 -0
  38. data/templates/install/step_definitions/web_steps_no.rb.erb +11 -20
  39. data/templates/install/step_definitions/web_steps_pt-BR.rb.erb +11 -20
  40. data/templates/install/step_definitions/webrat_steps.rb.erb +11 -10
  41. data/templates/install/support/_rails_each_run.rb.erb +3 -19
  42. data/templates/install/support/edit_warning.txt +19 -5
  43. data/templates/install/support/selectors.rb +39 -0
  44. data/templates/install/tasks/cucumber.rake.erb +4 -0
  45. metadata +100 -82
  46. data/features/rails2.feature +0 -45
  47. data/features/rails3.feature +0 -123
  48. data/features/support/matchers/files.rb +0 -17
  49. data/spec/generators/cucumber/install/install_base_spec.rb +0 -75
@@ -1,45 +0,0 @@
1
- @announce
2
- Feature: Rails 2
3
- In order to take over the world
4
- Cucumber-Rails should work on major versions
5
- of Rails2 and Ruby, with Capybara, Webrat, Spork and DatabaseCleaner
6
-
7
- Scenario: Run Cucumber
8
- Given a Rails "2.3.5" project named "rails-2-app" with Cucumber-Rails generated with "--capybara --rspec"
9
-
10
- Given break
11
- And I symlink "../../../../cucumber" to "vendor/plugins/cucumber"
12
- And I symlink "../../.." to "vendor/plugins/cucumber-rails"
13
- And I successfully run "ruby script/generate cucumber --capybara"
14
- And I successfully run "ruby script/generate feature post title:string body:text published:boolean <feature_args>"
15
- And I successfully run "ruby script/generate scaffold post title:string body:text published:boolean"
16
- And I successfully run "ruby script/generate scaffold cukes name:string"
17
- And I write to "app/controllers/cukes_controller.rb" with:
18
- """
19
- class CukesController < ApplicationController
20
- def index
21
- redirect_to cuke_path(10, :params => {:name => 'cucumber', :what => 'vegetable'})
22
- end
23
-
24
- def show
25
- render :text => "Cuke #{params[:id]}"
26
- end
27
- end
28
- """
29
- And I write to "features/tests.feature" with:
30
- """
31
- Feature: Tests
32
- Scenario: Tests
33
- When I go to the cukes page
34
- Then I should have the following query string:
35
- |name|cucumber|
36
- |what|vegetable|
37
- And I should see "Cuke 10"
38
- """
39
- And I successfully run "rake db:migrate"
40
- When I successfully run "rake cucumber"
41
- Then it should pass with:
42
- """
43
- 3 scenarios (3 passed)
44
- 14 steps (14 passed)
45
- """
@@ -1,123 +0,0 @@
1
- @announce
2
- Feature: Rails 3
3
- In order to take over the world
4
- Cucumber-Rails should work on major versions
5
- of Rails 3 and Ruby, with Capybara, Spork and DatabaseCleaner
6
-
7
- Scenario: Install Cucumber-Rails
8
- Given I have created a new Rails 3 app "rails-3-app" with cucumber-rails support
9
- Then the following files should exist:
10
- | config/cucumber.yml |
11
- | script/cucumber |
12
- | features/step_definitions/web_steps.rb |
13
- | features/support/env.rb |
14
- | features/support/paths.rb |
15
- | lib/tasks/cucumber.rake |
16
- And the file "features/support/env.rb" should contain "require 'cucumber/rails'"
17
-
18
- Scenario: Inspect query string
19
- Given I have created a new Rails 3 app "rails-3-app" with cucumber-rails support
20
- And I successfully run "rails generate cucumber:feature post title:string body:text published:boolean"
21
- And I successfully run "rails generate scaffold post title:string body:text published:boolean"
22
- And I successfully run "rails generate scaffold cukes name:string"
23
- And I overwrite "app/controllers/cukes_controller.rb" with:
24
- """
25
- class CukesController < ApplicationController
26
- def index
27
- redirect_to cuke_path(10, {:name => 'cucumber', :what => 'vegetable'})
28
- end
29
-
30
- def show
31
- render :text => "Cuke #{params[:id]}"
32
- end
33
- end
34
- """
35
- And I write to "features/tests.feature" with:
36
- """
37
- Feature: Tests
38
- Scenario: Tests
39
- When I go to the cukes page
40
- Then I should have the following query string:
41
- | name | cucumber |
42
- | what | vegetable |
43
- And I should see "Cuke 10"
44
- """
45
- And I successfully run "rake db:migrate"
46
- And I successfully run "rake cucumber"
47
- Then it should pass with:
48
- """
49
- 3 scenarios (3 passed)
50
- 14 steps (14 passed)
51
- """
52
-
53
- Scenario: Allow rescue
54
- Given I have created a new Rails 3 app "rails-3-app" with cucumber-rails support
55
- And I write to "app/controllers/posts_controller.rb" with:
56
- """
57
- class PostsController < ApplicationController
58
- def index
59
- raise "There is an error in index"
60
- end
61
- end
62
- """
63
- And I write to "config/routes.rb" with:
64
- """
65
- Rails3App::Application.routes.draw do
66
- resources :posts
67
- end
68
- """
69
- And I write to "features/posts.feature" with:
70
- """
71
- Feature: posts
72
- @allow-rescue
73
- Scenario: See them
74
- When I do it
75
- """
76
- And I write to "features/step_definitions/posts_steps.rb" with:
77
- """
78
- When /^I do it$/ do
79
- visit '/posts'
80
- puts page.body
81
- end
82
- """
83
- And I run "rake cucumber"
84
- Then it should pass with:
85
- """
86
- 1 scenario (1 passed)
87
- 1 step (1 passed)
88
- """
89
-
90
- Scenario: Don't allow rescue
91
- Given I have created a new Rails 3 app "rails-3-app" with cucumber-rails support
92
- And I write to "app/controllers/posts_controller.rb" with:
93
- """
94
- class PostsController < ApplicationController
95
- def index
96
- raise "There is an error in index"
97
- end
98
- end
99
- """
100
- And I write to "config/routes.rb" with:
101
- """
102
- Rails3App::Application.routes.draw do
103
- resources :posts
104
- end
105
- """
106
- And I write to "features/posts.feature" with:
107
- """
108
- Feature: posts
109
- Scenario: See them
110
- When I do it
111
- """
112
- And I write to "features/step_definitions/posts_steps.rb" with:
113
- """
114
- When /^I do it$/ do
115
- visit '/posts'
116
- end
117
- """
118
- And I run "rake cucumber"
119
- Then it should fail with:
120
- """
121
- 1 scenario (1 failed)
122
- 1 step (1 failed)
123
- """
@@ -1,17 +0,0 @@
1
- RSpec::Matchers.define :have_files do |expected_files|
2
- match do |rails_app|
3
- actual_files = rails_app.files
4
- @missing_files = expected_files - actual_files
5
- @missing_files.empty?
6
- end
7
-
8
- failure_message_for_should do |expected_files|
9
- "Rails app was missing these files:\n" + @missing_files.map { |file| " #{file}" }.join("\n")
10
- end
11
- end
12
-
13
- RSpec::Matchers.define :have_contents do |contents|
14
- match do |file|
15
- file.read.include?(contents)
16
- end
17
- end
@@ -1,75 +0,0 @@
1
- require 'generators/cucumber/install/install_base'
2
-
3
- module Cucumber
4
- module Generators
5
- describe InstallBase do
6
- def instance_of_class_including(mixin)
7
- Class.new do
8
- include mixin
9
- end.new
10
- end
11
-
12
- before(:each) do
13
- Kernel.stub(:require => nil)
14
-
15
- @generator = instance_of_class_including(Cucumber::Generators::InstallBase)
16
- end
17
-
18
- # This is a private method, but there was a bug in it where it
19
- # defaulted to :testunit (the framework) when called to identify
20
- # the driver
21
- describe "#first_loadable" do
22
- it "detects loadable libraries" do
23
- Gem.should_receive(:available?).with('capybara').and_return(true)
24
- @generator.send(:first_loadable, [['capybara', :capybara], ['webrat', :webrat ]]).should == :capybara
25
- end
26
-
27
- it "tries the given libraries in order" do
28
- Gem.stub(:available?).with('capybara').and_return(false)
29
- Gem.should_receive(:available?).with('webrat').and_return(true)
30
- @generator.send(:first_loadable, [['capybara', :capybara], ['webrat', :webrat ]]).should == :webrat
31
- end
32
-
33
- it "returns nil if no libraries are available" do
34
- Gem.stub(:available? => false)
35
- @generator.send(:first_loadable, [['capybara', :capybara], ['webrat', :webrat ]]).should be_nil
36
- end
37
- end
38
-
39
- # This is a private method, but there may have been a bug in it where
40
- # it defaulted to :testunit (the framework) when called to identify
41
- # the driver
42
- describe "#detect_in_env" do
43
- describe "when env.rb doesn't exist" do
44
- it "returns nil" do
45
- File.should_receive(:file?).with("features/support/env.rb").and_return(false)
46
- @generator.send(:detect_in_env, [['capybara', :capybara], ['webrat', :webrat]]).should be_nil
47
- end
48
- end
49
-
50
- describe "when env.rb exists" do
51
- before(:each) do
52
- File.stub(:file => true)
53
- end
54
-
55
- it "detects loadable libraries, choosing the first in the argument list" do
56
- IO.should_receive(:read).with("features/support/env.rb").and_return("blah webrat capybara blah")
57
- @generator.send(:detect_in_env, [['capybara', :capybara], ['webrat', :webrat]]).should == :capybara
58
- end
59
-
60
- it "tries the given libraries in order" do
61
- IO.should_receive(:read).with("features/support/env.rb").and_return("blah webrat blah")
62
- @generator.send(:detect_in_env, [['capybara', :capybara], ['webrat', :webrat]]).should == :webrat
63
- end
64
-
65
- it "returns nil if no libraries are available" do
66
- IO.should_receive(:read).with("features/support/env.rb").and_return("blah blah")
67
- @generator.send(:detect_in_env, [['capybara', :capybara], ['webrat', :webrat]]).should be_nil
68
- end
69
- end
70
-
71
- end
72
-
73
- end
74
- end
75
- end