Files
app
bin
config
db
docs
lib
log
public
spec
controllers
admin
api
activitypub
v1
accounts_controller_spec.rb
apps_controller_spec.rb
blocks_controller_spec.rb
favourites_controller_spec.rb
follow_requests_controller_spec.rb
follows_controller_spec.rb
media_controller_spec.rb
mutes_controller_spec.rb
notifications_controller_spec.rb
statuses_controller_spec.rb
timelines_controller_spec.rb
oembed_controller_spec.rb
push_controller_spec.rb
salmon_controller_spec.rb
subscriptions_controller_spec.rb
auth
concerns
oauth
settings
well_known
about_controller_spec.rb
account_follow_controller_spec.rb
account_unfollow_controller_spec.rb
accounts_controller_spec.rb
authorize_follows_controller_spec.rb
follower_accounts_controller_spec.rb
following_accounts_controller_spec.rb
home_controller_spec.rb
media_controller_spec.rb
remote_follow_controller_spec.rb
statuses_controller_spec.rb
stream_entries_controller_spec.rb
tags_controller_spec.rb
fabricators
features
fixtures
helpers
javascript
lib
mailers
models
presenters
requests
routing
services
support
views
workers
rails_helper.rb
spec_helper.rb
storybook
streaming
vendor
.babelrc
.buildpacks
.codeclimate.yml
.dockerignore
.editorconfig
.env.production.sample
.env.test
.env.vagrant
.eslintignore
.eslintrc.yml
.foreman
.gitignore
.haml-lint.yml
.nvmrc
.postcssrc.yml
.rspec
.rubocop.yml
.ruby-version
.scss-lint.yml
.slugignore
.travis.yml
CONTRIBUTING.md
Capfile
Dockerfile
Gemfile
Gemfile.lock
ISSUE_TEMPLATE.md
LICENSE
Procfile
Procfile.dev
README.md
Rakefile
Vagrantfile
app.json
config.ru
docker-compose.yml
package.json
scalingo.json
yarn.lock
hometown/spec/controllers/api/v1/notifications_controller_spec.rb
Matt Jankowski b155e6ccf5 Fix issue with intermittent api/v1/notifications failure ()
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.
2017-04-12 15:53:54 +02:00

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