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
200 201 202 203 204 205 206 207 208 209 210 211 |
# File 'lib/pact_broker/matrix/row.rb', line 200 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
138 139 140 141 142 143 144 |
# File 'lib/pact_broker/matrix/row.rb', line 138 def [] key if key == :provider_version_tags || key == :consumer_version_tags send(key) else super end end |
#compare_name_asc(name1, name2) ⇒ Object
213 214 215 |
# File 'lib/pact_broker/matrix/row.rb', line 213 def compare_name_asc name1, name2 name1 <=> name2 end |
#compare_number_desc(number1, number2) ⇒ Object
221 222 223 224 225 226 227 228 229 |
# File 'lib/pact_broker/matrix/row.rb', line 221 def compare_number_desc number1, number2 if number1 && number2 number2 <=> number1 elsif number1 1 else -1 end end |
#consumer ⇒ Object
150 151 152 |
# File 'lib/pact_broker/matrix/row.rb', line 150 def consumer @consumer ||= OpenStruct.new(name: consumer_name, id: consumer_id) end |
#consumer_version ⇒ Object
158 159 160 |
# File 'lib/pact_broker/matrix/row.rb', line 158 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
249 250 251 |
# File 'lib/pact_broker/matrix/row.rb', line 249 def eql?(obj) (obj.class == model) && (obj.values == values) end |
#involves_pacticipant_with_name?(pacticipant_name) ⇒ Boolean
257 258 259 |
# File 'lib/pact_broker/matrix/row.rb', line 257 def involves_pacticipant_with_name?(pacticipant_name) pacticipant_name.include?(pacticipant_name) end |
#pact ⇒ Object
168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/pact_broker/matrix/row.rb', line 168 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
253 254 255 |
# File 'lib/pact_broker/matrix/row.rb', line 253 def pacticipant_names [consumer_name, provider_name] end |
#provider ⇒ Object
154 155 156 |
# File 'lib/pact_broker/matrix/row.rb', line 154 def provider @provider ||= OpenStruct.new(name: provider_name, id: provider_id) end |
#provider_version ⇒ Object
162 163 164 165 166 |
# File 'lib/pact_broker/matrix/row.rb', line 162 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.
236 237 238 239 |
# File 'lib/pact_broker/matrix/row.rb', line 236 def success value = super value.nil? ? nil : value == true || value == 1 end |
#summary ⇒ Object
146 147 148 |
# File 'lib/pact_broker/matrix/row.rb', line 146 def summary "#{consumer_name}#{consumer_version_number} #{provider_name}#{provider_version_number || '?'} (r#{pact_revision_number}n#{verification_number || '?'})" end |
#to_s ⇒ Object
217 218 219 |
# File 'lib/pact_broker/matrix/row.rb', line 217 def to_s "#{consumer_name} #{consumer_version_number} #{provider_name} #{provider_version_number} #{success}" end |
#values ⇒ Object
241 242 243 |
# File 'lib/pact_broker/matrix/row.rb', line 241 def values super.merge(success: success) end |
#verification ⇒ Object
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
# File 'lib/pact_broker/matrix/row.rb', line 180 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 |