Sha256: a41ee450c47f0e2e6753ce5469d7e3ff87aa43b723b9af6209b0d1cfb3040129

Contents?: true

Size: 1.36 KB

Versions: 5

Compression:

Stored size: 1.36 KB

Contents

module Apartment
  module Spec
    module Setup

      def self.included(base)
        base.instance_eval do
          let(:config){ database_config }

          let(:db1){ Apartment::Test.next_db }
          let(:db2){ Apartment::Test.next_db }
          let(:connection){ ActiveRecord::Base.connection }

          # This around ensures that we run these hooks before and after
          # any before/after hooks defined in individual tests
          # Otherwise these actually get run after test defined hooks
          around(:each) do |example|
            # before
            Apartment::Tenant.reload!(config)
            ActiveRecord::Base.establish_connection config

            example.run

            # after
            Rails.configuration.database_configuration = {}
            ActiveRecord::Base.clear_all_connections!

            Apartment.excluded_models.each do |model|
              klass = model.constantize
              
              Apartment.connection_class.remove_connection(klass)
              klass.clear_all_connections!
              klass.reset_table_name
            end

            Apartment.reset
            Apartment::Tenant.reload!
          end
        end
      end

      def database_config
        db = example.metadata.fetch(:database, :postgresql)
        Apartment::Test.config['connections'][db.to_s].symbolize_keys
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
apartment-0.26.1 spec/support/setup.rb
apartment-0.26.0 spec/support/setup.rb
apartment-0.25.2 spec/support/setup.rb
apartment-0.25.1 spec/support/setup.rb
apartment-0.25.0 spec/support/setup.rb