class PactBroker::Pacts::PactVersion

Public Instance Methods

any_successful_verifications_from_another_branch_from_before_this_branch_created?(branch_name) click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 180
def any_successful_verifications_from_another_branch_from_before_this_branch_created?(branch_name)
  branch = PactBroker::Versions::Branch.where(pacticipant_id: provider_id, name: branch_name).single_record

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

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

  query.any?
end
any_successful_verifications_from_provider_branch?(branch_name) click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 173
def any_successful_verifications_from_provider_branch?(branch_name)
  PactVersion.where(Sequel[:pact_versions][:id] => id)
    .join_successful_verifications
    .join_branch_versions_for_branch_name_to_verifications(branch_name)
    .any?
end
consumer_name() click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 101
def consumer_name
  consumer.name
end
for_pact_domain(pact_domain) click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 56
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_branch_versions_for_branch_name_to_verifications(branch_name) click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 84
def join_branch_versions_for_branch_name_to_verifications(branch_name)
  branch_versions_join = {
    Sequel[:branch_versions][:version_id] => Sequel[:verifications][:provider_version_id],
    Sequel[:branch_versions][:branch_name] => branch_name
  }
  join(:branch_versions, branch_versions_join)
end
join_provider_version_tags_for_tag(tag) click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 76
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 72
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 64
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 113
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 105
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 93
def name
  "Pact between #{consumer_name} and #{provider_name}"
end
pending_for_provider_branch?(branch_name) click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 117
def pending_for_provider_branch?(branch_name)
  !any_successful_verifications_from_provider_branch?(branch_name) && !any_successful_verifications_from_another_branch_from_before_this_branch_created?(branch_name)
end
provider_name() click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 97
def provider_name
  provider.name
end
select_provider_tags_with_successful_verifications(tags) click to toggle source
# File lib/pact_broker/pacts/pact_version.rb, line 147
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 121
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 163
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 157
def verified_successfully_by_any_provider_version?
  PactVersion.where(Sequel[:pact_versions][:id] => id)
    .join_successful_verifications
    .any?
end