cucumber-rails 0.3.2 → 0.4.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/.gitignore +2 -0
  2. data/.rspec +1 -0
  3. data/.rvmrc +1 -0
  4. data/Gemfile +2 -0
  5. data/History.txt +7 -0
  6. data/README.rdoc +2 -2
  7. data/Rakefile +3 -19
  8. data/cucumber-rails.gemspec +25 -106
  9. data/dev_tasks/rspec.rake +6 -11
  10. data/features/rails2.feature +5 -24
  11. data/features/rails3.feature +82 -56
  12. data/features/step_definitions/cucumber_rails_steps.rb +3 -25
  13. data/features/support/env.rb +3 -1
  14. data/generators/cucumber/cucumber_generator.rb +1 -17
  15. data/lib/cucumber/rails.rb +29 -0
  16. data/lib/cucumber/rails/capybara/javascript_emulation.rb +83 -0
  17. data/lib/cucumber/rails/capybara/select_dates_and_times.rb +43 -0
  18. data/lib/cucumber/rails/hooks/allow_rescue.rb +8 -0
  19. data/lib/cucumber/rails/hooks/database_cleaner.rb +25 -0
  20. data/lib/cucumber/rails/hooks/mail.rb +5 -0
  21. data/lib/cucumber/rails/rspec.rb +0 -3
  22. data/lib/cucumber/rails/version.rb +15 -0
  23. data/lib/cucumber/rails/world.rb +2 -36
  24. data/lib/cucumber/rails2.rb +16 -0
  25. data/lib/cucumber/rails2/action_controller.rb +29 -0
  26. data/lib/cucumber/rails3.rb +16 -0
  27. data/lib/cucumber/rails3/action_controller.rb +12 -0
  28. data/lib/cucumber/rails3/application.rb +17 -0
  29. data/lib/generators/cucumber/feature/feature_generator.rb +1 -1
  30. data/lib/generators/cucumber/install/install_base.rb +40 -53
  31. data/lib/generators/cucumber/install/install_generator.rb +10 -22
  32. data/spec/cucumber/web/tableish_spec.rb +47 -0
  33. data/spec/generators/cucumber/install/install_base_spec.rb +0 -9
  34. data/spec/spec_helper.rb +1 -4
  35. data/templates/install/step_definitions/capybara_steps.rb.erb +1 -1
  36. data/templates/install/step_definitions/web_steps_da.rb.erb +1 -1
  37. data/templates/install/step_definitions/web_steps_no.rb.erb +1 -1
  38. data/templates/install/step_definitions/web_steps_pt-BR.rb.erb +2 -1
  39. data/templates/install/support/_rails_each_run.rb.erb +16 -15
  40. data/templates/install/support/_rails_prefork.rb.erb +1 -12
  41. data/templates/install/support/capybara.rb +0 -4
  42. metadata +137 -30
  43. data/lib/cucumber/rails/action_controller.rb +0 -65
  44. data/lib/cucumber/rails/active_record.rb +0 -34
  45. data/lib/cucumber/rails/capybara_javascript_emulation.rb +0 -72
  46. data/lib/cucumber/rails/test_unit.rb +0 -7
  47. data/spec/spec.opts +0 -2
@@ -1,65 +0,0 @@
1
- if Rails.version.to_f >= 3.0
2
- module ActionController #:nodoc:
3
- module AllowRescueException
4
- extend ActiveSupport::Concern
5
- include ActiveSupport::Rescuable
6
-
7
- private
8
- def process_action(*args)
9
- if ActionController::Base.allow_rescue
10
- super
11
- else
12
- begin
13
- super
14
- rescue Exception => exception
15
- raise(exception)
16
- end
17
- end
18
- end
19
- end
20
- end
21
-
22
- ActionController::Base.class_eval do
23
- cattr_accessor :allow_rescue
24
- include ActionController::AllowRescueException
25
- end
26
- else
27
- ActionController::Base.class_eval do
28
- cattr_accessor :allow_rescue
29
-
30
- alias_method :rescue_action_without_bypass, :rescue_action
31
-
32
- def rescue_action(exception)
33
- if ActionController::Base.allow_rescue
34
- rescue_action_without_bypass(exception)
35
- else
36
- raise exception
37
- end
38
- end
39
- end
40
- end
41
-
42
- begin
43
- ActionController::Failsafe.class_eval do
44
- alias_method :failsafe_response_without_bypass, :failsafe_response
45
-
46
- def failsafe_response(exception)
47
- raise exception
48
- end
49
- end
50
- rescue NameError # Failsafe was introduced in Rails 2.3.2
51
- ActionController::Dispatcher.class_eval do
52
- def self.failsafe_response(output, status, exception = nil)
53
- raise exception
54
- end
55
- end
56
- end
57
-
58
- Before('@allow-rescue') do
59
- @__orig_allow_rescue = ActionController::Base.allow_rescue
60
- ActionController::Base.allow_rescue = true
61
- end
62
-
63
- After('@allow-rescue') do
64
- ActionController::Base.allow_rescue = @__orig_allow_rescue
65
- end
@@ -1,34 +0,0 @@
1
- if defined?(ActiveRecord::Base)
2
- Before do
3
- $__cucumber_global_use_txn = !!Cucumber::Rails::World.use_transactional_fixtures if $__cucumber_global_use_txn.nil?
4
- end
5
-
6
- Before('~@no-txn', '~@selenium', '~@culerity', '~@celerity', '~@javascript') do
7
- Cucumber::Rails::World.use_transactional_fixtures = $__cucumber_global_use_txn
8
- end
9
-
10
- Before('@no-txn,@selenium,@culerity,@celerity,@javascript') do
11
- Cucumber::Rails::World.use_transactional_fixtures = false
12
- end
13
-
14
- Before do
15
- if Cucumber::Rails::World.use_transactional_fixtures
16
- run_callbacks :setup if respond_to?(:run_callbacks)
17
- else
18
- DatabaseCleaner.start
19
- end
20
- ActionMailer::Base.deliveries = [] if defined?(ActionMailer::Base)
21
- end
22
-
23
- After do
24
- if Cucumber::Rails::World.use_transactional_fixtures
25
- run_callbacks :teardown if respond_to?(:run_callbacks)
26
- else
27
- DatabaseCleaner.clean
28
- end
29
- end
30
- else
31
- module Cucumber::Rails
32
- def World.fixture_table_names; []; end # Workaround for projects that don't use ActiveRecord
33
- end
34
- end
@@ -1,72 +0,0 @@
1
- module Cucumber
2
- module Rails
3
- module CapybaraJavascriptEmulation
4
- def self.included(base)
5
- base.class_eval do
6
- alias_method :click_without_javascript_emulation, :click
7
- alias_method :click, :click_with_javascript_emulation
8
- end
9
- end
10
-
11
- def click_with_javascript_emulation
12
- if link_with_non_get_http_method?
13
- Capybara::Driver::RackTest::Form.new(driver, js_form(self[:href], emulated_method)).submit(self)
14
- else
15
- click_without_javascript_emulation
16
- end
17
- end
18
-
19
- private
20
-
21
- def js_form(action, emulated_method, method = 'POST')
22
- js_form = node.document.create_element('form')
23
- js_form['action'] = action
24
- js_form['method'] = method
25
-
26
- if emulated_method and emulated_method.downcase != method.downcase
27
- input = node.document.create_element('input')
28
- input['type'] = 'hidden'
29
- input['name'] = '_method'
30
- input['value'] = emulated_method
31
- js_form.add_child(input)
32
- end
33
-
34
- js_form
35
- end
36
-
37
- def link_with_non_get_http_method?
38
- if ::Rails.version.to_f >= 3.0
39
- tag_name == 'a' && node['data-method'] && node['data-method'] =~ /(?:delete|put|post)/
40
- else
41
- tag_name == 'a' && node['onclick'] && node['onclick'] =~ /var f = document\.createElement\('form'\); f\.style\.display = 'none';/
42
- end
43
- end
44
-
45
- def emulated_method
46
- if ::Rails.version.to_f >= 3.0
47
- node['data-method']
48
- else
49
- node['onclick'][/m\.setAttribute\('value', '([^']*)'\)/, 1]
50
- end
51
- end
52
- end
53
- end
54
- end
55
-
56
- class Capybara::Driver::RackTest::Node
57
- include Cucumber::Rails::CapybaraJavascriptEmulation
58
- end
59
-
60
- Before('~@no-js-emulation') do
61
- # Enable javascript emulation
62
- Capybara::Driver::RackTest::Node.class_eval do
63
- alias_method :click, :click_with_javascript_emulation
64
- end
65
- end
66
-
67
- Before('@no-js-emulation') do
68
- # Disable javascript emulation
69
- Capybara::Driver::RackTest::Node.class_eval do
70
- alias_method :click, :click_without_javascript_emulation
71
- end
72
- end
@@ -1,7 +0,0 @@
1
- # This is fishy. Try to get rid of it....
2
- begin
3
- require 'test/unit/testresult'
4
- # So that Test::Unit doesn't launch at the end - makes it think it has already been run.
5
- Test::Unit.run = true if Test::Unit.respond_to?(:run=)
6
- rescue LoadError => ignore
7
- end
@@ -1,2 +0,0 @@
1
- --format progress
2
- --colour