Skip to content
Snippets Groups Projects
Commit 98f7e71a authored by Manoj M J's avatar Manoj M J :speech_balloon:
Browse files

Use cascading deletes for deleting logs upon deleting a webhook

parent 142bf826
No related branches found
No related tags found
2 merge requests!18942WIP: Resolve "Create API endpoint to generate and return personal access token",!18642Resolve "500 error when deleting group web hook due to statement timeout"
Pipeline #89120343 passed with warnings
......@@ -13,7 +13,7 @@ class WebHook < ApplicationRecord
algorithm: 'aes-256-gcm',
key: Settings.attr_encrypted_db_key_base_32
has_many :web_hook_logs, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent
has_many :web_hook_logs
validates :url, presence: true
validates :url, public_url: true, unless: ->(hook) { hook.is_a?(SystemHook) }
......
---
title: Use cascading deletes for deleting logs upon deleting a webhook
merge_request: 18642
author:
type: performance
......@@ -6,7 +6,7 @@
let(:hook) { build(:project_hook) }
describe 'associations' do
it { is_expected.to have_many(:web_hook_logs).dependent(:destroy) }
it { is_expected.to have_many(:web_hook_logs) }
end
describe 'validations' do
......@@ -85,4 +85,13 @@
hook.async_execute(data, hook_name)
end
end
describe '#destroy' do
it 'cascades to web_hook_logs' do
web_hook = create(:project_hook)
create_list(:web_hook_log, 3, web_hook: web_hook)
expect { web_hook.destroy }.to change(web_hook.web_hook_logs, :count).by(-3)
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment