class PactBroker::Matrix::Row
Constants
- TP_COLS
Used when using table_print to output query results
Public Instance Methods
Add logic for ignoring case
# File lib/pact_broker/matrix/row.rb, line 202 def <=> other comparisons = [ compare_name_asc(consumer_name, other.consumer_name), compare_number_desc(consumer_version_order, other.consumer_version_order), compare_number_desc(pact_revision_number, other.pact_revision_number), compare_name_asc(provider_name, other.provider_name), compare_number_desc(provider_version_order, other.provider_version_order), compare_number_desc(verification_id, other.verification_id) ] comparisons.find{|c| c != 0 } || 0 end
Temporary method while we transition from returning Hashes to return Matrix
objects from the repository find methods Need to make the object act as a hash and an object
# File lib/pact_broker/matrix/row.rb, line 140 def [] key if key == :provider_version_tags || key == :consumer_version_tags send(key) else super end end
# File lib/pact_broker/matrix/row.rb, line 215 def compare_name_asc name1, name2 name1 <=> name2 end
# File lib/pact_broker/matrix/row.rb, line 223 def compare_number_desc number1, number2 if number1 && number2 number2 <=> number1 elsif number1 1 else -1 end end
# File lib/pact_broker/matrix/row.rb, line 29 def consumer consumer_name where(name_like(:consumer_name, consumer_name)) end
# File lib/pact_broker/matrix/row.rb, line 160 def consumer_version @consumer_version ||= OpenStruct.new(number: consumer_version_number, order: consumer_version_order, id: consumer_version_id, pacticipant: consumer) end
Need to overwrite eql? from lib/sequel/model/base.rb because it uses @values instead of self.values so the success boolean/integer problem mentioned above screws things up
# File lib/pact_broker/matrix/row.rb, line 251 def eql?(obj) (obj.class == model) && (obj.values == values) end
# File lib/pact_broker/matrix/row.rb, line 259 def involves_pacticipant_with_name?(pacticipant_name) pacticipant_name.include?(pacticipant_name) end
# File lib/pact_broker/matrix/row.rb, line 37 def matching_selectors selectors if selectors.size == 1 where_consumer_or_provider_is(selectors.first) else where_consumer_and_provider_in(selectors) end end
# File lib/pact_broker/matrix/row.rb, line 126 def order_by_names_ascending_most_recent_first order( Sequel.asc(:consumer_name), Sequel.desc(:consumer_version_order), Sequel.desc(:pact_revision_number), Sequel.asc(:provider_name), Sequel.desc(:provider_version_order), Sequel.desc(:verification_id)) end
# File lib/pact_broker/matrix/row.rb, line 170 def pact @pact ||= OpenStruct.new( consumer: consumer, provider: provider, consumer_version: consumer_version, consumer_version_number: consumer_version_number, created_at: pact_created_at, revision_number: pact_revision_number, pact_version_sha: pact_version_sha ) end
# File lib/pact_broker/matrix/row.rb, line 255 def pacticipant_names [consumer_name, provider_name] end
# File lib/pact_broker/matrix/row.rb, line 33 def provider provider_name where(name_like(:provider_name, provider_name)) end
# File lib/pact_broker/matrix/row.rb, line 164 def provider_version if provider_version_number @provider_version ||= OpenStruct.new(number: provider_version_number, order: provider_version_order, id: provider_version_id, pacticipant: provider) end end
For some reason, with MySQL, the success column value comes back as an integer rather than a boolean for the latest_matrix view (but not the matrix view!) Maybe something to do with the union? Haven't investigated as this is an easy enough fix.
# File lib/pact_broker/matrix/row.rb, line 238 def success value = super value.nil? ? nil : value == true || value == 1 end
# File lib/pact_broker/matrix/row.rb, line 148 def summary "#{consumer_name}#{consumer_version_number} #{provider_name}#{provider_version_number || '?'} (r#{pact_revision_number}n#{verification_number || '?'})" end
# File lib/pact_broker/matrix/row.rb, line 219 def to_s "#{consumer_name} #{consumer_version_number} #{provider_name} #{provider_version_number} #{success}" end
# File lib/pact_broker/matrix/row.rb, line 243 def values super.merge(success: success) end
# File lib/pact_broker/matrix/row.rb, line 182 def verification if verification_executed_at @latest_verification ||= OpenStruct.new( id: verification_id, success: success, number: verification_number, execution_date: verification_executed_at, created_at: verification_executed_at, provider_version_number: provider_version_number, provider_version_order: provider_version_order, build_url: verification_build_url, provider_version: provider_version, consumer_name: consumer_name, provider_name: provider_name, pact_version_sha: pact_version_sha ) end end
find rows where (the consumer (and optional version) matches any of the selectors) AND the (provider (and optional version) matches any of the selectors OR the provider matches
and the verification is missing (and hence the provider version is null))
# File lib/pact_broker/matrix/row.rb, line 49 def where_consumer_and_provider_in selectors where{ Sequel.&( Sequel.|( *QueryHelper.consumer_and_maybe_consumer_version_match_any_selector(selectors) ), Sequel.|( *QueryHelper.provider_and_maybe_provider_version_match_any_selector_or_verification_is_missing(selectors) ), QueryHelper.either_consumer_or_provider_was_specified_in_query(selectors) ) } end
# File lib/pact_broker/matrix/row.rb, line 117 def where_consumer_or_provider_is s where{ Sequel.|( s[:pacticipant_version_id] ? Sequel.&(consumer_id: s[:pacticipant_id], consumer_version_id: s[:pacticipant_version_id]) : Sequel.&(consumer_id: s[:pacticipant_id]), s[:pacticipant_version_id] ? Sequel.&(provider_id: s[:pacticipant_id], provider_version_id: s[:pacticipant_version_id]) : Sequel.&(provider_id: s[:pacticipant_id]) ) } end