Add: #95 リストへの新着投稿通知 (#192)

* Add: テーブル定義、内部処理

* Add: 通知の定期削除処理、自動削除、テスト

* Add: Web画面の表示、設定

* Fix test
This commit is contained in:
KMY(雪あすか) 2023-10-31 08:59:31 +09:00 committed by GitHub
parent 2cc60253c4
commit f8280ca5d9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 300 additions and 9 deletions

View file

@ -5,6 +5,10 @@ require 'rails_helper'
describe FeedInsertWorker do
subject { described_class.new }
def notify?(account, type, activity_id)
Notification.exists?(account: account, type: type, activity_id: activity_id)
end
describe 'perform' do
let(:follower) { Fabricate(:account) }
let(:status) { Fabricate(:status) }
@ -48,5 +52,43 @@ describe FeedInsertWorker do
expect(instance).to have_received(:push_to_home).with(follower, status, update: nil)
end
end
context 'with notification' do
it 'skips notification when unset' do
subject.perform(status.id, follower.id)
expect(notify?(follower, 'status', status.id)).to be false
end
it 'pushes notification when read status is set' do
Fabricate(:follow, account: follower, target_account: status.account, notify: true)
subject.perform(status.id, follower.id)
expect(notify?(follower, 'status', status.id)).to be true
end
it 'skips notification when the account is registered list but not notify' do
follower.follow!(status.account)
list = Fabricate(:list, account: follower)
Fabricate(:list_account, list: list, account: status.account)
subject.perform(status.id, list.id, 'list')
list_status = ListStatus.find_by(list: list, status: status)
expect(list_status).to be_nil
end
it 'pushes notification when the account is registered list' do
follower.follow!(status.account)
list = Fabricate(:list, account: follower, notify: true)
Fabricate(:list_account, list: list, account: status.account)
subject.perform(status.id, list.id, 'list')
list_status = ListStatus.find_by(list: list, status: status)
expect(list_status).to_not be_nil
expect(notify?(follower, 'list_status', list_status.id)).to be true
end
end
end
end