debian-mirror-gitlab/spec/support/database_cleaner.rb

46 lines
1.4 KiB
Ruby
Raw Normal View History

2019-07-07 11:18:12 +05:30
# frozen_string_literal: true
require_relative 'db_cleaner'
RSpec.configure do |config|
include DbCleaner
2021-10-27 15:23:28 +05:30
# 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
2019-07-07 11:18:12 +05:30
config.before(:suite) do
setup_database_cleaner
2021-10-27 15:23:28 +05:30
DatabaseCleaner.clean_with(:deletion)
2019-07-07 11:18:12 +05:30
end
2019-12-26 22:10:19 +05:30
config.append_after(:context, :migration) do
2021-11-11 11:23:49 +05:30
delete_from_all_tables!(except: ['work_item_types'])
2019-12-26 22:10:19 +05:30
# 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.
2021-11-18 22:05:49 +05:30
if any_connection_class_with_more_than_allowed_columns?
recreate_all_databases!
2019-12-26 22:10:19 +05:30
end
end
2019-09-30 21:07:59 +05:30
config.around(:each, :delete) do |example|
self.class.use_transactional_tests = false
2019-07-07 11:18:12 +05:30
2019-09-30 21:07:59 +05:30
example.run
2019-07-07 11:18:12 +05:30
2019-09-30 21:07:59 +05:30
delete_from_all_tables!(except: deletion_except_tables)
2021-10-27 15:23:28 +05:30
self.class.use_transactional_tests = true
2019-07-07 11:18:12 +05:30
end
2019-09-30 21:07:59 +05:30
config.around(:each, :migration) do |example|
self.class.use_transactional_tests = false
2019-07-07 11:18:12 +05:30
2019-09-30 21:07:59 +05:30
example.run
2019-07-07 11:18:12 +05:30
2021-11-11 11:23:49 +05:30
delete_from_all_tables!(except: ['work_item_types'])
2021-10-27 15:23:28 +05:30
self.class.use_transactional_tests = true
2019-07-07 11:18:12 +05:30
end
end