class PactBroker::Pacts::PactVersion

Public Instance Methods

consumer_name() click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 95
def consumer_name
  pact_publications.last.consumer.name
end
for_pact_domain(pact_domain) click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 58
def for_pact_domain(pact_domain)
  where(
    sha: pact_domain.pact_version_sha,
    consumer_id: pact_domain.consumer.id,
    provider_id: pact_domain.provider.id
  ).single_record
end
join_provider_version_tags_for_tag(tag) click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 78
def join_provider_version_tags_for_tag(tag)
  tags_join = {
    Sequel[:tags][:version_id] => Sequel[:provider_versions][:id],
    Sequel[:tags][:name] => tag
  }
  join(:tags, tags_join)
end
join_provider_versions() click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 74
def join_provider_versions
  join(:versions, { Sequel[:provider_versions][:id] => Sequel[:verifications][:provider_version_id] }, { table_alias: :provider_versions })
end
join_successful_verifications() click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 66
def join_successful_verifications
  verifications_join = {
    Sequel[:verifications][:pact_version_id] => Sequel[:pact_versions][:id],
    Sequel[:verifications][:success] => true
  }
  join(:verifications, verifications_join)
end
latest_consumer_version_number() click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 107
def latest_consumer_version_number
  latest_consumer_version.number
end
latest_pact_publication() click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 99
def latest_pact_publication
  PactBroker::Pacts::PactPublication
    .for_pact_version_id(id)
    .remove_overridden_revisions_from_complete_query
    .latest || PactBroker::Pacts::PactPublication.for_pact_version_id(id).latest
end
name() click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 87
def name
  "Pact between #{consumer_name} and #{provider_name}"
end
provider_name() click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 91
def provider_name
  pact_publications.last.provider.name
end
select_provider_tags_with_successful_verifications(tags) click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 137
def select_provider_tags_with_successful_verifications(tags)
  tags.select do | tag |
    PactVersion.where(Sequel[:pact_versions][:id] => id)
      .join_successful_verifications
      .join_provider_versions
      .join_provider_version_tags_for_tag(tag)
      .any?
  end
end
select_provider_tags_with_successful_verifications_from_another_branch_from_before_this_branch_created(tags) click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 111
def select_provider_tags_with_successful_verifications_from_another_branch_from_before_this_branch_created(tags)
  tags.select do | tag |
    first_tag_with_name = PactBroker::Domain::Tag.where(pacticipant_id: provider_id, name: tag).order(:created_at).first

    verifications_join = {
      Sequel[:verifications][:pact_version_id] => Sequel[:pact_versions][:id],
      Sequel[:verifications][:success] => true
    }
    tags_join = {
      Sequel[:tags][:version_id] => Sequel[:versions][:id],
    }
    query = PactVersion.where(Sequel[:pact_versions][:id] => id)
      .join(:verifications, verifications_join)
      .join(:versions, Sequel[:versions][:id] => Sequel[:verifications][:provider_version_id])
      .join(:tags, tags_join) do
        Sequel.lit("tags.name != ?", tag)
      end

    if first_tag_with_name
      query = query.where { Sequel[:verifications][:created_at] < first_tag_with_name.created_at }
    end

    query.any?
  end
end
set_interactions_and_messages_counts!() click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 153
def set_interactions_and_messages_counts!
  if interactions_count.nil? || messages_count.nil?
    content_object = PactBroker::Pacts::Content.from_json(content)
    update(
      messages_count: content_object.messages&.count || 0,
      interactions_count: content_object.interactions&.count || 0
    )
  end
end
verified_successfully_by_any_provider_version?() click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 147
def verified_successfully_by_any_provider_version?
  PactVersion.where(Sequel[:pact_versions][:id] => id)
    .join_successful_verifications
    .any?
end