53 lines
1.5 KiB
Ruby
53 lines
1.5 KiB
Ruby
# 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
|