Sha256: d21edebed8edd091f1e2603be24848ffcf0a3adeab608dd0a5d4d5669e0293f7

Contents?: true

Size: 1.27 KB

Versions: 9

Compression:

Stored size: 1.27 KB

Contents

require 'active_support/secure_random'

#
# This module does a couple of things:
#   1.  Iterates over all tables and adds a prefix to
#       them so that the classes will be uniq for
#       the test run.
#   2.  Cleans tables' contents after each run
#   3.  Destroy tables after all
#
module MassiveRecord
  module Rspec
    module SimpleDatabaseCleaner
      extend ActiveSupport::Concern

      included do
        before(:all) { add_suffix_to_tables }
        after(:each) { delete_all_tables }
      end

      private

      def add_suffix_to_tables
        each_orm_class do |klass|
          table_name_overriden = klass.table_name_overriden
          klass.reset_table_name_configuration!

          klass.table_name = table_name_overriden
          klass.table_name_suffix = '_test'
        end
      end

      def delete_all_tables
        tables = MassiveRecord::ORM::Base.connection.tables
        each_orm_class do |klass|
          if tables.include? klass.table.name
            klass.table.all.each(&:destroy) # Don't want to use ORM, as it triggers callbacks etc..
            tables.delete(klass.table.name)
          end
        end
      end

      def each_orm_class
        MassiveRecord::ORM::Table.descendants.each { |klass| yield klass }
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
massive_record-0.2.2 lib/massive_record/spec/support/simple_database_cleaner.rb
massive_record-0.2.2.rc2 lib/massive_record/spec/support/simple_database_cleaner.rb
massive_record-0.2.2.rc1 lib/massive_record/spec/support/simple_database_cleaner.rb
massive_record-0.2.1 lib/massive_record/spec/support/simple_database_cleaner.rb
massive_record-0.2.1.rc1 lib/massive_record/spec/support/simple_database_cleaner.rb
massive_record-0.2.0 lib/massive_record/spec/support/simple_database_cleaner.rb
massive_record-0.2.0.beta2 lib/massive_record/spec/support/simple_database_cleaner.rb
massive_record-0.2.0.beta lib/massive_record/spec/support/simple_database_cleaner.rb
massive_record-0.1.1 lib/massive_record/spec/support/simple_database_cleaner.rb