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
202 203 204 205 206 207 208 209 210 211 212 213 |
# 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 |
#[](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
140 141 142 143 144 145 146 |
# 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 |
#compare_name_asc(name1, name2) ⇒ Object
215 216 217 |
# File 'lib/pact_broker/matrix/row.rb', line 215 def compare_name_asc name1, name2 name1 <=> name2 end |
#compare_number_desc(number1, number2) ⇒ Object
223 224 225 226 227 228 229 230 231 |
# 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 |
#consumer ⇒ Object
152 153 154 |
# File 'lib/pact_broker/matrix/row.rb', line 152 def consumer @consumer ||= Domain::Pacticipant.new(name: consumer_name).tap { |pacticipant| pacticipant.id = consumer_id } end |
#consumer_version ⇒ Object
160 161 162 |
# 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 |
#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
251 252 253 |
# File 'lib/pact_broker/matrix/row.rb', line 251 def eql?(obj) (obj.class == model) && (obj.values == values) end |
#involves_pacticipant_with_name?(pacticipant_name) ⇒ Boolean
259 260 261 |
# File 'lib/pact_broker/matrix/row.rb', line 259 def involves_pacticipant_with_name?(pacticipant_name) pacticipant_name.include?(pacticipant_name) end |
#pact ⇒ Object
170 171 172 173 174 175 176 177 178 179 180 |
# 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 |
#pacticipant_names ⇒ Object
255 256 257 |
# File 'lib/pact_broker/matrix/row.rb', line 255 def pacticipant_names [consumer_name, provider_name] end |
#provider ⇒ Object
156 157 158 |
# File 'lib/pact_broker/matrix/row.rb', line 156 def provider @provider ||= Domain::Pacticipant.new(name: provider_name).tap { |pacticipant| pacticipant.id = provider_id } end |
#provider_version ⇒ Object
164 165 166 167 168 |
# 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 |
#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.
238 239 240 241 |
# File 'lib/pact_broker/matrix/row.rb', line 238 def success value = super value.nil? ? nil : value == true || value == 1 end |
#summary ⇒ Object
148 149 150 |
# 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 |
#to_s ⇒ Object
219 220 221 |
# File 'lib/pact_broker/matrix/row.rb', line 219 def to_s "#{consumer_name} #{consumer_version_number} #{provider_name} #{provider_version_number} #{success}" end |
#values ⇒ Object
243 244 245 |
# File 'lib/pact_broker/matrix/row.rb', line 243 def values super.merge(success: success) end |
#verification ⇒ Object
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 |
# 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 |