Skip to content

Commit

Permalink
chore: correct logic when no consumer version is specified
Browse files Browse the repository at this point in the history
  • Loading branch information
bethesque committed Dec 2, 2020
1 parent 422c87f commit 249fe1c
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 4 deletions.
8 changes: 8 additions & 0 deletions lib/pact_broker/pacts/all_pact_publications.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,14 @@ def consumer_version_number number
where(name_like(:consumer_version_number, number))
end

def maybe_consumer_version_number number
if number
where(name_like(:consumer_version_number, number))
else
self
end
end

def revision_number number
where(revision_number: number)
end
Expand Down
7 changes: 6 additions & 1 deletion lib/pact_broker/pacts/repository.rb
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ def find_pact consumer_name, consumer_version, provider_name, pact_version_sha =
pact_publication_by_consumer_version = scope_for(LatestPactPublicationsByConsumerVersion)
.consumer(consumer_name)
.provider(provider_name)
.consumer_version_number(consumer_version)
.maybe_consumer_version_number(consumer_version)
.limit(1)

latest_pact_publication_by_sha = scope_for(AllPactPublications)
Expand Down Expand Up @@ -327,6 +327,11 @@ def find_pact consumer_name, consumer_version, provider_name, pact_version_sha =
.eager(:tags)
.collect(&:to_domain_with_content).first
end
else
pact_publication_by_consumer_version
.eager(:tags)
.reverse_order(:consumer_version_order, :revision_number)
.collect(&:to_domain_with_content).first
end
end

Expand Down
13 changes: 10 additions & 3 deletions spec/lib/pact_broker/pacts/repository_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -569,8 +569,7 @@ module Pacts

describe "find_pact" do
let!(:pact) do
builder = TestDataBuilder.new
pact = builder
pact = td
.create_consumer("Consumer")
.create_consumer_version("1.2.2")
.create_provider("Provider")
Expand All @@ -580,7 +579,7 @@ module Pacts
.create_pact
.revise_pact
.and_return(:pact)
builder
td
.create_consumer_version("1.2.6")
.create_pact
.create_provider("Another Provider")
Expand All @@ -600,6 +599,14 @@ module Pacts
expect(subject.json_content).to_not be_nil
end

context "with no version" do
subject { Repository.new.find_pact("Consumer", nil, "Provider") }

it "returns the latest pact" do
expect(subject.consumer_version_number).to eq "1.2.6"
end
end

context "with a pact_version_sha" do
subject { Repository.new.find_pact "Consumer", nil, "Provider", pact.pact_version_sha }

Expand Down

0 comments on commit 249fe1c

Please sign in to comment.