jam-cloud/websocket-gateway/spec/spec_db.rb

40 lines
1.6 KiB
Ruby

class SpecDb
# TEST_DB_NAME="jam_websockets_test"
# def self.recreate_database
# conn = PG::Connection.open("dbname=postgres user=postgres password=postgres host=localhost")
# conn.exec("DROP DATABASE IF EXISTS #{TEST_DB_NAME}")
# conn.exec("CREATE DATABASE #{TEST_DB_NAME}")
# JamDb::Migrator.new.migrate(:dbname => TEST_DB_NAME, :user => "postgres", :password => "postgres", :host => "localhost")
# end
def self.reset_test_database
ENV['RAILS_ENV'] = 'test'
db_config = YAML::load(File.open('config/database.yml'), aliases: true)[ENV['RAILS_ENV']]
db_test_name = db_config["database"]
# Ensure no pooled connection still points at the DB we're about to drop.
ActiveRecord::Base.connection_pool.disconnect! if ActiveRecord::Base.connected?
# jump into the 'postgres' database, just so we have somewhere to 'land' other than our test db,
# since we are going to drop/recreate it
db_config_admin = db_config.merge({'database' => 'postgres', 'schema_search_path' => 'public'})
ActiveRecord::Base.establish_connection(db_config_admin)
ActiveRecord::Base.connection.execute(<<~SQL)
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = '#{db_test_name}'
AND pid <> pg_backend_pid()
SQL
ActiveRecord::Base.connection.execute("DROP DATABASE IF EXISTS #{db_test_name}")
ActiveRecord::Base.connection.execute("CREATE DATABASE #{db_test_name}")
end
def self.recreate_database
self.reset_test_database
JamRuby::TestSupport.migrate_database
end
end