Class: PactBroker::Matrix::QuickRow

Inherits:
Object
  • Object
show all
Defined in:
lib/pact_broker/matrix/quick_row.rb

Constant Summary collapse

LV =

Tables

:latest_verification_id_for_pact_version_and_provider_version
LP =
:latest_pact_publication_ids_for_consumer_versions
LP_LV_JOIN =

Joins

{ Sequel[:lp][:pact_version_id] => Sequel[:lv][:pact_version_id] }
CONSUMER_JOIN =
{ Sequel[:lp][:consumer_id] => Sequel[:consumers][:id] }
PROVIDER_JOIN =
{ Sequel[:lp][:provider_id] => Sequel[:providers][:id] }
CONSUMER_VERSION_JOIN =
{ Sequel[:lp][:consumer_version_id] => Sequel[:cv][:id] }
PROVIDER_VERSION_JOIN =
{ Sequel[:lv][:provider_version_id] => Sequel[:pv][:id] }
CONSUMER_COLUMNS =

Columns

[
  Sequel[:lp][:consumer_id],
  Sequel[:consumers][:name].as(:consumer_name)
]
PROVIDER_COLUMNS =
[
  Sequel[:lp][:provider_id],
  Sequel[:providers][:name].as(:provider_name)
]
CONSUMER_VERSION_COLUMNS =
[
  Sequel[:lp][:consumer_version_id],
  Sequel[:cv][:number].as(:consumer_version_number),
  Sequel[:cv][:order].as(:consumer_version_order)
]
PROVIDER_VERSION_COLUMNS =
[
  Sequel[:lv][:provider_version_id],
  Sequel[:pv][:number].as(:provider_version_number),
  Sequel[:pv][:order].as(:provider_version_order)
]
PACT_COLUMNS =
[
  Sequel[:lp][:pact_publication_id],
  Sequel[:lp][:pact_version_id]
]
VERIFICATION_COLUMNS =
[
  Sequel[:lv][:verification_id]
]
ALL_COLUMNS =
CONSUMER_COLUMNS + CONSUMER_VERSION_COLUMNS + PACT_COLUMNS +
PROVIDER_COLUMNS + PROVIDER_VERSION_COLUMNS + VERIFICATION_COLUMNS
PACTICIPANT_NAMES_AND_IDS =
CONSUMER_COLUMNS + PROVIDER_COLUMNS
SELECT_ALL_COLUMN_ARGS =

cachable select arguments

[:select_all_columns] + ALL_COLUMNS
SELECT_PACTICIPANT_NAMES_AND_IDS_ARGS =
[:select_pacticipant_names_and_ids] + PACTICIPANT_NAMES_AND_IDS

Instance Method Summary collapse

Instance Method Details

#<=>(other) ⇒ Object

Add logic for ignoring case



232
233
234
235
236
237
238
239
240
241
242
243
# File 'lib/pact_broker/matrix/quick_row.rb', line 232

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

#compare_name_asc(name1, name2) ⇒ Object



245
246
247
# File 'lib/pact_broker/matrix/quick_row.rb', line 245

def compare_name_asc name1, name2
  name1 <=> name2
end

#compare_number_desc(number1, number2) ⇒ Object



253
254
255
256
257
258
259
260
261
# File 'lib/pact_broker/matrix/quick_row.rb', line 253

def compare_number_desc number1, number2
  if number1 && number2
    number2 <=> number1
  elsif number1
    1
  else
    -1
  end
end

#consumer_nameObject



285
286
287
# File 'lib/pact_broker/matrix/quick_row.rb', line 285

def consumer_name
  return_or_raise_if_not_set(:consumer_name)
end

#consumer_version_numberObject



289
290
291
# File 'lib/pact_broker/matrix/quick_row.rb', line 289

def consumer_version_number
  return_or_raise_if_not_set(:consumer_version_number)
end

#consumer_version_orderObject



293
294
295
# File 'lib/pact_broker/matrix/quick_row.rb', line 293

def consumer_version_order
  return_or_raise_if_not_set(:consumer_version_order)
end

#eql?(obj) ⇒ Boolean

Returns:

  • (Boolean)


263
264
265
# File 'lib/pact_broker/matrix/quick_row.rb', line 263

def eql?(obj)
  (obj.class == model) && (obj.values == values)
end

#involves_pacticipant_with_name?(pacticipant_name) ⇒ Boolean

Returns:

  • (Boolean)


271
272
273
# File 'lib/pact_broker/matrix/quick_row.rb', line 271

def involves_pacticipant_with_name?(pacticipant_name)
  pacticipant_name.include?(pacticipant_name)
end

#pact_created_atObject



223
224
225
# File 'lib/pact_broker/matrix/quick_row.rb', line 223

def pact_created_at
  pact_publication.created_at
end

#pact_revision_numberObject



211
212
213
# File 'lib/pact_broker/matrix/quick_row.rb', line 211

def pact_revision_number
  pact_publication.revision_number
end

#pact_version_shaObject



207
208
209
# File 'lib/pact_broker/matrix/quick_row.rb', line 207

def pact_version_sha
  pact_version.sha
end

#pacticipant_namesObject



267
268
269
# File 'lib/pact_broker/matrix/quick_row.rb', line 267

def pacticipant_names
  [consumer_name, provider_name]
end

#provider_nameObject



297
298
299
# File 'lib/pact_broker/matrix/quick_row.rb', line 297

def provider_name
  return_or_raise_if_not_set(:provider_name)
end

#provider_version_idObject



275
276
277
278
# File 'lib/pact_broker/matrix/quick_row.rb', line 275

def provider_version_id
  # null when not verified
  values[:provider_version_id]
end

#provider_version_numberObject



301
302
303
# File 'lib/pact_broker/matrix/quick_row.rb', line 301

def provider_version_number
  return_or_raise_if_not_set(:provider_version_number)
end

#provider_version_orderObject



305
306
307
# File 'lib/pact_broker/matrix/quick_row.rb', line 305

def provider_version_order
  return_or_raise_if_not_set(:provider_version_order)
end

#return_or_raise_if_not_set(key) ⇒ Object

This model needs the verifications and pacticipants joined to it before it can be used, as it’s not a “real” model.



311
312
313
314
315
316
317
# File 'lib/pact_broker/matrix/quick_row.rb', line 311

def return_or_raise_if_not_set(key)
  if values.key?(key)
    values[key]
  else
    raise "Required table not joined"
  end
end

#successObject

end dataset_module



203
204
205
# File 'lib/pact_broker/matrix/quick_row.rb', line 203

def success
  verification&.success
end

#to_sObject



249
250
251
# File 'lib/pact_broker/matrix/quick_row.rb', line 249

def to_s
  "#{consumer_name} v#{consumer_version_number} #{provider_name} #{provider_version_number} #{success}"
end

#verification_executed_atObject



227
228
229
# File 'lib/pact_broker/matrix/quick_row.rb', line 227

def verification_executed_at
  verification&.execution_date
end

#verification_idObject



280
281
282
283
# File 'lib/pact_broker/matrix/quick_row.rb', line 280

def verification_id
  # null when not verified
  return_or_raise_if_not_set(:verification_id)
end

#verification_numberObject



215
216
217
# File 'lib/pact_broker/matrix/quick_row.rb', line 215

def verification_number
  verification&.number
end