mirror of
https://github.com/mastodon/mastodon
synced 2024-12-15 23:28:14 +09:00
b155e6ccf5
The spec was checking the activity_id of the activities held in notifications within the controller. Because the activities are different models, it is possible that they are created with the same database IDs, and when they are this spec fails because an activity which should not count as a match is counted as one.
77 lines
2.3 KiB
Ruby
77 lines
2.3 KiB
Ruby
require 'rails_helper'
|
|
|
|
RSpec.describe Api::V1::NotificationsController, type: :controller do
|
|
render_views
|
|
|
|
let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
|
|
let(:token) { double acceptable?: true, resource_owner_id: user.id }
|
|
let(:other) { Fabricate(:user, account: Fabricate(:account, username: 'bob')) }
|
|
|
|
before do
|
|
allow(controller).to receive(:doorkeeper_token) { token }
|
|
end
|
|
|
|
describe 'GET #index' do
|
|
before do
|
|
first_status = PostStatusService.new.call(user.account, 'Test')
|
|
@reblog_of_first_status = ReblogService.new.call(other.account, first_status)
|
|
mentioning_status = PostStatusService.new.call(other.account, 'Hello @alice')
|
|
@mention_from_status = mentioning_status.mentions.first
|
|
@favourite = FavouriteService.new.call(other.account, first_status)
|
|
@follow = FollowService.new.call(other.account, 'alice')
|
|
end
|
|
|
|
describe 'with no options' do
|
|
before do
|
|
get :index
|
|
end
|
|
|
|
it 'returns http success' do
|
|
expect(response).to have_http_status(:success)
|
|
end
|
|
|
|
it 'includes reblog' do
|
|
expect(assigns(:notifications).map(&:activity)).to include(@reblog_of_first_status)
|
|
end
|
|
|
|
it 'includes mention' do
|
|
expect(assigns(:notifications).map(&:activity)).to include(@mention_from_status)
|
|
end
|
|
|
|
it 'includes favourite' do
|
|
expect(assigns(:notifications).map(&:activity)).to include(@favourite)
|
|
end
|
|
|
|
it 'includes follow' do
|
|
expect(assigns(:notifications).map(&:activity)).to include(@follow)
|
|
end
|
|
end
|
|
|
|
describe 'with excluded mentions' do
|
|
before do
|
|
get :index, params: { exclude_types: ['mention'] }
|
|
end
|
|
|
|
it 'returns http success' do
|
|
expect(response).to have_http_status(:success)
|
|
end
|
|
|
|
it 'includes reblog' do
|
|
expect(assigns(:notifications).map(&:activity)).to include(@reblog_of_first_status)
|
|
end
|
|
|
|
it 'excludes mention' do
|
|
expect(assigns(:notifications).map(&:activity)).to_not include(@mention_from_status)
|
|
end
|
|
|
|
it 'includes favourite' do
|
|
expect(assigns(:notifications).map(&:activity)).to include(@favourite)
|
|
end
|
|
|
|
it 'includes follow' do
|
|
expect(assigns(:notifications).map(&:activity)).to include(@follow)
|
|
end
|
|
end
|
|
end
|
|
end
|