Skip to content

Commit 8217209

Browse files
committed
fix: return overwritten pact publication as latest if non exists as a latest version when rendering verification
Closes: pact-foundation#189
1 parent 3f74e7e commit 8217209

File tree

2 files changed

+51
-22
lines changed

2 files changed

+51
-22
lines changed

lib/pact_broker/pacts/pact_version.rb

+7-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,13 @@ def latest_consumer_version
2222
end
2323

2424
def latest_pact_publication
25-
PactBroker::Pacts::LatestPactPublicationsByConsumerVersion.where(pact_version_id: id).order(:consumer_version_order).last
25+
PactBroker::Pacts::LatestPactPublicationsByConsumerVersion
26+
.where(pact_version_id: id)
27+
.order(:consumer_version_order)
28+
.last || PactBroker::Pacts::AllPactPublications
29+
.where(pact_version_id: id)
30+
.order(:consumer_version_order)
31+
.last
2632
end
2733

2834
def consumer_versions

spec/lib/pact_broker/pacts/pact_version_spec.rb

+44-21
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,52 @@ module Pacts
1919
end
2020

2121
describe "#latest_pact_publication" do
22-
before do
23-
TestDataBuilder.new
24-
.create_provider("Bar")
25-
.create_consumer("Foo")
26-
.create_consumer_version("1.2.100")
27-
.create_pact
28-
.revise_pact
29-
.create_consumer_version("1.2.101")
30-
.create_pact
31-
.create_consumer_version("1.2.102")
32-
.create_pact
33-
.revise_pact
34-
.create_provider("Animals")
35-
.create_pact
36-
.create_provider("Wiffles")
37-
.create_pact
22+
23+
context "when the latest pact publication is not an overwritten one" do
24+
before do
25+
TestDataBuilder.new
26+
.create_provider("Bar")
27+
.create_consumer("Foo")
28+
.create_consumer_version("1.2.100")
29+
.create_pact
30+
.revise_pact
31+
.create_consumer_version("1.2.101")
32+
.create_pact
33+
.create_consumer_version("1.2.102")
34+
.create_pact
35+
.revise_pact
36+
.create_provider("Animals")
37+
.create_pact
38+
.create_provider("Wiffles")
39+
.create_pact
40+
end
41+
42+
it "returns the latest pact publication for the given pact version" do
43+
pact = PactBroker::Pacts::Repository.new.find_pact("Foo", "1.2.102", "Animals")
44+
pact_version = PactBroker::Pacts::PactVersion.find(sha: pact.pact_version_sha)
45+
latest_pact_publication = pact_version.latest_pact_publication
46+
expect(latest_pact_publication.id).to eq pact.id
47+
end
3848
end
3949

40-
it "returns the latest pact publication for the given pact version" do
41-
pact = PactBroker::Pacts::Repository.new.find_pact("Foo", "1.2.102", "Animals")
42-
pact_version = PactBroker::Pacts::PactVersion.find(sha: pact.pact_version_sha)
43-
latest_pact_publication = pact_version.latest_pact_publication
44-
expect(latest_pact_publication.id).to eq pact.id
50+
context "when the only pact publication with the given sha is an overwritten one" do
51+
let(:td) { TestDataBuilder.new }
52+
let!(:first_version) do
53+
td.create_provider("Bar")
54+
.create_consumer("Foo")
55+
.create_consumer_version("1")
56+
.create_pact
57+
.and_return(:pact)
58+
end
59+
let!(:second_revision) do
60+
td.revise_pact
61+
end
62+
63+
it "returns the overwritten pact publication" do
64+
pact_version = PactBroker::Pacts::PactVersion.find(sha: first_version.pact_version_sha)
65+
latest_pact_publication = pact_version.latest_pact_publication
66+
expect(latest_pact_publication.revision_number).to eq 1
67+
end
4568
end
4669
end
4770

0 commit comments

Comments
 (0)