Class: MonkeyLens::Diff::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/monkey_lens/diff.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(baseline:, current:, changes:) ⇒ Result

Returns a new instance of Result.



8
9
10
11
12
# File 'lib/monkey_lens/diff.rb', line 8

def initialize(baseline:, current:, changes:)
  @baseline = baseline
  @current = current
  @changes = changes.sort_by { |change| [-change.level, change.target, change.method_id.to_s, change.type] }
end

Instance Attribute Details

#baselineObject (readonly)

Returns the value of attribute baseline.



6
7
8
# File 'lib/monkey_lens/diff.rb', line 6

def baseline
  @baseline
end

#changesObject (readonly)

Returns the value of attribute changes.



6
7
8
# File 'lib/monkey_lens/diff.rb', line 6

def changes
  @changes
end

#currentObject (readonly)

Returns the value of attribute current.



6
7
8
# File 'lib/monkey_lens/diff.rb', line 6

def current
  @current
end

Instance Method Details

#clean?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/monkey_lens/diff.rb', line 14

def clean?
  changes.empty?
end

#failure?(threshold) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
21
# File 'lib/monkey_lens/diff.rb', line 18

def failure?(threshold)
  minimum = Change::LEVELS.fetch(threshold.to_s)
  changes.any? { |change| change.level >= minimum }
end

#to_hObject



23
24
25
26
27
28
29
30
# File 'lib/monkey_lens/diff.rb', line 23

def to_h
  {
    "schema" => 1,
    "clean" => clean?,
    "summary" => Change::LEVELS.keys.to_h { |level| [level, changes.count { |change| change.severity == level }] },
    "changes" => changes.map(&:to_h)
  }
end

#to_textObject



32
33
34
# File 'lib/monkey_lens/diff.rb', line 32

def to_text
  Formatter::Text.new(self).render
end