Class: PactBroker::Matrix::QuickRow

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

Overview

TODO rename this to just Row rubocop: disable Metrics/ClassLength

Direct Known Subclasses

EveryRow

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[:p][:pact_version_id] => Sequel[:v][:pact_version_id] }
CONSUMER_VERSION_JOIN =
{ Sequel[:p][:consumer_version_id] => Sequel[:cv][:id] }
PROVIDER_VERSION_JOIN =
{ Sequel[:v][:provider_version_id] => Sequel[:pv][:id] }
PACT_COLUMNS =
[
  Sequel[:p][:consumer_id],
  Sequel[:p][:provider_id],
  Sequel[:p][:consumer_version_id],
  Sequel[:p][:pact_publication_id],
  Sequel[:p][:pact_version_id],
  Sequel[:p][:created_at].as(:consumer_version_created_at),
  Sequel[:p][:pact_publication_id].as(:pact_order)
]
VERIFICATION_COLUMNS =
[
  Sequel[:v][:provider_version_id],
  Sequel[:v][:verification_id],
  Sequel[:v][:created_at].as(:provider_version_created_at)
]
JOINED_VERIFICATION_COLUMNS =
[
  :verification_id,
  :provider_version_id,
  :pact_version_id,
  :provider_id,
  :created_at
]
LAST_ACTION_DATE =
Sequel.lit("CASE WHEN (provider_version_created_at IS NOT NULL AND provider_version_created_at > consumer_version_created_at) THEN provider_version_created_at ELSE consumer_version_created_at END").as(:last_action_date)
ALL_COLUMNS =
PACT_COLUMNS + VERIFICATION_COLUMNS
SELECT_ALL_COLUMN_ARGS =

cachable select arguments

[:select_all_columns] + ALL_COLUMNS
SELECT_PACTICIPANT_IDS_ARGS =
[:select_pacticipant_ids, Sequel[:p][:consumer_id], Sequel[:p][:provider_id]]

Instance Method Summary collapse

Instance Method Details

#<=>(other) ⇒ Object

Add logic for ignoring case



334
335
336
337
338
339
340
341
342
343
344
345
# File 'lib/pact_broker/matrix/quick_row.rb', line 334

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



347
348
349
# File 'lib/pact_broker/matrix/quick_row.rb', line 347

def compare_name_asc name1, name2
  name1 <=> name2
end

#compare_number_desc(number1, number2) ⇒ Object



355
356
357
358
359
360
361
362
363
# File 'lib/pact_broker/matrix/quick_row.rb', line 355

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

#consumer_nameObject



387
388
389
# File 'lib/pact_broker/matrix/quick_row.rb', line 387

def consumer_name
  consumer.name
end

#consumer_version_branch_versionsObject



395
396
397
# File 'lib/pact_broker/matrix/quick_row.rb', line 395

def consumer_version_branch_versions
  consumer_version.branch_versions
end

#consumer_version_deployed_versionsObject



399
400
401
# File 'lib/pact_broker/matrix/quick_row.rb', line 399

def consumer_version_deployed_versions
  consumer_version.current_deployed_versions
end

#consumer_version_numberObject



391
392
393
# File 'lib/pact_broker/matrix/quick_row.rb', line 391

def consumer_version_number
  consumer_version.number
end

#consumer_version_orderObject



407
408
409
# File 'lib/pact_broker/matrix/quick_row.rb', line 407

def consumer_version_order
  consumer_version.order
end

#consumer_version_released_versionsObject



403
404
405
# File 'lib/pact_broker/matrix/quick_row.rb', line 403

def consumer_version_released_versions
  consumer_version.current_supported_released_versions
end

#eql?(obj) ⇒ Boolean

Returns:

  • (Boolean)


365
366
367
# File 'lib/pact_broker/matrix/quick_row.rb', line 365

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

#has_verification?Boolean

Returns:

  • (Boolean)


439
440
441
# File 'lib/pact_broker/matrix/quick_row.rb', line 439

def has_verification?
  !!verification_id
end

#involves_pacticipant_with_name?(pacticipant_name) ⇒ Boolean

Returns:

  • (Boolean)


373
374
375
# File 'lib/pact_broker/matrix/quick_row.rb', line 373

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

#last_action_dateObject



435
436
437
# File 'lib/pact_broker/matrix/quick_row.rb', line 435

def last_action_date
  return_or_raise_if_not_set(:last_action_date)
end

#pact_created_atObject



325
326
327
# File 'lib/pact_broker/matrix/quick_row.rb', line 325

def pact_created_at
  pact_publication.created_at
end

#pact_revision_numberObject



313
314
315
# File 'lib/pact_broker/matrix/quick_row.rb', line 313

def pact_revision_number
  pact_publication.revision_number
end

#pact_version_shaObject

end dataset_module



309
310
311
# File 'lib/pact_broker/matrix/quick_row.rb', line 309

def pact_version_sha
  pact_version.sha
end

#pacticipant_namesObject



369
370
371
# File 'lib/pact_broker/matrix/quick_row.rb', line 369

def pacticipant_names
  [consumer_name, provider_name]
end

#provider_nameObject



411
412
413
# File 'lib/pact_broker/matrix/quick_row.rb', line 411

def provider_name
  provider.name
end

#provider_version_branch_versionsObject



419
420
421
# File 'lib/pact_broker/matrix/quick_row.rb', line 419

def provider_version_branch_versions
  provider_version&.branch_versions || []
end

#provider_version_deployed_versionsObject



423
424
425
# File 'lib/pact_broker/matrix/quick_row.rb', line 423

def provider_version_deployed_versions
  provider_version&.current_deployed_versions || []
end

#provider_version_idObject



377
378
379
380
# File 'lib/pact_broker/matrix/quick_row.rb', line 377

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

#provider_version_numberObject



415
416
417
# File 'lib/pact_broker/matrix/quick_row.rb', line 415

def provider_version_number
  provider_version&.number
end

#provider_version_orderObject



431
432
433
# File 'lib/pact_broker/matrix/quick_row.rb', line 431

def provider_version_order
  provider_version&.order
end

#provider_version_released_versionsObject



427
428
429
# File 'lib/pact_broker/matrix/quick_row.rb', line 427

def provider_version_released_versions
  provider_version&.current_supported_released_versions || []
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.



445
446
447
448
449
450
451
# File 'lib/pact_broker/matrix/quick_row.rb', line 445

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

#successObject



321
322
323
# File 'lib/pact_broker/matrix/quick_row.rb', line 321

def success
  verification&.success
end

#to_sObject



351
352
353
# File 'lib/pact_broker/matrix/quick_row.rb', line 351

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

#verification_executed_atObject



329
330
331
# File 'lib/pact_broker/matrix/quick_row.rb', line 329

def verification_executed_at
  verification&.execution_date
end

#verification_idObject



382
383
384
385
# File 'lib/pact_broker/matrix/quick_row.rb', line 382

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

#verification_numberObject



317
318
319
# File 'lib/pact_broker/matrix/quick_row.rb', line 317

def verification_number
  verification&.number
end