Remove unused transactional fixtures config

We had `use_transactional_fixtures` enabled but no fixtures where
defined in spec/fixtures. This prevented Capybara tests with javascript
to work. This is explained in detail in
https://github.com/DatabaseCleaner/database_cleaner#rspec-with-capybara-example.
This commit is contained in:
Pau Perez
2018-03-15 21:55:37 +01:00
committed by Jorge Morante
parent 631f416df3
commit e60ceb8e68
+34 -16
View File
@@ -52,14 +52,6 @@ RSpec.configure do |config|
# config.mock_with :flexmock
# config.mock_with :rr
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
config.fixture_path = "#{::Rails.root}/spec/fixtures"
# 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
# If true, the base class of anonymous controllers will be inferred
# automatically. This will be the default behavior in future versions of
# rspec-rails.
@@ -76,25 +68,51 @@ RSpec.configure do |config|
config.include Features::SessionHelpers, type: :feature
# Database cleaner configuration
config.before :suite do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with :truncation
# Create terms and conditions
# Create terms and conditions
config.before do
Document.create(label: "t&c") do |doc|
doc.title = "Terms and Conditions"
doc.content = "blah blah blah"
end
end
# Database cleaner configuration
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.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
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
if !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.after(:each) do
config.append_after(:each) do
DatabaseCleaner.clean
end