FEATURE: Add support for user badge revocation webhook events (#21204)

Currently, only user badge grants emit webhook events. This change
extends the `user_badge` webhook to emit user badge revocation events.

A new `user_badge_revoked` event has been introduced instead of relying
on the existing `user_badge_removed` event. `user_badge_removed` emitted
just the `badge_id` and `user_id` which aren't helpful for generating a
meaningful webhook payload for revoked(deleted) user badges.

The new event emits  the user badge object.
This commit is contained in:
Selase Krakani
2023-04-24 20:36:40 +00:00
committed by GitHub
parent c03f83bbea
commit cdf1589a85
5 changed files with 64 additions and 8 deletions

View File

@ -31,6 +31,22 @@ RSpec.describe UserBadge do
end
end
describe "#destroy" do
it "triggers the 'user_badge_revoked' DiscourseEvent" do
user_badge =
UserBadge.create(
badge: badge,
user: user,
granted_at: Time.zone.now,
granted_by: Discourse.system_user,
)
event = DiscourseEvent.track(:user_badge_revoked) { user_badge.destroy! }
expect(event).to be_present
end
end
describe "featured rank" do
fab!(:user) { Fabricate(:user) }
fab!(:user_badge_tl1) do