Skip to content

Commit

Permalink
feat: Add a job to reopen snoozed notifications (#8545)
Browse files Browse the repository at this point in the history
  • Loading branch information
muhsin-k committed Jan 5, 2024
1 parent 8a8f325 commit 6806221
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 0 deletions.
10 changes: 10 additions & 0 deletions app/jobs/notification/reopen_snoozed_notifications_job.rb
@@ -0,0 +1,10 @@
class Notification::ReopenSnoozedNotificationsJob < ApplicationJob
queue_as :low

def perform
# rubocop:disable Rails/SkipsModelValidations
Notification.where(snoozed_until: 3.days.ago..Time.current)
.update_all(snoozed_until: nil, updated_at: Time.current, last_activity_at: Time.current)
# rubocop:enable Rails/SkipsModelValidations
end
end
3 changes: 3 additions & 0 deletions app/jobs/trigger_scheduled_items_job.rb
Expand Up @@ -11,6 +11,9 @@ def perform
# Job to reopen snoozed conversations
Conversations::ReopenSnoozedConversationsJob.perform_later

# Job to reopen snoozed notifications
Notification::ReopenSnoozedNotificationsJob.perform_later

# Job to auto-resolve conversations
Account::ConversationsResolutionSchedulerJob.perform_later

Expand Down
22 changes: 22 additions & 0 deletions spec/jobs/notification/reopen_snoozed_notifications_job_spec.rb
@@ -0,0 +1,22 @@
require 'rails_helper'

RSpec.describe Notification::ReopenSnoozedNotificationsJob do
let!(:snoozed_till_5_minutes_ago) { create(:notification, snoozed_until: 5.minutes.ago) }
let!(:snoozed_till_tomorrow) { create(:notification, snoozed_until: 1.day.from_now) }
let!(:snoozed_indefinitely) { create(:notification) }

it 'enqueues the job' do
expect { described_class.perform_later }.to have_enqueued_job(described_class)
.on_queue('low')
end

context 'when called' do
it 'reopens snoozed notifications whose snooze until has passed' do
described_class.perform_now

expect(snoozed_till_5_minutes_ago.reload.snoozed_until).to be_nil
expect(snoozed_till_tomorrow.reload.snoozed_until.to_date).to eq 1.day.from_now.to_date
expect(snoozed_indefinitely.reload.snoozed_until).to be_nil
end
end
end
5 changes: 5 additions & 0 deletions spec/jobs/trigger_scheduled_items_job_spec.rb
Expand Up @@ -26,6 +26,11 @@
described_class.perform_now
end

it 'triggers Notification::ReopenSnoozedNotificationsJob' do
expect(Notification::ReopenSnoozedNotificationsJob).to receive(:perform_later).once
described_class.perform_now
end

it 'triggers Account::ConversationsResolutionSchedulerJob' do
expect(Account::ConversationsResolutionSchedulerJob).to receive(:perform_later).once
described_class.perform_now
Expand Down

0 comments on commit 6806221

Please sign in to comment.