forked from bradrobertson/apartment
-
Notifications
You must be signed in to change notification settings - Fork 0
/
requirements.rb
45 lines (36 loc) · 1.15 KB
/
requirements.rb
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
42
43
44
45
module Apartment
module Spec
#
# Define the interface methods required to
# use an adapter shared example
#
#
module AdapterRequirements
extend ActiveSupport::Concern
included do
let(:db1){ Apartment::Test.next_db }
let(:db2){ Apartment::Test.next_db }
let(:connection){ ActiveRecord::Base.connection }
before do
ActiveRecord::Base.establish_connection config
subject.create(db1)
subject.create(db2)
end
after do
# Reset before dropping (can't drop a db you're connected to)
subject.reset
# sometimes we manually drop these schemas in testing, don't care if we can't drop, hence rescue
subject.drop(db1) rescue true
subject.drop(db2) rescue true
ActiveRecord::Base.clear_all_connections!
Apartment::Database.reload!
end
end
%w{subject config database_names default_database}.each do |method|
define_method method do
raise "You must define a `#{method}` method in your host group"
end unless defined?(method)
end
end
end
end