Class: Minitest::Test

Inherits:
Object
  • Object
show all
Includes:
FactoryBot::Syntax::Methods, FactoryGirl::Syntax::Methods, Utils::Assertions
Defined in:
lib/minitest/utils/extension.rb,
lib/minitest/utils/setup/factory_bot.rb,
lib/minitest/utils/setup/factory_girl.rb,
lib/minitest/utils/setup/database_cleaner.rb,
lib/minitest/utils/capybara/screenshot_on_failures.rb,
lib/minitest/utils/setup/webmock.rb

Class Method Summary collapse

Methods included from Utils::Assertions

#assert, #refute

Class Method Details

.let(name, &block) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/minitest/utils/extension.rb', line 60

def self.let(name, &block)
  target = begin
    instance_method(name)
  rescue StandardError
    nil
  end

  message = "Cannot define let(:#{name});"

  if name.to_s.start_with?("test")
    raise ArgumentError, "#{message} method cannot begin with 'test'."
  end

  if target
    raise ArgumentError,
          "#{message} method already defined by #{target.owner}."
  end

  define_method(name) do
    @_memoized ||= {}
    @_memoized.fetch(name) {|k| @_memoized[k] = instance_eval(&block) }
  end
end

.setup(&block) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/minitest/utils/extension.rb', line 36

def self.setup(&block)
  mod = Module.new
  mod.module_eval do
    define_method :setup do
      super()
      instance_eval(&block)
    end
  end

  include mod
end

.teardown(&block) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
# File 'lib/minitest/utils/extension.rb', line 48

def self.teardown(&block)
  mod = Module.new
  mod.module_eval do
    define_method :teardown do
      super()
      instance_eval(&block)
    end
  end

  include mod
end

.test(name, &block) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/minitest/utils/extension.rb', line 21

def self.test(name, &block)
  test_name = "test_#{name.gsub(/\s+/, '_')}".to_sym
  defined = method_defined? test_name

  raise "#{test_name} is already defined in #{self}" if defined

  if block_given?
    define_method(test_name, &block)
  else
    define_method(test_name) do
      flunk "No implementation provided for #{name}"
    end
  end
end