Sha256: f8a2a3bfe36b929e3b3f299413c66f912692d23352faf813f708c35f5d048620

Contents?: true

Size: 785 Bytes

Versions: 2

Compression:

Stored size: 785 Bytes

Contents

module AktionTest
  module Support
    module ClassBuilder
      def self.included(example_group)
        example_group.class_eval do
          after do
            teardown_defined_constants
          end
        end
      end

      def define_class(class_name, base = Object, scope = Object, &block)
        class_name = class_name.to_s.camelize

        Class.new(base).tap do |constant_class|
          scope.const_set(class_name, constant_class)
          constant_class.unloadable
          constant_class.class_eval(&block) if block_given?
          constant_class.reset_column_information if constant_class.respond_to? :reset_column_information
        end
      end

      def teardown_defined_constants
        ActiveSupport::Dependencies.clear
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
aktion_test-0.3.1 lib/aktion_test/support/class_builder.rb
aktion_test-0.3.0 lib/aktion_test/support/class_builder.rb