Add coverage for ListAccount
follow/follow_request set up (#31896)
This commit is contained in:
parent
49cbee3836
commit
a2c4f5f5c0
2 changed files with 53 additions and 3 deletions
|
@ -20,13 +20,11 @@ class ListAccount < ApplicationRecord
|
||||||
validates :account_id, uniqueness: { scope: :list_id }
|
validates :account_id, uniqueness: { scope: :list_id }
|
||||||
validate :validate_relationship
|
validate :validate_relationship
|
||||||
|
|
||||||
before_validation :set_follow
|
before_validation :set_follow, unless: :list_owner_account_is_account?
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def set_follow
|
def set_follow
|
||||||
return if list.account_id == account.id
|
|
||||||
|
|
||||||
self.follow = Follow.find_by!(account_id: list.account_id, target_account_id: account.id)
|
self.follow = Follow.find_by!(account_id: list.account_id, target_account_id: account.id)
|
||||||
rescue ActiveRecord::RecordNotFound
|
rescue ActiveRecord::RecordNotFound
|
||||||
self.follow_request = FollowRequest.find_by!(account_id: list.account_id, target_account_id: account.id)
|
self.follow_request = FollowRequest.find_by!(account_id: list.account_id, target_account_id: account.id)
|
||||||
|
@ -39,4 +37,8 @@ class ListAccount < ApplicationRecord
|
||||||
errors.add(:follow, 'mismatched accounts') if follow_id.present? && follow.target_account_id != account_id
|
errors.add(:follow, 'mismatched accounts') if follow_id.present? && follow.target_account_id != account_id
|
||||||
errors.add(:follow_request, 'mismatched accounts') if follow_request_id.present? && follow_request.target_account_id != account_id
|
errors.add(:follow_request, 'mismatched accounts') if follow_request_id.present? && follow_request.target_account_id != account_id
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def list_owner_account_is_account?
|
||||||
|
list.account_id == account_id
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
48
spec/models/list_account_spec.rb
Normal file
48
spec/models/list_account_spec.rb
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe ListAccount do
|
||||||
|
describe 'Callbacks to set follows' do
|
||||||
|
context 'when list owner follows account' do
|
||||||
|
let!(:follow) { Fabricate :follow }
|
||||||
|
let(:list) { Fabricate :list, account: follow.account }
|
||||||
|
|
||||||
|
it 'finds and sets the follow with the list account' do
|
||||||
|
list_account = described_class.create list: list, account: follow.target_account
|
||||||
|
expect(list_account)
|
||||||
|
.to have_attributes(
|
||||||
|
follow: eq(follow),
|
||||||
|
follow_request: be_nil
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when list owner has a follow request for account' do
|
||||||
|
let!(:follow_request) { Fabricate :follow_request }
|
||||||
|
let(:list) { Fabricate :list, account: follow_request.account }
|
||||||
|
|
||||||
|
it 'finds and sets the follow request with the list account' do
|
||||||
|
list_account = described_class.create list: list, account: follow_request.target_account
|
||||||
|
expect(list_account)
|
||||||
|
.to have_attributes(
|
||||||
|
follow: be_nil,
|
||||||
|
follow_request: eq(follow_request)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when list owner is the account' do
|
||||||
|
let(:list) { Fabricate :list }
|
||||||
|
|
||||||
|
it 'does not set follow or follow request' do
|
||||||
|
list_account = described_class.create list: list, account: list.account
|
||||||
|
expect(list_account)
|
||||||
|
.to have_attributes(
|
||||||
|
follow: be_nil,
|
||||||
|
follow_request: be_nil
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue