test/replica_test.rb in replica-1.0.0 vs test/replica_test.rb in replica-1.0.1

- old
+ new

@@ -1,91 +1,114 @@ require 'helper' class ReplicaTest < ActiveRecord::TestCase - + context "without replica configuration" do - + setup do ActiveRecord::Base.configurations.delete('test_slave') ActiveRecord::Base.connection_handler.connection_pools.clear ActiveRecord::Base.establish_connection('test') end - + should "default to the master database" do Account.create! - + ActiveRecord::Base.with_slave { assert_using_master_db(Account) } Account.with_slave { assert_using_master_db(Account) } Ticket.with_slave { assert_using_master_db(Account) } end - + should "successfully execute queries" do Account.create! assert_using_master_db(Account) - + assert_equal Account.count, ActiveRecord::Base.with_slave { Account.count } assert_equal Account.count, Account.with_slave { Account.count } end - + end - + context "with replica configuration" do - + should "successfully execute queries" do assert_using_master_db(Account) Account.create! - + assert_not_equal Account.count, ActiveRecord::Base.with_slave { Account.count } assert_not_equal Account.count, Account.with_slave { Account.count } assert_equal Account.count, Ticket.with_slave { Account.count } end - + should "support model specific with_slave blocks" do - assert_using_master_db(Account) - assert_using_master_db(Ticket) - - Account.with_slave do - assert_using_slave_db(Account) - assert_using_master_db(Ticket) - end - - assert_using_master_db(Account) - assert_using_master_db(Ticket) - end - - should "support global with_slave blocks" do - assert_using_master_db(Account) - assert_using_master_db(Ticket) - - ActiveRecord::Base.with_slave do - assert_using_slave_db(Account) - assert_using_slave_db(Ticket) - end - - assert_using_master_db(Account) - assert_using_master_db(Ticket) - end - - should_eventually "support nested with_* blocks" do - - assert_using_master_db(Account) - assert_using_master_db(Ticket) - - ActiveRecord::Base.with_slave do - assert_using_slave_db(Account) - assert_using_slave_db(Ticket) - - Account.with_master do - assert_using_master_db(Account) - assert_using_slave_db(Ticket) - end - - assert_using_slave_db(Account) - assert_using_slave_db(Ticket) - end - - assert_using_master_db(Account) - assert_using_master_db(Ticket) - end - + assert_using_master_db(Account) + assert_using_master_db(Ticket) + + Account.with_slave do + assert_using_slave_db(Account) + assert_using_master_db(Ticket) + end + + assert_using_master_db(Account) + assert_using_master_db(Ticket) + end + + should "support global with_slave blocks" do + assert_using_master_db(Account) + assert_using_master_db(Ticket) + + ActiveRecord::Base.with_slave do + assert_using_slave_db(Account) + assert_using_slave_db(Ticket) + end + + assert_using_master_db(Account) + assert_using_master_db(Ticket) + end + + should "support conditional methods" do + assert_using_master_db(Account) + + Account.with_slave_if(true) do + assert_using_slave_db(Account) + end + + assert_using_master_db(Account) + + Account.with_slave_if(false) do + assert_using_master_db(Account) + end + + Account.with_slave_unless(true) do + assert_using_master_db(Account) + end + + Account.with_slave_unless(false) do + assert_using_slave_db(Account) + end + + end + + should_eventually "support nested with_* blocks" do + + assert_using_master_db(Account) + assert_using_master_db(Ticket) + + ActiveRecord::Base.with_slave do + assert_using_slave_db(Account) + assert_using_slave_db(Ticket) + + Account.with_master do + assert_using_master_db(Account) + assert_using_slave_db(Ticket) + end + + assert_using_slave_db(Account) + assert_using_slave_db(Ticket) + end + + assert_using_master_db(Account) + assert_using_master_db(Ticket) + end + end end