Add coverage for `DatabaseHelper` primary/replica methods (#32642)

pull/32650/head
Matt Jankowski 2024-10-24 04:04:29 -04:00 committed by GitHub
parent 745c4f900a
commit 5c910dc82e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 61 additions and 0 deletions

View File

@ -0,0 +1,61 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe DatabaseHelper do
context 'when a replica is enabled' do
around do |example|
ClimateControl.modify REPLICA_DB_NAME: 'prod-relay-quantum-tunnel-mirror' do
example.run
end
end
before { allow(ApplicationRecord).to receive(:connected_to) }
describe '#with_read_replica' do
it 'uses the replica for connections' do
helper.with_read_replica { _x = 1 }
expect(ApplicationRecord)
.to have_received(:connected_to).with(role: :reading, prevent_writes: true)
end
end
describe '#with_primary' do
it 'uses the primary for connections' do
helper.with_primary { _x = 1 }
expect(ApplicationRecord)
.to have_received(:connected_to).with(role: :writing)
end
end
end
context 'when a replica is not enabled' do
around do |example|
ClimateControl.modify REPLICA_DB_NAME: nil do
example.run
end
end
before { allow(ApplicationRecord).to receive(:connected_to) }
describe '#with_read_replica' do
it 'does not use the replica for connections' do
helper.with_read_replica { _x = 1 }
expect(ApplicationRecord)
.to_not have_received(:connected_to).with(role: :reading, prevent_writes: true)
end
end
describe '#with_primary' do
it 'does not use the primary for connections' do
helper.with_primary { _x = 1 }
expect(ApplicationRecord)
.to_not have_received(:connected_to).with(role: :writing)
end
end
end
end