Skip to content

Commit 288475f

Browse files
committed
feat(tagged-pact-versions): ensure triggered webhooks are deleted when pact versions are deleted
1 parent 8624861 commit 288475f

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

lib/pact_broker/pacts/repository.rb

+1
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ def find_all_pact_versions_between consumer_name, options
8383

8484
def delete_all_pact_versions_between consumer_name, options
8585
ids = find_all_database_versions_between(consumer_name, options).select_for_subquery(:id)
86+
webhook_repository.delete_triggered_webhooks_by_pact_publication_ids(ids)
8687
PactPublication.where(id: ids).delete
8788
end
8889

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
describe "Deleting tagged pact versions" do
2+
3+
let(:path) { "/pacts/provider/Bar/consumer/Foo/tag/prod" }
4+
5+
subject { delete(path) }
6+
7+
context "when the pact exists" do
8+
before do
9+
TestDataBuilder.new
10+
.create_pact_with_hierarchy("Foo", "1.2.3", "Bar")
11+
.create_consumer_version_tag("prod")
12+
end
13+
14+
it "deletes the pact" do
15+
expect{ subject }.to change{ PactBroker::Pacts::PactPublication.count }.by(-1)
16+
end
17+
18+
it "returns a 204" do
19+
expect(subject.status).to be 204
20+
end
21+
end
22+
23+
context "when the pact does not exist" do
24+
it "returns a 404 Not Found" do
25+
expect(subject.status).to be 404
26+
end
27+
end
28+
end

spec/lib/pact_broker/pacts/repository_spec.rb

+3
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,9 @@ module Pacts
305305
.create_consumer_version("1.2.3")
306306
.create_provider(provider_name)
307307
.create_pact
308+
.create_webhook
309+
.create_triggered_webhook
310+
.create_webhook_execution
308311
.create_consumer_version("2.3.4")
309312
.create_consumer_version_tag("prod")
310313
.create_consumer_version_tag("branch")

0 commit comments

Comments
 (0)