Skip to content

Commit 7f37644

Browse files
committed
feat(matrix): ensure correct row is returned when a pact is revised, then verified
1 parent bdc5ac0 commit 7f37644

File tree

4 files changed

+36
-4
lines changed

4 files changed

+36
-4
lines changed

db/migrations/000050_create_latest_matrix.rb

+8-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,14 @@
1414
1515
UNION
1616
17-
select * from matrix where verification_id is null"
17+
select matrix.* from matrix
18+
inner join latest_pact_publication_revision_numbers lr
19+
on matrix.consumer_id = lr.consumer_id
20+
and matrix.provider_id = lr.provider_id
21+
and matrix.consumer_version_order = lr.consumer_version_order
22+
and matrix.pact_revision_number = lr.latest_revision_number
23+
where verification_id is null
24+
"
1825
)
1926
end
2027
end

spec/lib/pact_broker/matrix/repository_spec.rb

+18-2
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,27 @@ def shorten_rows rows
249249
end
250250

251251
describe "find" do
252-
let(:options) { { scope: scope} }
253-
let(:scope) { 'latest' }
252+
let(:options) { {} }
254253

255254
subject { Repository.new.find(selectors, options) }
256255

256+
context "when a pact is revised, then verified" do
257+
before do
258+
td.create_pact_with_hierarchy("A", "1", "B")
259+
.revise_pact
260+
.create_verification(provider_version: "1")
261+
end
262+
263+
context "when latestby=cvpv" do
264+
let(:selectors) { build_selectors('A' => '1', 'B' => '1')}
265+
let(:options) { { latestby: 'cvpv' } }
266+
267+
it "returns one row" do
268+
expect(shorten_rows(subject)).to eq ['A1 B1 n1']
269+
end
270+
end
271+
end
272+
257273
context "when the provider version resource exists but there is no verification for that version" do
258274
before do
259275
# A/1.2.3 -> B

spec/migrations/50_create_latest_matrix_spec.rb

-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ def shorten_row row
103103
# C2 P? (r1/n?)
104104

105105
it "only includes the latest pact revisions and latest verifications" do
106-
puts database[:matrix].order(:consumer_version_order, :provider_version_order, :pact_revision_number, :verification_id).all.collect{ |r| shorten_row(r) }
107106
rows = database[:latest_matrix].order(:verification_id).all.collect{|row| shorten_row(row) }
108107
expect(rows).to include "C1 P1 (r2/n2)"
109108
expect(rows).to include "C1 P2 (r2/n3)"

spec/service_consumers/provider_states_for_pact_broker_client.rb

+10
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@
66
set_up do
77
TestDataBuilder.new
88
.create_pact_with_hierarchy("Foo Thing", "1.2.3", "Bar")
9+
.revise_pact
910
.create_verification(provider_version: "4.5.6")
1011
.create_verification(provider_version: "7.8.9", number: 2)
1112
.create_consumer_version("2.0.0")
1213
.create_pact
14+
.revise_pact
1315
.create_verification(provider_version: "4.5.6")
1416
end
1517
end
@@ -18,10 +20,12 @@
1820
set_up do
1921
TestDataBuilder.new
2022
.create_pact_with_hierarchy("Foo", "1.2.3", "Bar")
23+
.revise_pact
2124
.create_verification(provider_version: "4.5.6")
2225
.create_verification(provider_version: "7.8.9", number: 2)
2326
.create_consumer_version("2.0.0")
2427
.create_pact
28+
.revise_pact
2529
.create_verification(provider_version: "4.5.6")
2630
end
2731
end
@@ -30,9 +34,11 @@
3034
set_up do
3135
TestDataBuilder.new
3236
.create_pact_with_hierarchy("Foo", "1.2.3", "Bar")
37+
.revise_pact
3338
.create_verification(provider_version: "4.5.6")
3439
.create_consumer_version("1.2.4")
3540
.create_pact
41+
.revise_pact
3642
.create_verification(provider_version: "4.5.6")
3743
end
3844
end
@@ -41,9 +47,11 @@
4147
set_up do
4248
TestDataBuilder.new
4349
.create_pact_with_hierarchy("Foo", "1.2.3", "Bar")
50+
.revise_pact
4451
.create_verification(provider_version: "4.5.6")
4552
.create_consumer_version("1.2.4")
4653
.create_pact
54+
.revise_pact
4755
.create_verification(provider_version: "9.9.9", success: false)
4856
end
4957
end
@@ -52,12 +60,14 @@
5260
set_up do
5361
TestDataBuilder.new
5462
.create_pact_with_hierarchy("Foo", "1.2.3", "Bar")
63+
.revise_pact
5564
.create_verification(provider_version: "4.5.6")
5665
.use_provider("Bar")
5766
.use_provider_version("4.5.6")
5867
.create_provider_version_tag("prod")
5968
.create_consumer_version("1.2.4")
6069
.create_pact
70+
.revise_pact
6171
.create_verification(provider_version: "9.9.9", success: false)
6272
end
6373
end

0 commit comments

Comments
 (0)