forked from ManageIQ/inventory_refresh
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rakefile
41 lines (32 loc) · 1.07 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
require "bundler/gem_tasks"
require "rspec/core/rake_task"
namespace :spec do
task :db_drop do
with_connection("template1") { |conn| conn.execute("DROP DATABASE IF EXISTS #{test_database_name}") }
end
task :db_create do
with_connection("template1") { |conn| conn.execute("CREATE DATABASE #{test_database_name}") }
end
task :db_load_schema do
require "active_record"
with_connection(test_database_name) { load File.join(__dir__, %w{spec schema.rb}) }
end
desc "Setup test database"
task :setup => [:db_drop, :db_create, :db_load_schema]
def connection_spec
require 'yaml'
@connection_spec ||= YAML.load_file(File.join(__dir__, %w(config database.yml)))
end
def test_database_name
connection_spec["test"]["database"]
end
def with_connection(database_name)
require "active_record"
pool = ActiveRecord::Base.establish_connection(connection_spec["test"].merge("database" => database_name))
yield ActiveRecord::Base.connection
ensure
pool&.disconnect!
end
end
RSpec::Core::RakeTask.new(:spec)
task :default => :spec