|
|
|
@ -6,6 +6,7 @@ require File.expand_path("../config/environment", __dir__)
|
|
|
|
|
abort("The Rails environment is running in production mode!") if Rails.env.production? |
|
|
|
|
require "rspec/rails" |
|
|
|
|
require "capybara/rspec" |
|
|
|
|
require 'database_cleaner/active_record' |
|
|
|
|
|
|
|
|
|
# Comment to run `js: true specs` with visible browser interaction |
|
|
|
|
Capybara.javascript_driver = :selenium_headless |
|
|
|
@ -42,7 +43,48 @@ RSpec.configure do |config|
|
|
|
|
|
# If you're not using ActiveRecord, or you'd prefer not to run each of your |
|
|
|
|
# examples within a transaction, remove the following line or assign false |
|
|
|
|
# instead of true. |
|
|
|
|
config.use_transactional_fixtures = true |
|
|
|
|
# config.use_transactional_fixtures = true |
|
|
|
|
|
|
|
|
|
config.before(:suite) do |
|
|
|
|
if config.use_transactional_fixtures? |
|
|
|
|
raise(<<-MSG) |
|
|
|
|
Delete line `config.use_transactional_fixtures = true` from rails_helper.rb |
|
|
|
|
(or set it to false) to prevent uncommitted transactions being used in |
|
|
|
|
JavaScript-dependent specs. |
|
|
|
|
|
|
|
|
|
During testing, the app-under-test that the browser driver connects to |
|
|
|
|
uses a different database connection to the database connection used by |
|
|
|
|
the spec. The app's database connection would not be able to access |
|
|
|
|
uncommitted transaction data setup over the spec's database connection. |
|
|
|
|
MSG |
|
|
|
|
end |
|
|
|
|
DatabaseCleaner.clean_with(:truncation) |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
config.before(:each) do |
|
|
|
|
DatabaseCleaner.strategy = :transaction |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
config.before(:each, type: :feature) do |
|
|
|
|
# :rack_test driver's Rack app under test shares database connection |
|
|
|
|
# with the specs, so continue to use transaction strategy for speed. |
|
|
|
|
driver_shares_db_connection_with_specs = Capybara.current_driver == :rack_test |
|
|
|
|
|
|
|
|
|
unless driver_shares_db_connection_with_specs |
|
|
|
|
# Driver is probably for an external browser with an app |
|
|
|
|
# under test that does *not* share a database connection with the |
|
|
|
|
# specs, so use truncation strategy. |
|
|
|
|
DatabaseCleaner.strategy = :truncation |
|
|
|
|
end |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
config.before(:each) do |
|
|
|
|
DatabaseCleaner.start |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
config.append_after(:each) do |
|
|
|
|
DatabaseCleaner.clean |
|
|
|
|
end |
|
|
|
|
|
|
|
|
|
# You can uncomment this line to turn off ActiveRecord support entirely. |
|
|
|
|
# config.use_active_record = false |
|
|
|
|