diff --git a/app/jobs/scheduled/unsilence_users.rb b/app/jobs/scheduled/unsilence_users.rb new file mode 100644 index 00000000000..c609894fd52 --- /dev/null +++ b/app/jobs/scheduled/unsilence_users.rb @@ -0,0 +1,11 @@ +module Jobs + class UnsilenceUsers < Jobs::Scheduled + every 15.minutes + + def execute(args) + User.where("silenced_till IS NOT NULL AND silenced_till < now()").find_each do |user| + UserSilencer.unsilence(user, Discourse.system_user) + end + end + end +end diff --git a/spec/jobs/unsilence_users_spec.rb b/spec/jobs/unsilence_users_spec.rb new file mode 100644 index 00000000000..3f16350297a --- /dev/null +++ b/spec/jobs/unsilence_users_spec.rb @@ -0,0 +1,16 @@ +require "rails_helper" + +describe Jobs::UnsilenceUsers do + it "unsilence users" do + user = Fabricate(:user) + UserSilencer.silence(user, Discourse.system_user, silenced_till: 2.days.ago) + + user.reload + expect(user.silenced_till).to be + + Jobs::UnsilenceUsers.new.execute({}) + + user.reload + expect(user.silenced_till).to be(nil) + end +end