Class: Igniter::Extensions::Contracts::Invariants::CasesReport

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(reports:) ⇒ CasesReport

Returns a new instance of CasesReport.



10
11
12
13
# File 'lib/igniter/extensions/contracts/invariants/cases_report.rb', line 10

def initialize(reports:)
  @reports = reports.freeze
  freeze
end

Instance Attribute Details

#reportsObject (readonly)

Returns the value of attribute reports.



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

def reports
  @reports
end

Instance Method Details

#invalid_casesObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/igniter/extensions/contracts/invariants/cases_report.rb', line 19

def invalid_cases
  reports.each_with_index.filter_map do |report, index|
    next if report.valid?

    {
      index: index,
      report: report.to_h
    }
  end
end

#summaryObject



30
31
32
33
34
# File 'lib/igniter/extensions/contracts/invariants/cases_report.rb', line 30

def summary
  return "all cases valid" if valid?

  "#{invalid_cases.length} invalid case(s)"
end

#to_hObject



36
37
38
39
40
41
42
# File 'lib/igniter/extensions/contracts/invariants/cases_report.rb', line 36

def to_h
  {
    valid: valid?,
    case_count: reports.length,
    invalid_cases: invalid_cases
  }
end

#valid?Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/igniter/extensions/contracts/invariants/cases_report.rb', line 15

def valid?
  reports.all?(&:valid?)
end