Skip to content
Extraits de code Groupes Projets
env.rb 4,01 Kio
# IMPORTANT: This file is generated by cucumber-rails - edit at your own peril.
# It is recommended to regenerate this file in the future when you upgrade to a
# newer version of cucumber-rails. Consider adding your own code to a new file
# instead of editing this one. Cucumber will automatically load all features/**/*.rb
# files.

ENV["RAILS_ENV"] ||= "test"
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment') unless defined?(Rails)

require 'cucumber/formatter/unicode' # Remove this line if you don't want Cucumber Unicode support
require 'cucumber/rails/rspec'
require 'cucumber/rails/world'
require 'cucumber/web/tableish'

require 'capybara/rails'
require 'capybara/cucumber'
require 'capybara/session'
require 'cucumber/rails/capybara_javascript_emulation' # Lets you click links with onclick javascript handlers without using @culerity or @javascript
# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
# order to ease the transition to Capybara we set the default here. If you'd
# prefer to use XPath just remove this line and adjust any selectors in your
# steps to use the XPath syntax.
Capybara.default_selector = :css

# If you set this to false, any error raised from within your app will bubble
# up to your step definition and out to cucumber unless you catch it somewhere
# on the way. You can make Rails rescue errors and render error pages on a
# per-scenario basis by tagging a scenario or feature with the @allow-rescue tag.
#
# If you set this to true, Rails will rescue all errors and render error
# pages, more or less in the same way your application would behave in the
# default production environment. It's not recommended to do this for all
# of your scenarios, as this makes it hard to discover errors in your application.
ActionController::Base.allow_rescue = false

require 'database_cleaner'
require 'database_cleaner/cucumber'
DatabaseCleaner.strategy = :truncation
DatabaseCleaner.orm = "active_record"
Cucumber::Rails::World.use_transactional_fixtures = false

require File.join(File.dirname(__FILE__), "database_cleaner_patches")
require File.join(File.dirname(__FILE__), "integration_sessions_controller")

require File.join(File.dirname(__FILE__), "..", "..", "spec", "support", "fake_redis")
require File.join(File.dirname(__FILE__), "..", "..", "spec", "helper_methods")
require File.join(File.dirname(__FILE__), "..", "..", "spec", "support","no_id_on_object")
require File.join(File.dirname(__FILE__), "..", "..", "spec", "support","user_methods")
include HelperMethods
Before do
  DatabaseCleaner.clean
  Devise.mailer.deliveries = []
end

After do
  # Rollback any images created during the features.
  `rm -rf #{Rails.root}/tmp/uploads/*`
  `rm -rf #{Rails.root}/public/uploads/images/*-test.png`
  `rm -rf #{Rails.root}/public/uploads/tmp/`
end

silence_warnings do
  SERVICES['facebook'] = {'app_id' => :fake, 'app_secret' => 'sdoigjosdfijg'}
  AppConfig[:configured_services] << 'facebook'
end

require File.join(File.dirname(__FILE__), "..", "..", "spec", "support", "fake_resque")
module Resque
  def enqueue(klass, *args)
    klass.send(:perform, *args)
  end
end

Before('@localserver') do
  TestServerFixture.start_if_needed
  CapybaraSettings.instance.save
  Capybara.current_driver = :selenium
  Capybara.run_server = false
end

After('@localserver') do
  CapybaraSettings.instance.restore
end

class Capybara::Driver::Selenium < Capybara::Driver::Base
  class Node < Capybara::Node
    def [](name)
      node.attribute(name.to_s)
    rescue Selenium::WebDriver::Error::WebDriverError
      nil
    end

    def select(option)
      option_node = node.find_element(:xpath, ".//option[normalize-space(text())=#{Capybara::XPath.escape(option)}]") || node.find_element(:xpath, ".//option[contains(.,#{Capybara::XPath.escape(option)})]")
      option_node.click
    rescue
      options = node.find_elements(:xpath, "//option").map { |o| "'#{o.text}'" }.join(', ')
      raise Capybara::OptionNotFound, "No such option '#{option}' in this select box. Available options: #{options}"
    end
  end
end