Sha256: 7ed793e3b414ee855bfdd772495c38ddea460d4545b358df6a9bc82cd0a48b80

Contents?: true

Size: 1.34 KB

Versions: 6

Compression:

Stored size: 1.34 KB

Contents

module MiniTestSpecRails
  module DSL

    RAILS_TEST_CASES = []

    def self.included(klass)
      klass.extend ClassMethods
      remove_method :test if method_defined?(:test)
    end

    module ClassMethods

      def describe(*args, &block)
        stack = Minitest::Spec.describe_stack
        stack.push self if stack.empty?
        super(*args) { class_eval(&block) }
        stack.pop if stack.length == 1
      end

      def before(type = nil, &block)
        setup { self.instance_eval(&block) }
      end

      def after(type = nil, &block)
        teardown { self.instance_eval(&block) }
      end

      def test(name, &block)
        it { self.instance_eval(&block) }
      end

      def rails_test_cases
        RAILS_TEST_CASES
      end

      def register_rails_test_case(test_case)
        return if RAILS_TEST_CASES.include?(test_case)
        RAILS_TEST_CASES.unshift(test_case)
      end

      def describing_class
        ancestors.detect { |a| Class === a && rails_test_cases.include?(a.superclass) }
      end

      def described_class
        begin
          describing_class.name.gsub(/Test$/, '').constantize
        rescue NameError
          nil
        end
      end
      
    end

    def describing_class
      self.class.describing_class
    end

    def described_class
      self.class.described_class
    end
    
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
minitest-spec-rails-4.7.11 lib/minitest-spec-rails/dsl.rb
minitest-spec-rails-4.7.10 lib/minitest-spec-rails/dsl.rb
minitest-spec-rails-4.7.9 lib/minitest-spec-rails/dsl.rb
minitest-spec-rails-4.7.8 lib/minitest-spec-rails/dsl.rb
minitest-spec-rails-4.7.7 lib/minitest-spec-rails/dsl.rb
minitest-spec-rails-4.7.6 lib/minitest-spec-rails/dsl.rb