Class: PactBroker::Verifications::Repository

Inherits:
Object
  • Object
show all
Includes:
Repositories::Helpers
Defined in:
lib/pact_broker/verifications/repository.rb,
lib/pact_broker/verifications/latest_verifications_by_consumer_version.rb

Defined Under Namespace

Classes: LatestVerificationsByConsumerVersion

Instance Method Summary collapse

Methods included from Repositories::Helpers

#case_sensitivity_options, #mysql?, #name_like, #order_ignore_case, #select_for_subquery

Instance Method Details

#create(verification, pact) ⇒ Object



11
12
13
14
# File 'lib/pact_broker/verifications/repository.rb', line 11

def create verification, pact
  verification.pact_version_id = pact_version_id_for(pact)
  verification.save
end

#find(consumer_name, provider_name, pact_version_sha, verification_number) ⇒ Object



20
21
22
23
24
25
26
27
# File 'lib/pact_broker/verifications/repository.rb', line 20

def find consumer_name, provider_name, pact_version_sha, verification_number
  PactBroker::Domain::Verification
    .join(:all_pact_publications, pact_version_id: :pact_version_id)
    .consumer(consumer_name)
    .provider(provider_name)
    .pact_version_sha(pact_version_sha)
    .verification_number(verification_number).first
end

#find_latest_verification_for(consumer_name, provider_name) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/pact_broker/verifications/repository.rb', line 40

def find_latest_verification_for consumer_name, provider_name
  query = LatestVerificationsByConsumerVersion
    .join(:all_pact_publications, pact_version_id: :pact_version_id)
    .consumer(consumer_name)
    .provider(provider_name)
    .latest
    query.first
end

#find_latest_verifications_for_consumer_version(consumer_name, consumer_version_number) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/pact_broker/verifications/repository.rb', line 29

def find_latest_verifications_for_consumer_version consumer_name, consumer_version_number
  # Use LatestPactPublicationsByConsumerVersion not AllPactPublcations because we don't
  # want verifications for shadowed revisions as it would be misleading.
  LatestVerificationsByConsumerVersion
    .join(:latest_pact_publications_by_consumer_versions, pact_version_id: :pact_version_id)
    .consumer(consumer_name)
    .consumer_version_number(consumer_version_number)
    .order(:provider_name)
    .all
end

#pact_version_id_for(pact) ⇒ Object



49
50
51
# File 'lib/pact_broker/verifications/repository.rb', line 49

def pact_version_id_for pact
  PactBroker::Pacts::PactPublication.select(:pact_version_id).where(id: pact.id)
end

#verification_count_for_pact(pact) ⇒ Object



16
17
18
# File 'lib/pact_broker/verifications/repository.rb', line 16

def verification_count_for_pact pact
  PactBroker::Domain::Verification.where(pact_version_id: pact_version_id_for(pact)).count
end