# frozen_string_literal: true require 'bundler' Bundler.require require 'simplecov' SimpleCov.start do add_filter '/spec/' end require 'active_record' require 'database_cleaner' require 'dotenv/load' require 'pg_searchable_regex' require 'pry' # requiring support files Dir[__dir__ + '/support/**/*.rb'].each { |f| require f } RSpec.configure do |config| env = Dotenv.parse('.env.test', '.env.test.local') db_config = { adapter: 'postgresql', host: ENV['DATABASE_HOST'] || env['DATABASE_HOST'], username: ENV['DATABASE_USERNAME'] || env['DATABASE_USERNAME'], password: ENV['DATABASE_PASSWORD'] || env['DATABASE_PASSWORD'], database: ENV['DATABASE_NAME'] || env['DATABASE_NAME'], pool: ENV['DATABASE_POOL'] || env['DATABASE_POOL'], port: ENV['DATABASE_PORT'] || env['DATABASE_PORT'] } db_config_admin = db_config.merge(database: 'postgres', schema_search_path: 'public') config.before(:suite) do ActiveRecord::Base.establish_connection(db_config_admin) ActiveRecord::Base.connection.create_database(db_config[:database]) ActiveRecord::Base.establish_connection(db_config) ActiveRecord::Tasks::DatabaseTasks.load_schema_for(db_config, :ruby, "#{__dir__}/schema.rb") DatabaseCleaner.strategy = :transaction DatabaseCleaner.clean_with(:truncation) end config.around do |example| DatabaseCleaner.cleaning do example.run end end config.after(:suite) do ActiveRecord::Base.establish_connection(db_config_admin) ActiveRecord::Base.connection.drop_database(db_config[:database]) end end