class Petitest::Test

Constants

TEST_METHOD_NAME_PREFIX

Attributes

current_description[RW]
description[W]
metadata[W]

Public Class Methods

children() click to toggle source

@return [Array<Class>]

# File lib/petitest/test.rb, line 13
def children
  @children ||= []
end
description() click to toggle source

@return [String]

# File lib/petitest/test.rb, line 18
def description
  @description ||= name
end
description_by_method_name() click to toggle source

@return [Hash{Symbol => String}]

# File lib/petitest/test.rb, line 23
def description_by_method_name
  @description_by_method_name ||= {}
end
generate_test_group() click to toggle source

@return [Petitest::TestGroup]

# File lib/petitest/test.rb, line 28
def generate_test_group
  ::Petitest::TestGroup.new(test_class: self)
end
inherited(child) click to toggle source

@note Override

Calls superclass method
# File lib/petitest/test.rb, line 33
def inherited(child)
  super
  children << child
end
metadata() click to toggle source

@return [Hash{Symbol => Object}]

# File lib/petitest/test.rb, line 39
def metadata
  @metadata ||= {}
end
method_added(method_name) click to toggle source

@note Override

Calls superclass method
# File lib/petitest/test.rb, line 44
def method_added(method_name)
  super
  if current_description && check_if_test_method_name(method_name)
    description_by_method_name[method_name] = current_description
    clear_current_description
  end
end
new( test_group:, test_method_name: ) click to toggle source

@param test_group [Petitest::TestGroup] @param test_method_name [Symbol]

# File lib/petitest/test.rb, line 92
def initialize(
  test_group:,
  test_method_name:
)
  @test_group = test_group
  @test_method_name = test_method_name
end
test_ancestors() click to toggle source

@return [Array<Class>]

# File lib/petitest/test.rb, line 53
def test_ancestors
  @test_ancestors ||= ancestors.each_with_object([]) do |klass, classes|
    if klass == ::Petitest::Test
      break classes
    end
    if klass.is_a?(::Class)
      classes << klass
    end
  end
end
test_method_names() click to toggle source

@return [Array<Symbol>]

# File lib/petitest/test.rb, line 65
def test_method_names
  public_instance_methods.select do |method_name|
    check_if_test_method_name(method_name)
  end
end
undefine_test_methods() click to toggle source
# File lib/petitest/test.rb, line 71
def undefine_test_methods
  test_method_names.each do |method_name|
    undef_method(method_name)
  end
end

Private Class Methods

check_if_test_method_name(method_name) click to toggle source

@param method_name [Symbol] @return [Boolean]

# File lib/petitest/test.rb, line 81
def check_if_test_method_name(method_name)
  method_name.to_s.start_with?(TEST_METHOD_NAME_PREFIX)
end
clear_current_description() click to toggle source
# File lib/petitest/test.rb, line 85
def clear_current_description
  self.current_description = nil
end

Public Instance Methods

assert(actual_or_message = nil, message = nil, &block) click to toggle source

@param actual_or_message [Object] @param message [String, nil]

# File lib/petitest/test.rb, line 102
def assert(actual_or_message = nil, message = nil, &block)
  if block
    message = actual_or_message
    check(message || "Expected given block to return truthy", &block)
  else
    actual = actual_or_message
    check(message || "Expected #{actual.inspect} to be truthy") do
      actual
    end
  end
end
runner() click to toggle source

@return [Petitest::TestRunner]

# File lib/petitest/test.rb, line 120
def runner
  @runner ||= Petitest::TestRunner.new(
    test: self,
    test_group: @test_group,
    test_method_name: @test_method_name,
  )
end
skip(message = nil) click to toggle source

@param message [String, nil]

# File lib/petitest/test.rb, line 115
def skip(message = nil)
  raise ::Petitest::AssertionSkipError.new(message)
end

Private Instance Methods

check(message, &block) click to toggle source

@param message [String, nil]

# File lib/petitest/test.rb, line 131
def check(message, &block)
  unless block.call
    raise ::Petitest::AssertionFailureError.new(message)
  end
end