RSpec.describe AccountsController, type: :controller do
render_views
- let(:account) { Fabricate(:user).account }
+ let(:account) { Fabricate(:account) }
shared_examples 'cachable response' do
it 'does not set cookies' do
describe 'GET #show' do
let(:current_user) { Fabricate(:user, admin: true) }
- let(:account) { Fabricate(:account, username: 'bob') }
+ let(:account) { Fabricate(:account) }
it 'returns http success' do
get :show, params: { id: account.id }
subject { post :memorialize, params: { id: account.id } }
let(:current_user) { Fabricate(:user, admin: current_user_admin) }
- let(:account) { Fabricate(:account, user: user) }
+ let(:account) { user.account }
let(:user) { Fabricate(:user, admin: target_user_admin) }
context 'when user is admin' do
subject { post :enable, params: { id: account.id } }
let(:current_user) { Fabricate(:user, admin: admin) }
- let(:account) { Fabricate(:account, user: user) }
+ let(:account) { user.account }
let(:user) { Fabricate(:user, disabled: true) }
context 'when user is admin' do
describe "GET #show" do
it "returns http success" do
- account = Fabricate(:account)
- user = Fabricate(:user, account: account)
+ user = Fabricate(:user)
- get :show, params: { account_id: account.id }
+ get :show, params: { account_id: user.account.id }
expect(response).to have_http_status(200)
end
end
it "returns http success" do
- account = Fabricate(:account)
- user = Fabricate(:user, account: account)
+ user = Fabricate(:user)
previous_email = user.email
- post :update, params: { account_id: account.id, user: { unconfirmed_email: 'test@example.com' } }
+ post :update, params: { account_id: user.account.id, user: { unconfirmed_email: 'test@example.com' } }
user.reload
expect(UserMailer).to have_received(:confirmation_instructions).with(user, user.confirmation_token, { to: 'test@example.com' })
- expect(response).to redirect_to(admin_account_path(account.id))
+ expect(response).to redirect_to(admin_account_path(user.account.id))
end
end
end
describe 'POST #create' do
it 'confirms the user' do
- account = Fabricate(:account)
- user = Fabricate(:user, confirmed_at: false, account: account)
- post :create, params: { account_id: account.id }
+ user = Fabricate(:user, confirmed_at: false)
+ post :create, params: { account_id: user.account.id }
expect(response).to redirect_to(admin_accounts_path)
expect(user.reload).to be_confirmed
end
describe 'POST #resernd' do
- subject { post :resend, params: { account_id: account.id } }
+ subject { post :resend, params: { account_id: user.account.id } }
- let(:account) { Fabricate(:account) }
- let!(:user) { Fabricate(:user, confirmed_at: confirmed_at, account: account) }
+ let!(:user) { Fabricate(:user, confirmed_at: confirmed_at) }
before do
allow(UserMailer).to receive(:confirmation_instructions) { double(:email, deliver_later: nil) }
describe Admin::ResetsController do
render_views
- let(:account) { Fabricate(:account, user: Fabricate(:user)) }
+ let(:account) { Fabricate(:account) }
before do
sign_in Fabricate(:user, admin: true), scope: :user
end
end
describe 'non-functional accounts handling' do
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read') }
controller do
describe Api::V1::Accounts::CredentialsController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
context 'with an oauth token' do
describe Api::V1::Accounts::FollowerAccountsController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:accounts') }
let(:account) { Fabricate(:account) }
let(:alice) { Fabricate(:account) }
end
context 'when requesting user is the account owner' do
- let(:user) { Fabricate(:user, account: account) }
+ let(:user) { account.user }
it 'returns all accounts, including muted accounts' do
- user.account.mute!(bob)
+ account.mute!(bob)
get :index, params: { account_id: account.id, limit: 2 }
expect(body_as_json.size).to eq 2
describe Api::V1::Accounts::FollowingAccountsController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:accounts') }
let(:account) { Fabricate(:account) }
let(:alice) { Fabricate(:account) }
end
context 'when requesting user is the account owner' do
- let(:user) { Fabricate(:user, account: account) }
+ let(:user) { account.user }
it 'returns all accounts, including muted accounts' do
- user.account.mute!(bob)
+ account.mute!(bob)
get :index, params: { account_id: account.id, limit: 2 }
expect(body_as_json.size).to eq 2
describe Api::V1::Accounts::ListsController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:lists') }
let(:account) { Fabricate(:account) }
let(:list) { Fabricate(:list, account: user.account) }
describe Api::V1::Accounts::NotesController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write:accounts') }
let(:account) { Fabricate(:account) }
let(:comment) { 'foo' }
require 'rails_helper'
RSpec.describe Api::V1::Accounts::PinsController, type: :controller do
- let(:john) { Fabricate(:user, account: Fabricate(:account, username: 'john')) }
- let(:kevin) { Fabricate(:user, account: Fabricate(:account, username: 'kevin')) }
+ let(:john) { Fabricate(:user) }
+ let(:kevin) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: john.id, scopes: 'write:accounts') }
before do
describe Api::V1::Accounts::RelationshipsController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:follows') }
before do
end
describe 'GET #index' do
- let(:simon) { Fabricate(:user, email: 'simon@example.com', account: Fabricate(:account, username: 'simon')).account }
- let(:lewis) { Fabricate(:user, email: 'lewis@example.com', account: Fabricate(:account, username: 'lewis')).account }
+ let(:simon) { Fabricate(:account) }
+ let(:lewis) { Fabricate(:account) }
before do
user.account.follow!(simon)
RSpec.describe Api::V1::Accounts::SearchController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:accounts') }
before do
describe Api::V1::Accounts::StatusesController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:statuses') }
before do
RSpec.describe Api::V1::AccountsController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:scopes) { '' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
describe 'POST #follow' do
let(:scopes) { 'write:follows' }
- let(:other_account) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob', locked: locked)).account }
+ let(:other_account) { Fabricate(:account, username: 'bob', locked: locked) }
context do
before do
describe 'POST #unfollow' do
let(:scopes) { 'write:follows' }
- let(:other_account) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:other_account) { Fabricate(:account, username: 'bob') }
before do
user.account.follow!(other_account)
describe 'POST #remove_from_followers' do
let(:scopes) { 'write:follows' }
- let(:other_account) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:other_account) { Fabricate(:account, username: 'bob') }
before do
other_account.follow!(user.account)
describe 'POST #block' do
let(:scopes) { 'write:blocks' }
- let(:other_account) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:other_account) { Fabricate(:account, username: 'bob') }
before do
user.account.follow!(other_account)
describe 'POST #unblock' do
let(:scopes) { 'write:blocks' }
- let(:other_account) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:other_account) { Fabricate(:account, username: 'bob') }
before do
user.account.block!(other_account)
describe 'POST #mute' do
let(:scopes) { 'write:mutes' }
- let(:other_account) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:other_account) { Fabricate(:account, username: 'bob') }
before do
user.account.follow!(other_account)
describe 'POST #mute with notifications set to false' do
let(:scopes) { 'write:mutes' }
- let(:other_account) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:other_account) { Fabricate(:account, username: 'bob') }
before do
user.account.follow!(other_account)
describe 'POST #mute with nonzero duration set' do
let(:scopes) { 'write:mutes' }
- let(:other_account) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:other_account) { Fabricate(:account, username: 'bob') }
before do
user.account.follow!(other_account)
describe 'POST #unmute' do
let(:scopes) { 'write:mutes' }
- let(:other_account) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:other_account) { Fabricate(:account, username: 'bob') }
before do
user.account.mute!(other_account)
render_views
let(:role) { 'moderator' }
- let(:user) { Fabricate(:user, role: role, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user, role: role) }
let(:scopes) { 'admin:read admin:write' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
- let(:account) { Fabricate(:user).account }
+ let(:account) { Fabricate(:account) }
before do
allow(controller).to receive(:doorkeeper_token) { token }
render_views
let(:role) { 'moderator' }
- let(:user) { Fabricate(:user, role: role, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user, role: role) }
let(:scopes) { 'admin:read admin:write' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
- let(:account) { Fabricate(:user).account }
+ let(:account) { Fabricate(:account) }
before do
allow(controller).to receive(:doorkeeper_token) { token }
render_views
let(:role) { 'moderator' }
- let(:user) { Fabricate(:user, role: role, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user, role: role) }
let(:scopes) { 'admin:read admin:write' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
let(:report) { Fabricate(:report) }
RSpec.describe Api::V1::BlocksController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:scopes) { 'read:blocks' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
RSpec.describe Api::V1::ConversationsController, type: :controller do
render_views
- let!(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let!(:user) { Fabricate(:user, account_attributes: { username: 'alice' }) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
- let(:other) { Fabricate(:user, account: Fabricate(:account, username: 'bob')) }
+ let(:other) { Fabricate(:user) }
before do
allow(controller).to receive(:doorkeeper_token) { token }
RSpec.describe Api::V1::DomainBlocksController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
before do
RSpec.describe Api::V1::FollowRequestsController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice', locked: true)) }
+ let(:user) { Fabricate(:user, account_attributes: { locked: true }) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
- let(:follower) { Fabricate(:account, username: 'bob') }
+ let(:follower) { Fabricate(:account) }
before do
FollowService.new.call(follower, user.account)
RSpec.describe Api::V1::InstancesController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id) }
before do
describe Api::V1::Lists::AccountsController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
let(:list) { Fabricate(:list, account: user.account) }
RSpec.describe Api::V1::ListsController, type: :controller do
render_views
- let!(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let!(:user) { Fabricate(:user) }
let!(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
let!(:list) { Fabricate(:list, account: user.account) }
RSpec.describe Api::V1::MarkersController, type: :controller do
render_views
- let!(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let!(:user) { Fabricate(:user) }
let!(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:statuses write:statuses') }
before { allow(controller).to receive(:doorkeeper_token) { token } }
RSpec.describe Api::V1::MediaController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write:media') }
before do
RSpec.describe Api::V1::MutesController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:scopes) { 'read:mutes' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
RSpec.describe Api::V1::NotificationsController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user, account_attributes: { username: 'alice' }) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
- let(:other) { Fabricate(:user, account: Fabricate(:account, username: 'bob')) }
- let(:third) { Fabricate(:user, account: Fabricate(:account, username: 'carol')) }
+ let(:other) { Fabricate(:user) }
+ let(:third) { Fabricate(:user) }
before do
allow(controller).to receive(:doorkeeper_token) { token }
RSpec.describe Api::V1::Polls::VotesController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:scopes) { 'write:statuses' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
RSpec.describe Api::V1::PollsController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:scopes) { 'read:statuses' }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
RSpec.describe Api::V1::ReportsController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
before do
describe Api::V1::Statuses::BookmarksController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write:bookmarks', application: app) }
RSpec.describe Api::V1::Statuses::FavouritedByAccountsController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, application: app, scopes: 'read:accounts') }
let(:alice) { Fabricate(:account) }
describe Api::V1::Statuses::FavouritesController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write:favourites', application: app) }
describe Api::V1::Statuses::HistoriesController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:statuses', application: app) }
describe Api::V1::Statuses::MutesController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write:mutes', application: app) }
describe Api::V1::Statuses::PinsController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write:accounts', application: app) }
RSpec.describe Api::V1::Statuses::RebloggedByAccountsController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, application: app, scopes: 'read:accounts') }
let(:alice) { Fabricate(:account) }
describe Api::V1::Statuses::ReblogsController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'write:statuses', application: app) }
describe Api::V1::Statuses::SourcesController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:statuses', application: app) }
RSpec.describe Api::V1::StatusesController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:app) { Fabricate(:application, name: 'Test app', website: 'http://testapp.com') }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, application: app, scopes: scopes) }
describe Api::V1::Timelines::HomeController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice'), current_sign_in_at: 1.day.ago) }
+ let(:user) { Fabricate(:user, current_sign_in_at: 1.day.ago) }
before do
allow(controller).to receive(:doorkeeper_token) { token }
describe Api::V1::Timelines::ListController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:list) { Fabricate(:list, account: user.account) }
before do
end
context 'with the wrong user context' do
- let(:other_user) { Fabricate(:user, account: Fabricate(:account, username: 'bob')) }
+ let(:other_user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: other_user.id, scopes: 'read') }
describe 'GET #show' do
describe Api::V1::Timelines::PublicController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
before do
allow(controller).to receive(:doorkeeper_token) { token }
describe Api::V1::Timelines::TagController do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
before do
allow(controller).to receive(:doorkeeper_token) { token }
RSpec.describe Api::V2::SearchController, type: :controller do
render_views
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:user) { Fabricate(:user) }
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:search') }
before do
it 'returns account if signed in' do
account = Fabricate(:account)
- sign_in(Fabricate(:user, account: account))
+ sign_in(account.user)
expect(controller.view_context.current_account).to eq account
end
end
end
it 'does nothing if user who signed in is not suspended' do
- sign_in(Fabricate(:user, account: Fabricate(:account, suspended: false)))
+ sign_in(Fabricate(:account, suspended: false).user)
get 'success'
expect(response).to have_http_status(200)
end
it 'redirects to account status page' do
- sign_in(Fabricate(:user, account: Fabricate(:account, suspended: true)))
+ sign_in(Fabricate(:account, suspended: true).user)
get 'success'
expect(response).to redirect_to(edit_user_registration_path)
end
end
it 'does nothing if user already exists' do
- Fabricate(:user, account: Fabricate(:account, username: 'test'))
+ Fabricate(:account, username: 'test')
subject
end
end
context 'with a suspended user' do
+ before do
+ user.account.suspend!
+ end
+
it 'redirects to home after sign out' do
- Fabricate(:account, user: user, suspended: true)
sign_in(user, scope: :user)
delete :destroy
end
context 'using a valid email and existing user' do
- let(:user) do
- account = Fabricate.build(:account, username: 'pam_user1')
+ let!(:user) do
+ account = Fabricate.build(:account, username: 'pam_user1', user: nil)
account.save!(validate: false)
user = Fabricate(:user, email: 'pam@example.com', password: nil, account: account, external: true)
user
describe 'when signed in' do
let(:user) { Fabricate(:user) }
- let(:account) { Fabricate(:account, user: user) }
before do
sign_in(user)
describe 'when signed in' do
let!(:user) { Fabricate(:user) }
- let!(:account) { user.account }
+ let(:account) { user.account }
before do
sign_in(user)
context 'when account is suspended' do
it 'returns http gone' do
- account = Fabricate(:account, suspended: true, user: Fabricate(:user))
+ account = Fabricate(:account, suspended: true)
get 'success', params: { account_username: account.username }
expect(response).to have_http_status(410)
end
context 'when account is not suspended' do
it 'assigns @account' do
- account = Fabricate(:account, user: Fabricate(:user))
+ account = Fabricate(:account)
get 'success', params: { account_username: account.username }
expect(assigns(:account)).to eq account
end
it 'sets link headers' do
- account = Fabricate(:account, username: 'username', user: Fabricate(:user))
+ account = Fabricate(:account, username: 'username')
get 'success', params: { account_username: 'username' }
expect(response.headers['Link'].to_s).to eq '<http://test.host/.well-known/webfinger?resource=acct%3Ausername%40cb6e6126.ngrok.io>; rel="lrdd"; type="application/jrd+json", <https://cb6e6126.ngrok.io/users/username>; rel="alternate"; type="application/activity+json"'
end
it 'returns http success' do
- account = Fabricate(:account, user: Fabricate(:user))
+ account = Fabricate(:account)
get 'success', params: { account_username: account.username }
expect(response).to have_http_status(200)
end
end
end
- let(:user) { Fabricate(:user, account: Fabricate(:account)) }
- let(:target) { Fabricate(:user, account: Fabricate(:account)) }
- let(:hoge) { Hoge.new(user.account) }
+ let(:user) { Fabricate(:account) }
+ let(:target) { Fabricate(:account) }
+ let(:hoge) { Hoge.new(user) }
describe '#log_action' do
it 'creates Admin::ActionLog' do
expect do
- hoge.log_action(:create, target.account)
+ hoge.log_action(:create, target)
end.to change { Admin::ActionLog.count }.by(1)
end
end
describe FollowerAccountsController do
render_views
- let(:alice) { Fabricate(:user).account }
+ let(:alice) { Fabricate(:account) }
let(:follower0) { Fabricate(:account) }
let(:follower1) { Fabricate(:account) }
describe FollowingAccountsController do
render_views
- let(:alice) { Fabricate(:user).account }
+ let(:alice) { Fabricate(:account) }
let(:followee0) { Fabricate(:account) }
let(:followee1) { Fabricate(:account) }
end
context 'when suspended' do
- let(:user) { Fabricate(:user, account_attributes: { username: 'alice', suspended_at: Time.now.utc }) }
+ let(:user) { Fabricate(:user, account_attributes: { suspended_at: Time.now.utc }) }
it 'returns http forbidden' do
get :show
end
context 'when suspended' do
- let(:user) { Fabricate(:user, account_attributes: { username: 'alice', suspended_at: Time.now.utc }) }
+ let(:user) { Fabricate(:user, account_attributes: { suspended_at: Time.now.utc }) }
it 'returns http forbidden' do
expect(response).to have_http_status(403)
context 'when user is sign in' do
subject { get :show }
- let(:user) { Fabricate(:user, account: account) }
- let(:account) { Fabricate(:account, moved_to_account: moved_to_account) }
+ let(:user) { Fabricate(:account, moved_to_account: moved_to_account).user }
before { sign_in user, scope: :user }
RSpec.describe Settings::ProfilesController, type: :controller do
render_views
+ let!(:user) { Fabricate(:user) }
+ let(:account) { user.account }
+
before do
- @user = Fabricate(:user)
- sign_in @user, scope: :user
+ sign_in user, scope: :user
end
describe "GET #show" do
end
describe 'PUT #update' do
+ before do
+ user.account.update(display_name: 'Old name')
+ end
+
it 'updates the user profile' do
allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async)
- account = Fabricate(:account, user: @user, display_name: 'Old name')
-
put :update, params: { account: { display_name: 'New name' } }
expect(account.reload.display_name).to eq 'New name'
expect(response).to redirect_to(settings_profile_path)
describe 'PUT #update with new profile image' do
it 'updates profile image' do
allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async)
- account = Fabricate(:account, user: @user, display_name: 'AvatarTest')
expect(account.avatar.instance.avatar_file_name).to be_nil
put :update, params: { account: { avatar: fixture_file_upload('avatar.gif', 'image/gif') } }
describe 'PUT #update with oversized image' do
it 'gives the user an error message' do
allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async)
- account = Fabricate(:account, user: @user, display_name: 'AvatarTest')
put :update, params: { account: { avatar: fixture_file_upload('4096x4097.png', 'image/png') } }
expect(response.body).to include('images are not supported')
end
private_key { private_key }
suspended_at { |attrs| attrs[:suspended] ? Time.now.utc : nil }
silenced_at { |attrs| attrs[:silenced] ? Time.now.utc : nil }
+ user { |attrs| attrs[:domain].nil? ? Fabricate.build(:user, account: nil) : nil }
end
Fabricator(:user) do
- account
+ account { Fabricate.build(:account, user: nil) }
email { sequence(:email) { |i| "#{i}#{Faker::Internet.email}" } }
password "123456789"
confirmed_at { Time.zone.now }
RSpec.describe AdminMailer, type: :mailer do
describe '.new_report' do
- let(:sender) { Fabricate(:account, username: 'John', user: Fabricate(:user)) }
- let(:recipient) { Fabricate(:account, username: 'Mike', user: Fabricate(:user, locale: :en)) }
+ let(:sender) { Fabricate(:account, username: 'John') }
+ let(:recipient) { Fabricate(:account, username: 'Mike') }
let(:report) { Fabricate(:report, account: sender, target_account: recipient) }
let(:mail) { described_class.new_report(recipient, report) }
+ before do
+ recipient.user.update(locale: :en)
+ end
+
it 'renders the headers' do
expect(mail.subject).to eq("New report for cb6e6126.ngrok.io (##{report.id})")
expect(mail.to).to eq [recipient.user_email]
require "rails_helper"
RSpec.describe NotificationMailer, type: :mailer do
- let(:receiver) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
+ let(:receiver) { Fabricate(:user) }
let(:sender) { Fabricate(:account, username: 'bob') }
let(:foreign_status) { Fabricate(:status, account: sender, text: 'The body of the foreign status') }
let(:own_status) { Fabricate(:status, account: receiver.account, text: 'The body of the own status') }
end
context 'when the account is of a local user' do
- let!(:subject) { Fabricate(:account, user: Fabricate(:user, email: 'foo+bar@domain.org')) }
+ let!(:subject) { Fabricate(:user, email: 'foo+bar@domain.org').account }
it 'creates a canonical domain block' do
subject.suspend!
describe '#save!' do
subject { account_action.save! }
- let(:account) { Fabricate(:account, user: Fabricate(:user, admin: true)) }
- let(:target_account) { Fabricate(:account, user: Fabricate(:user)) }
+ let(:account) { Fabricate(:user, admin: true).account }
+ let(:target_account) { Fabricate(:account) }
let(:type) { 'disable' }
before do
end
it 'filters out silenced accounts' do
- account = Fabricate(:account)
silenced_account = Fabricate(:account, silenced: true)
status = Fabricate(:status, account: account)
silenced_status = Fabricate(:status, account: silenced_account)
context 'with language preferences' do
it 'excludes statuses in languages not allowed by the account user' do
- user = Fabricate(:user, chosen_languages: [:en, :es])
- @account.update(user: user)
+ @account.user.update(chosen_languages: [:en, :es])
en_status = Fabricate(:status, language: 'en')
es_status = Fabricate(:status, language: 'es')
fr_status = Fabricate(:status, language: 'fr')
end
it 'includes all languages when user does not have a setting' do
- user = Fabricate(:user, chosen_languages: nil)
- @account.update(user: user)
+ @account.user.update(chosen_languages: nil)
en_status = Fabricate(:status, language: 'en')
es_status = Fabricate(:status, language: 'es')
end
it 'includes all languages when account does not have a user' do
- expect(@account.user).to be_nil
+ @account.update(user: nil)
+
en_status = Fabricate(:status, language: 'en')
es_status = Fabricate(:status, language: 'es')
end
it "returns 'private' if user has not configured default privacy setting and account is locked" do
- user = Fabricate(:user, account: Fabricate(:account, locked: true))
+ user = Fabricate(:account, locked: true).user
expect(user.setting_default_privacy).to eq 'private'
end
it "returns 'public' if user has not configured default privacy setting and account is not locked" do
- user = Fabricate(:user, account: Fabricate(:account, locked: false))
+ user = Fabricate(:account, locked: false).user
expect(user.setting_default_privacy).to eq 'public'
end
end
it_behaves_like 'Settings-extended' do
def create!
- User.create!(account: Fabricate(:account), email: 'foo@mastodon.space', password: 'abcd1234', agreement: true)
+ User.create!(account: Fabricate(:account, user: nil), email: 'foo@mastodon.space', password: 'abcd1234', agreement: true)
end
def fabricate
RSpec.describe AccountModerationNotePolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :create? do
context 'staff' do
end
context 'neither admin nor owner' do
- let(:kevin) { Fabricate(:user).account }
+ let(:kevin) { Fabricate(:account) }
it 'denies to destroy' do
expect(subject).to_not permit(kevin, account_moderation_note)
RSpec.describe AccountPolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
- let(:alice) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
+ let(:alice) { Fabricate(:account) }
permissions :index? do
context 'staff' do
RSpec.describe BackupPolicy do
let(:subject) { described_class }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :create? do
context 'not user_signed_in?' do
RSpec.describe CustomEmojiPolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :index?, :enable?, :disable? do
context 'staff' do
RSpec.describe DomainBlockPolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :index?, :show?, :create?, :destroy? do
context 'admin' do
RSpec.describe EmailDomainBlockPolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :index?, :create?, :destroy? do
context 'admin' do
RSpec.describe InstancePolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :index?, :show?, :destroy? do
context 'admin' do
RSpec.describe InvitePolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :index? do
context 'staff?' do
RSpec.describe RelayPolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :update? do
context 'admin?' do
RSpec.describe ReportNotePolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :create? do
context 'staff?' do
RSpec.describe ReportPolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :update?, :index?, :show? do
context 'staff?' do
RSpec.describe SettingsPolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :update?, :show? do
context 'admin?' do
RSpec.describe TagPolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :index?, :show?, :update? do
context 'staff?' do
RSpec.describe UserPolicy do
let(:subject) { described_class }
let(:admin) { Fabricate(:user, admin: true).account }
- let(:john) { Fabricate(:user).account }
+ let(:john) { Fabricate(:account) }
permissions :reset_password?, :change_email? do
context 'staff?' do
subject { AuthorizeFollowService.new }
describe 'local' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account, username: 'bob') }
before do
FollowRequest.create(account: bob, target_account: sender)
end
describe 'remote ActivityPub' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob', domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox')).account }
+ let(:bob) { Fabricate(:account, username: 'bob', domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox') }
before do
FollowRequest.create(account: bob, target_account: sender)
let!(:alice) { Fabricate(:account) }
let!(:bob) { Fabricate(:account, username: 'bob', domain: 'example.com') }
- let!(:jeff) { Fabricate(:user).account }
+ let!(:jeff) { Fabricate(:account) }
let!(:hank) { Fabricate(:account, username: 'hank', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
let(:status1) { PostStatusService.new.call(alice, text: 'Hello @bob@example.com') }
subject { BlockService.new }
describe 'local' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account, username: 'bob') }
before do
subject.call(sender, bob)
end
describe 'remote ActivityPub' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }
+ let(:bob) { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
before do
stub_request(:post, 'http://example.com/inbox').to_return(status: 200)
RSpec.describe FanOutOnWriteService, type: :service do
let(:last_active_at) { Time.now.utc }
- let!(:alice) { Fabricate(:user, current_sign_in_at: last_active_at, account: Fabricate(:account, username: 'alice')).account }
- let!(:bob) { Fabricate(:user, current_sign_in_at: last_active_at, account: Fabricate(:account, username: 'bob')).account }
- let!(:tom) { Fabricate(:user, current_sign_in_at: last_active_at, account: Fabricate(:account, username: 'tom')).account }
+ let!(:alice) { Fabricate(:user, current_sign_in_at: last_active_at).account }
+ let!(:bob) { Fabricate(:user, current_sign_in_at: last_active_at, account_attributes: { username: 'bob' }).account }
+ let!(:tom) { Fabricate(:user, current_sign_in_at: last_active_at).account }
subject { described_class.new }
subject { FavouriteService.new }
describe 'local' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account) }
let(:status) { Fabricate(:status, account: bob) }
before do
end
describe 'remote ActivityPub' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, protocol: :activitypub, username: 'bob', domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }
+ let(:bob) { Fabricate(:account, protocol: :activitypub, username: 'bob', domain: 'example.com', inbox_url: 'http://example.com/inbox') }
let(:status) { Fabricate(:status, account: bob) }
before do
context 'local account' do
describe 'locked account' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, locked: true, username: 'bob')).account }
+ let(:bob) { Fabricate(:account, locked: true, username: 'bob') }
before do
subject.call(sender, bob)
end
describe 'locked account, no reblogs' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, locked: true, username: 'bob')).account }
+ let(:bob) { Fabricate(:account, locked: true, username: 'bob') }
before do
subject.call(sender, bob, reblogs: false)
end
describe 'unlocked account, from silenced account' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account, username: 'bob') }
before do
sender.touch(:silenced_at)
end
describe 'unlocked account, from a muted account' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account, username: 'bob') }
before do
bob.mute!(sender)
end
describe 'unlocked account' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account, username: 'bob') }
before do
subject.call(sender, bob)
end
describe 'unlocked account, no reblogs' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account, username: 'bob') }
before do
subject.call(sender, bob, reblogs: false)
end
describe 'already followed account' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account, username: 'bob') }
before do
sender.follow!(bob)
end
describe 'already followed account, turning reblogs off' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account, username: 'bob') }
before do
sender.follow!(bob, reblogs: true)
end
describe 'already followed account, turning reblogs on' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account, username: 'bob') }
before do
sender.follow!(bob, reblogs: false)
end
context 'remote ActivityPub account' do
- let(:bob) { Fabricate(:user, account: Fabricate(:account, username: 'bob', domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox')).account }
+ let(:bob) { Fabricate(:account, username: 'bob', domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox') }
before do
stub_request(:post, "http://example.com/inbox").to_return(:status => 200, :body => "", :headers => {})
subject { RejectFollowService.new }
describe 'local' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account) }
before do
FollowRequest.create(account: bob, target_account: sender)
end
describe 'remote ActivityPub' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob', domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox')).account }
+ let(:bob) { Fabricate(:account, username: 'bob', domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox') }
before do
FollowRequest.create(account: bob, target_account: sender)
RSpec.describe RemoveStatusService, type: :service do
subject { RemoveStatusService.new }
- let!(:alice) { Fabricate(:account, user: Fabricate(:user)) }
+ let!(:alice) { Fabricate(:account) }
let!(:bob) { Fabricate(:account, username: 'bob', domain: 'example.com') }
let!(:jeff) { Fabricate(:account) }
let!(:hank) { Fabricate(:account, username: 'hank', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
RSpec.describe ReportService, type: :service do
subject { described_class.new }
- let(:source_account) { Fabricate(:user).account }
+ let(:source_account) { Fabricate(:account) }
context 'for a remote account' do
let(:remote_account) { Fabricate(:account, domain: 'example.com', protocol: :activitypub, inbox_url: 'http://example.com/inbox') }
subject { UnblockService.new }
describe 'local' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account) }
before do
sender.block!(bob)
end
describe 'remote ActivityPub' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }
+ let(:bob) { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
before do
sender.block!(bob)
subject { UnfollowService.new }
describe 'local' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:bob) { Fabricate(:account, username: 'bob') }
before do
sender.follow!(bob)
end
describe 'remote ActivityPub' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }
+ let(:bob) { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
before do
sender.follow!(bob)
end
describe 'remote ActivityPub (reverse)' do
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox')).account }
+ let(:bob) { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
before do
bob.follow!(sender)
describe 'switching form locked to unlocked accounts' do
let(:account) { Fabricate(:account, locked: true) }
- let(:alice) { Fabricate(:user, email: 'alice@example.com', account: Fabricate(:account, username: 'alice')).account }
- let(:bob) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
- let(:eve) { Fabricate(:user, email: 'eve@example.com', account: Fabricate(:account, username: 'eve')).account }
+ let(:alice) { Fabricate(:account) }
+ let(:bob) { Fabricate(:account) }
+ let(:eve) { Fabricate(:account) }
before do
bob.touch(:silenced_at)
require 'rails_helper'
describe MoveWorker do
- let(:local_follower) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
- let(:blocking_account) { Fabricate(:user, email: 'bar@example.com', account: Fabricate(:account, username: 'bar')).account }
- let(:muting_account) { Fabricate(:user, email: 'foo@example.com', account: Fabricate(:account, username: 'foo')).account }
+ let(:local_follower) { Fabricate(:account) }
+ let(:blocking_account) { Fabricate(:account) }
+ let(:muting_account) { Fabricate(:account) }
let(:source_account) { Fabricate(:account, protocol: :activitypub, domain: 'example.com') }
let(:target_account) { Fabricate(:account, protocol: :activitypub, domain: 'example.com') }
let(:local_user) { Fabricate(:user) }
end
context 'target account is local' do
- let(:target_account) { Fabricate(:user, email: 'alice@example.com', account: Fabricate(:account, username: 'alice')).account }
+ let(:target_account) { Fabricate(:account) }
describe 'perform' do
it 'calls UnfollowFollowWorker' do
end
context 'both target and source accounts are local' do
- let(:target_account) { Fabricate(:user, email: 'alice@example.com', account: Fabricate(:account, username: 'alice')).account }
- let(:source_account) { Fabricate(:user, email: 'alice_@example.com', account: Fabricate(:account, username: 'alice_')).account }
+ let(:target_account) { Fabricate(:account) }
+ let(:source_account) { Fabricate(:account) }
describe 'perform' do
it 'calls makes local followers follow the target account' do
include_examples 'block and mute handling'
it 'does not fail when a local user is already following both accounts' do
- double_follower = Fabricate(:user, email: 'eve@example.com', account: Fabricate(:account, username: 'eve')).account
+ double_follower = Fabricate(:account)
double_follower.follow!(source_account)
double_follower.follow!(target_account)
subject.perform(source_account.id, target_account.id)
require 'rails_helper'
describe UnfollowFollowWorker do
- let(:local_follower) { Fabricate(:user, email: 'bob@example.com', account: Fabricate(:account, username: 'bob')).account }
+ let(:local_follower) { Fabricate(:account) }
let(:source_account) { Fabricate(:account) }
let(:target_account) { Fabricate(:account) }
let(:show_reblogs) { true }