class Coverfield::Source::Class

Represents a class within a source file

Attributes

coverage[R]
hints[R]
methods[R]
module_name[R]
name[R]
node[R]
source_file[R]

Public Class Methods

new(class_name, module_name, node, source_file) click to toggle source

Constructor

# File lib/coverfield/source/class.rb, line 8
       def initialize(class_name, module_name, node, source_file)
  @name = class_name
  @module_name = module_name
  @node = node
  @methods = []
  @source_file = source_file
  @coverage = 0
  @hints = []
  find_methods
end

Public Instance Methods

calculate_coverage() click to toggle source

Calculates the coverage of that class based on the relevant methods and sets the @coverage and the @hints fields

# File lib/coverfield/source/class.rb, line 43
       def calculate_coverage
  @coverage = 0
  @hints = []
  test_file = source_file.test_file

  methods.each do |method|
    # Is the method covered?
    if test_file.cover?(full_qualified_name, method.name)
      @coverage += 1
    else
      # Should it be covered?
      if method.nocov?
        @coverage += 1
      else
        # If it should be covered, but isn't, create a hint
        method_name = "#{name}.#{method.name}".red
        @hints << "Missing test for #{method_name}"
      end
    end
  end
end
full_qualified_name() click to toggle source

Returns the full qualified name like Coverfield::Source::Class

# File lib/coverfield/source/class.rb, line 21
       def full_qualified_name
  name = @name
  name = "#{@module_name}::#{name}" unless @module_name.empty?
  name
end
method_count() click to toggle source

Returns the total amount of methods within the class

# File lib/coverfield/source/class.rb, line 36
       def method_count
  @methods.size
end
relevant_method_count() click to toggle source

Returns the amount of methods, which should be covered by tests

# File lib/coverfield/source/class.rb, line 29
       def relevant_method_count
  relevant_methods = @methods.select { |m| !m.nocov?}
  relevant_methods.size
end

Private Instance Methods

find_methods() click to toggle source

Finds all methods within the class

# File lib/coverfield/source/class.rb, line 67
        def find_methods
  node.each_node(:def) do |node|
    @methods << Coverfield::Source::Method.new(*node, self)
  end
end