class PactBroker::Matrix::AggregatedRow
Attributes
first_row[R]
matrix_rows[R]
Public Class Methods
new(matrix_rows)
click to toggle source
# File lib/pact_broker/matrix/aggregated_row.rb, line 17 def initialize matrix_rows @matrix_rows = matrix_rows @first_row = matrix_rows.first end
Public Instance Methods
consumer_head_tag_names()
click to toggle source
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.
# 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_version()
click to toggle source
# 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_branch()
click to toggle source
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
# 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?()
click to toggle source
# File lib/pact_broker/matrix/aggregated_row.rb, line 22 def overall_latest? !!matrix_rows.find{ | row| row.consumer_version_tag_name.nil? } end
Private Instance Methods
consumer_version_tag_names()
click to toggle source
# File lib/pact_broker/matrix/aggregated_row.rb, line 74 def consumer_version_tag_names matrix_rows.collect(&:consumer_version_tag_name) end
latest_verification_for_consumer_version_tag(row)
click to toggle source
# File lib/pact_broker/matrix/aggregated_row.rb, line 65 def latest_verification_for_consumer_version_tag row row.latest_verification_for_consumer_version_tag if row.consumer_version_tag_name end
overall_latest_verification()
click to toggle source
# File lib/pact_broker/matrix/aggregated_row.rb, line 69 def overall_latest_verification # not eager loaded because it shouldn't be called that often first_row.latest_verification_for_consumer_and_provider end