Class: PactBroker::Matrix::Row
- Inherits:
-
Object
- Object
- PactBroker::Matrix::Row
- Defined in:
- lib/pact_broker/matrix/row.rb
Direct Known Subclasses
Constant Summary collapse
- TP_COLS =
Used when using table_print to output query results
[ :consumer_version_number, :pact_revision_number, :provider_version_number, :verification_number]
Instance Method Summary collapse
-
#<=>(other) ⇒ Object
Add logic for ignoring case.
-
#[](key) ⇒ Object
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.
- #compare_name_asc(name1, name2) ⇒ Object
- #compare_number_desc(number1, number2) ⇒ Object
- #consumer ⇒ Object
- #consumer_version ⇒ Object
-
#eql?(obj) ⇒ Boolean
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.
- #involves_pacticipant_with_name?(pacticipant_name) ⇒ Boolean
- #pact ⇒ Object
- #pacticipant_names ⇒ Object
- #provider ⇒ Object
- #provider_version ⇒ Object
-
#success ⇒ Object
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.
- #summary ⇒ Object
- #to_s ⇒ Object
- #values ⇒ Object
- #verification ⇒ Object
Instance Method Details
#<=>(other) ⇒ Object
Add logic for ignoring case
148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/pact_broker/matrix/row.rb', line 148 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 |
#[](key) ⇒ Object
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
86 87 88 89 90 91 92 |
# File 'lib/pact_broker/matrix/row.rb', line 86 def [] key if key == :provider_version_tags || key == :consumer_version_tags send(key) else super end end |
#compare_name_asc(name1, name2) ⇒ Object
161 162 163 |
# File 'lib/pact_broker/matrix/row.rb', line 161 def compare_name_asc name1, name2 name1 <=> name2 end |
#compare_number_desc(number1, number2) ⇒ Object
169 170 171 172 173 174 175 176 177 |
# File 'lib/pact_broker/matrix/row.rb', line 169 def compare_number_desc number1, number2 if number1 && number2 number2 <=> number1 elsif number1 1 else -1 end end |
#consumer ⇒ Object
98 99 100 |
# File 'lib/pact_broker/matrix/row.rb', line 98 def consumer @consumer ||= OpenStruct.new(name: consumer_name, id: consumer_id) end |
#consumer_version ⇒ Object
106 107 108 |
# File 'lib/pact_broker/matrix/row.rb', line 106 def consumer_version @consumer_version ||= OpenStruct.new(number: consumer_version_number, order: consumer_version_order, id: consumer_version_id, pacticipant: consumer) end |
#eql?(obj) ⇒ Boolean
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
197 198 199 |
# File 'lib/pact_broker/matrix/row.rb', line 197 def eql?(obj) (obj.class == model) && (obj.values == values) end |
#involves_pacticipant_with_name?(pacticipant_name) ⇒ Boolean
205 206 207 |
# File 'lib/pact_broker/matrix/row.rb', line 205 def involves_pacticipant_with_name?(pacticipant_name) pacticipant_name.include?(pacticipant_name) end |
#pact ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/pact_broker/matrix/row.rb', line 116 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 |
#pacticipant_names ⇒ Object
201 202 203 |
# File 'lib/pact_broker/matrix/row.rb', line 201 def pacticipant_names [consumer_name, provider_name] end |
#provider ⇒ Object
102 103 104 |
# File 'lib/pact_broker/matrix/row.rb', line 102 def provider @provider ||= OpenStruct.new(name: provider_name, id: provider_id) end |
#provider_version ⇒ Object
110 111 112 113 114 |
# File 'lib/pact_broker/matrix/row.rb', line 110 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 |
#success ⇒ Object
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.
184 185 186 187 |
# File 'lib/pact_broker/matrix/row.rb', line 184 def success value = super value.nil? ? nil : value == true || value == 1 end |
#summary ⇒ Object
94 95 96 |
# File 'lib/pact_broker/matrix/row.rb', line 94 def summary "#{consumer_name}#{consumer_version_number} #{provider_name}#{provider_version_number || '?'} (r#{pact_revision_number}n#{verification_number || '?'})" end |
#to_s ⇒ Object
165 166 167 |
# File 'lib/pact_broker/matrix/row.rb', line 165 def to_s "#{consumer_name} v#{consumer_version_number} #{provider_name} #{provider_version_number} #{success}" end |
#values ⇒ Object
189 190 191 |
# File 'lib/pact_broker/matrix/row.rb', line 189 def values super.merge(success: success) end |
#verification ⇒ Object
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/pact_broker/matrix/row.rb', line 128 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 |