45 lines
1.4 KiB
Ruby
45 lines
1.4 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative 'db_cleaner'
|
|
|
|
RSpec.configure do |config|
|
|
include DbCleaner
|
|
|
|
# Ensure the database is empty at the start of the suite run with :deletion strategy
|
|
# neither the sequence is reset nor the tables are vacuum, but this provides
|
|
# better I/O performance on machines with slower storage
|
|
config.before(:suite) do
|
|
setup_database_cleaner
|
|
DatabaseCleaner.clean_with(:deletion)
|
|
end
|
|
|
|
config.append_after(:context, :migration) do
|
|
delete_from_all_tables!(except: ['work_item_types'])
|
|
|
|
# Postgres maximum number of columns in a table is 1600 (https://github.com/postgres/postgres/blob/de41869b64d57160f58852eab20a27f248188135/src/include/access/htup_details.h#L23-L47).
|
|
# We drop and recreate the database if any table has more than 1200 columns, just to be safe.
|
|
if any_connection_class_with_more_than_allowed_columns?
|
|
recreate_all_databases!
|
|
end
|
|
end
|
|
|
|
config.around(:each, :delete) do |example|
|
|
self.class.use_transactional_tests = false
|
|
|
|
example.run
|
|
|
|
delete_from_all_tables!(except: deletion_except_tables)
|
|
|
|
self.class.use_transactional_tests = true
|
|
end
|
|
|
|
config.around(:each, :migration) do |example|
|
|
self.class.use_transactional_tests = false
|
|
|
|
example.run
|
|
|
|
delete_from_all_tables!(except: ['work_item_types'])
|
|
|
|
self.class.use_transactional_tests = true
|
|
end
|
|
end
|