diff --git a/app/models/reviewable.rb b/app/models/reviewable.rb index af23f150e25..b0142d1eb3f 100644 --- a/app/models/reviewable.rb +++ b/app/models/reviewable.rb @@ -38,6 +38,9 @@ class Reviewable < ActiveRecord::Base after_commit(on: :create) do DiscourseEvent.trigger(:reviewable_created, self) + end + + after_commit(on: [:create, :update]) do Jobs.enqueue(:notify_reviewable, reviewable_id: self.id) if pending? end diff --git a/spec/models/reviewable_spec.rb b/spec/models/reviewable_spec.rb index 6d4c5e3832c..08d36bf1a56 100644 --- a/spec/models/reviewable_spec.rb +++ b/spec/models/reviewable_spec.rb @@ -237,6 +237,7 @@ RSpec.describe Reviewable, type: :model do context "message bus notifications" do fab!(:moderator) { Fabricate(:moderator) } + let(:post) { Fabricate(:post) } it "triggers a notification on create" do reviewable = Fabricate(:reviewable_queued_post) @@ -245,6 +246,18 @@ RSpec.describe Reviewable, type: :model do expect(job["args"].first["reviewable_id"]).to eq(reviewable.id) end + it "triggers a notification on update" do + reviewable = PostActionCreator.spam(moderator, post).reviewable + reviewable.perform(moderator, :disagree) + + expect { PostActionCreator.spam(Fabricate(:user), post) } + .to change { reviewable.reload.status } + .from(Reviewable.statuses[:rejected]) + .to(Reviewable.statuses[:pending]) + .and change { Jobs::NotifyReviewable.jobs.size } + .by(1) + end + it "triggers a notification on pending -> approve" do reviewable = Fabricate(:reviewable_queued_post)