Class: Igniter::Extensions::Contracts::Invariants::Report

Inherits:
Object
  • Object
show all
Defined in:
lib/igniter/extensions/contracts/invariants/report.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(suite:, outputs:, violations:, execution_result: nil) ⇒ Report

Returns a new instance of Report.



10
11
12
13
14
15
16
# File 'lib/igniter/extensions/contracts/invariants/report.rb', line 10

def initialize(suite:, outputs:, violations:, execution_result: nil)
  @suite = suite
  @outputs = outputs.transform_keys(&:to_sym).freeze
  @violations = Array(violations).freeze
  @execution_result = execution_result
  freeze
end

Instance Attribute Details

#execution_resultObject (readonly)

Returns the value of attribute execution_result.



8
9
10
# File 'lib/igniter/extensions/contracts/invariants/report.rb', line 8

def execution_result
  @execution_result
end

#outputsObject (readonly)

Returns the value of attribute outputs.



8
9
10
# File 'lib/igniter/extensions/contracts/invariants/report.rb', line 8

def outputs
  @outputs
end

#suiteObject (readonly)

Returns the value of attribute suite.



8
9
10
# File 'lib/igniter/extensions/contracts/invariants/report.rb', line 8

def suite
  @suite
end

#violationsObject (readonly)

Returns the value of attribute violations.



8
9
10
# File 'lib/igniter/extensions/contracts/invariants/report.rb', line 8

def violations
  @violations
end

Instance Method Details

#invalid?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/igniter/extensions/contracts/invariants/report.rb', line 22

def invalid?
  !valid?
end

#summaryObject



26
27
28
29
30
# File 'lib/igniter/extensions/contracts/invariants/report.rb', line 26

def summary
  return "valid" if valid?

  "invalid - #{violations.length} invariant(s) violated: #{violations.map(&:name).join(", ")}"
end

#to_hObject



32
33
34
35
36
37
38
39
40
# File 'lib/igniter/extensions/contracts/invariants/report.rb', line 32

def to_h
  {
    valid: valid?,
    outputs: outputs,
    invariants: suite.names,
    violations: violations.map(&:to_h),
    execution_result: execution_result&.to_h
  }
end

#valid?Boolean

Returns:

  • (Boolean)


18
19
20
# File 'lib/igniter/extensions/contracts/invariants/report.rb', line 18

def valid?
  violations.empty?
end