47 lines
1.7 KiB
Ruby
47 lines
1.7 KiB
Ruby
require 'rails_helper'
|
|
|
|
RSpec.describe Notification::DeleteNotificationJob do
|
|
let(:user) { create(:user) }
|
|
let(:account) { create(:account) }
|
|
let(:conversation) { create(:conversation) }
|
|
|
|
context 'when enqueuing the job' do
|
|
it 'enqueues the job to delete all notifications' do
|
|
expect do
|
|
described_class.perform_later(user, account, type: :all)
|
|
end.to have_enqueued_job(described_class).on_queue('low')
|
|
end
|
|
|
|
it 'enqueues the job to delete read notifications' do
|
|
expect do
|
|
described_class.perform_later(user, account, type: :read)
|
|
end.to have_enqueued_job(described_class).on_queue('low')
|
|
end
|
|
end
|
|
|
|
context 'when performing the job' do
|
|
let(:other_account) { create(:account) }
|
|
|
|
before do
|
|
create(:notification, account: account, user: user, read_at: nil)
|
|
create(:notification, account: account, user: user, read_at: Time.current)
|
|
create(:notification, account: other_account, user: user, read_at: Time.current)
|
|
end
|
|
|
|
it 'deletes all notifications for the requested account' do
|
|
described_class.perform_now(user, account, type: :all)
|
|
|
|
expect(user.notifications.where(account_id: account.id).count).to eq(0)
|
|
expect(user.notifications.where(account_id: other_account.id).count).to eq(1)
|
|
end
|
|
|
|
it 'deletes only read notifications for the requested account' do
|
|
described_class.perform_now(user, account, type: :read)
|
|
|
|
expect(user.notifications.where(account_id: account.id).count).to eq(1)
|
|
expect(user.notifications.where(account_id: account.id, read_at: nil).count).to eq(1)
|
|
expect(user.notifications.where(account_id: other_account.id).count).to eq(1)
|
|
end
|
|
end
|
|
end
|