Class: PactBroker::Matrix::AggregatedRow

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/pact_broker/matrix/aggregated_row.rb

Instance Method Summary collapse

Constructor Details

#initialize(matrix_rows) ⇒ AggregatedRow

Returns a new instance of AggregatedRow.



17
18
19
20
# File 'lib/pact_broker/matrix/aggregated_row.rb', line 17

def initialize matrix_rows
  @matrix_rows = matrix_rows
  @first_row = matrix_rows.first
end

Instance Method Details

#consumer_head_tag_namesObject

The list of tag names for which this pact publication is the most recent with that tag There could, however, be a later consumer version that does’t have a pact (perhaps because it was deleted) that has the same tag. TODO show a warning when the data is “corrupted” as above.



57
58
59
# File 'lib/pact_broker/matrix/aggregated_row.rb', line 57

def consumer_head_tag_names
  matrix_rows.collect(&:consumer_version_tag_name).compact
end

#latest_verification_for_pact_versionObject



47
48
49
50
51
# File 'lib/pact_broker/matrix/aggregated_row.rb', line 47

def latest_verification_for_pact_version
  @latest_verificaton_for_pact_version ||= begin
    matrix_rows.collect(&:verification).compact.sort_by(&:id).last
  end
end

#latest_verification_for_pseudo_branchObject

If this comes back nil, it won’t be “cached”, but it’s a reasonably quick query, so it’s probably ok. The collection of pacts that belong to the same tag can be considered a pseudo branch. Find the latest verification for each pseudo branch and return the most recent. If this pact is the most recent overall, and there were no verifications found for any of the tags, then return the most recent verification



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/pact_broker/matrix/aggregated_row.rb', line 33

def latest_verification_for_pseudo_branch
  @latest_verification ||= begin
    verification = matrix_rows.collect do | row|
      row.verification || latest_verification_for_consumer_version_tag(row)
    end.compact.sort_by(&:id).last

    if !verification && overall_latest?
      overall_latest_verification
    else
      verification
    end
  end
end

#overall_latest?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/pact_broker/matrix/aggregated_row.rb', line 22

def overall_latest?
  !!matrix_rows.find{ | row| row.consumer_version_tag_name.nil? }
end