Sha256: 8abe0b08b15bc5484f6b55f60e55b6f74ccb855e4e5a7e74d582b9042a158567

Contents?: true

Size: 1.12 KB

Versions: 4

Compression:

Stored size: 1.12 KB

Contents

require 'rspec/core'

module Rspec
  module Rails
    module TransactionalDatabaseSupport

      def active_record_configured?
        defined?(::ActiveRecord) && !::ActiveRecord::Base.configurations.blank?
      end

      def use_transactional_examples?
        active_record_configured? && Rspec.configuration.use_transactional_examples?
      end

      def setup_transactional_examples
        return unless use_transactional_examples?

        ::ActiveRecord::Base.connection.increment_open_transactions
        ::ActiveRecord::Base.connection.begin_db_transaction
      end

      def teardown_transactional_examples
        return unless use_transactional_examples?

        if ::ActiveRecord::Base.connection.open_transactions != 0
          ::ActiveRecord::Base.connection.rollback_db_transaction
          ::ActiveRecord::Base.connection.decrement_open_transactions
        end

        ::ActiveRecord::Base.clear_active_connections!
      end

    end
  end
end

Rspec.configure do |c|
  c.include Rspec::Rails::TransactionalDatabaseSupport
  c.before { setup_transactional_examples }
  c.after  { teardown_transactional_examples }
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rspec-rails-2.0.0.beta.8 lib/rspec/rails/transactional_database_support.rb
rspec-rails-2.0.0.beta.7 lib/rspec/rails/transactional_database_support.rb
rspec-rails-2.0.0.beta.6 lib/rspec/rails/transactional_database_support.rb
rspec-rails-2.0.0.beta.5 lib/rspec/rails/transactional_database_support.rb