Sha256: 616f8f5b8e1d6697554c05b9d8182dbbfcd7c848984ce86902efaa460ef2b717

Contents?: true

Size: 1.63 KB

Versions: 78

Compression:

Stored size: 1.63 KB

Contents

module ActiveRecord
  module Testing
    module RepairHelper
      def self.included(base)
        base.class_eval do
          extend ClassMethods
        end
      end

      module Toolbox
        def self.record_validations(*model_classes)
          model_classes.inject({}) do |repair, klass|
            repair[klass] ||= {}
            [:validate, :validate_on_create, :validate_on_update].each do |callback|
              the_callback = klass.instance_variable_get("@#{callback.to_s}_callbacks")
              repair[klass][callback] = (the_callback.nil? ? nil : the_callback.dup)
            end
            repair
          end
        end

        def self.reset_validations(recorded)
          recorded.each do |klass, repairs|
            [:validate, :validate_on_create, :validate_on_update].each do |callback|
              klass.instance_variable_set("@#{callback.to_s}_callbacks", repairs[callback])
            end
          end
        end
      end

      module ClassMethods
        def repair_validations(*model_classes)
          setup do
            @validation_repairs = ActiveRecord::Testing::RepairHelper::Toolbox.record_validations(*model_classes)
          end
          teardown do
            ActiveRecord::Testing::RepairHelper::Toolbox.reset_validations(@validation_repairs)
          end
        end
      end

      def repair_validations(*model_classes, &block)
        validation_repairs = ActiveRecord::Testing::RepairHelper::Toolbox.record_validations(*model_classes)
        return block.call
      ensure
        ActiveRecord::Testing::RepairHelper::Toolbox.reset_validations(validation_repairs)
      end
    end
  end
end

Version data entries

78 entries across 77 versions & 14 rubygems

Version Path
activerecord-2.3.18 test/cases/repair_helper.rb
activerecord_csi-2.3.5.p8 test/cases/repair_helper.rb
activerecord-2.3.17 test/cases/repair_helper.rb
activerecord_csi-2.3.5.p7 test/cases/repair_helper.rb
activerecord_csi-2.3.5.p6 test/cases/repair_helper.rb
activerecord-2.3.16 test/cases/repair_helper.rb
activerecord-2.3.15 test/cases/repair_helper.rb
radiant-1.0.0 ruby-debug/ruby/1.8/gems/activerecord-2.3.14/test/cases/repair_helper.rb
vanity-1.7.1 vendor/ruby/1.9.1/gems/activerecord-2.3.12/test/cases/repair_helper.rb
activerecord-2.3.14 test/cases/repair_helper.rb
kajam-1.0.3.rc2 vendor/rails/activerecord/test/cases/repair_helper.rb
activerecord-2.3.12 test/cases/repair_helper.rb
radiant-1.0.0.rc2 vendor/rails/activerecord/test/cases/repair_helper.rb
radiant-1.0.0.rc1 vendor/rails/activerecord/test/cases/repair_helper.rb
webroar-0.5.0 src/admin_panel/vendor/rails/activerecord/test/cases/repair_helper.rb
activerecord-2.3.11 test/cases/repair_helper.rb
radiantcms-couchrest_model-0.2.4 vendor/rails/activerecord/test/cases/repair_helper.rb
ensured_schema-0.1.6 test/cases/repair_helper.rb
ensured_schema-0.1.5 test/cases/repair_helper.rb
ensured_schema-0.1.4 test/cases/repair_helper.rb