aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/database_selector_test.rb
diff options
context:
space:
mode:
authorEileen M. Uchitelle <eileencodes@users.noreply.github.com>2019-08-02 13:03:03 -0400
committerGitHub <noreply@github.com>2019-08-02 13:03:03 -0400
commitac7c9381f02446bb4e1681ad66cd69d8abe23594 (patch)
tree4a12db093039c6d9546d37668a53996e80e54e61 /activerecord/test/cases/database_selector_test.rb
parentf3c68c59ed57302ca54f4dfad0e91dbff426962d (diff)
parentf2de448106ca3bb947dc88f96ca7d81d37b5be9a (diff)
downloadrails-ac7c9381f02446bb4e1681ad66cd69d8abe23594.tar.gz
rails-ac7c9381f02446bb4e1681ad66cd69d8abe23594.tar.bz2
rails-ac7c9381f02446bb4e1681ad66cd69d8abe23594.zip
Merge pull request #36843 from eileencodes/add-ability-to-unset-preventing-writes
Add ability to unset preventing writes
Diffstat (limited to 'activerecord/test/cases/database_selector_test.rb')
-rw-r--r--activerecord/test/cases/database_selector_test.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/activerecord/test/cases/database_selector_test.rb b/activerecord/test/cases/database_selector_test.rb
index fd02d2acb4..340151e6db 100644
--- a/activerecord/test/cases/database_selector_test.rb
+++ b/activerecord/test/cases/database_selector_test.rb
@@ -123,6 +123,40 @@ module ActiveRecord
assert read
end
+ def test_preventing_writes_turns_off_for_primary_write
+ resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver.new(@session, delay: 5.seconds)
+
+ # Session should start empty
+ assert_nil @session_store[:last_write]
+
+ called = false
+ resolver.write do
+ assert ActiveRecord::Base.connected_to?(role: :writing)
+ called = true
+ end
+ assert called
+
+ # and be populated by the last write time
+ assert @session_store[:last_write]
+
+ read = false
+ write = false
+ resolver.read do
+ assert ActiveRecord::Base.connected_to?(role: :writing)
+ assert ActiveRecord::Base.connection_handler.prevent_writes
+ read = true
+
+ resolver.write do
+ assert ActiveRecord::Base.connected_to?(role: :writing)
+ assert_not ActiveRecord::Base.connection_handler.prevent_writes
+ write = true
+ end
+ end
+
+ assert write
+ assert read
+ end
+
def test_read_from_replica_with_no_delay
resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver.new(@session, delay: 0.seconds)