forked from mperham/data_fabric
-
Notifications
You must be signed in to change notification settings - Fork 0
/
database_test.rb
58 lines (45 loc) · 1.6 KB
/
database_test.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
46
47
48
49
50
51
52
53
54
55
56
57
58
require 'test_helper'
require 'flexmock/test_unit'
require 'erb'
class TheWholeBurrito < ActiveRecord::Base
data_fabric :prefix => 'fiveruns', :replicated => true, :shard_by => :city
end
class DatabaseTest < Test::Unit::TestCase
def setup
ActiveRecord::Base.configurations = load_database_yml
DataFabric::ConnectionProxy.shard_pools.clear
end
def test_features
DataFabric.activate_shard :city => :dallas do
assert_equal 'fiveruns_city_dallas_test_slave', TheWholeBurrito.connection.connection_name
assert_raises RuntimeError do
TheWholeBurrito.connection_pool
end
assert !TheWholeBurrito.connected?
# Should use the slave
burrito = TheWholeBurrito.find(1)
assert_match 'vr_dallas_slave', burrito.name
assert TheWholeBurrito.connected?
end
end
def test_live_burrito
DataFabric.activate_shard :city => :dallas do
assert_equal 'fiveruns_city_dallas_test_slave', TheWholeBurrito.connection.connection_name
# Should use the slave
burrito = TheWholeBurrito.find(1)
assert_match 'vr_dallas_slave', burrito.name
# Should use the master
burrito.reload
assert_match 'vr_dallas_master', burrito.name
# ...but immediately set it back to default to the slave
assert_equal 'fiveruns_city_dallas_test_slave', TheWholeBurrito.connection.connection_name
# Should use the master
TheWholeBurrito.transaction do
burrito = TheWholeBurrito.find(1)
assert_match 'vr_dallas_master', burrito.name
burrito.name = 'foo'
burrito.save!
end
end
end
end