62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# 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
 |