From 48f3ed738f6688e75bfcb24430f0a26a5ef0d6e5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Thu, 28 Nov 2024 11:13:06 +0100 Subject: [PATCH] Fix list error messages (#33082) --- app/models/list_account.rb | 13 ++++++------- config/locales/activerecord.en.yml | 5 +++++ spec/requests/api/v1/lists/accounts_spec.rb | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/app/models/list_account.rb b/app/models/list_account.rb index 2ff8605717..cfbcdbf0d5 100644 --- a/app/models/list_account.rb +++ b/app/models/list_account.rb @@ -25,17 +25,16 @@ class ListAccount < ApplicationRecord private def set_follow - self.follow = Follow.find_by!(account_id: list.account_id, target_account_id: account.id) - rescue ActiveRecord::RecordNotFound - self.follow_request = FollowRequest.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) + self.follow_request = FollowRequest.find_by(account_id: list.account_id, target_account_id: account.id) if follow.nil? end def validate_relationship - return if list.account_id == account_id + return if list_owner_account_is_account? - errors.add(:account_id, 'follow relationship missing') if follow_id.nil? && follow_request_id.nil? - 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(:account_id, :must_be_following) if follow_id.nil? && follow_request_id.nil? + errors.add(:follow, :invalid) if follow_id.present? && follow.target_account_id != account_id + errors.add(:follow_request, :invalid) if follow_request_id.present? && follow_request.target_account_id != account_id end def list_owner_account_is_account? diff --git a/config/locales/activerecord.en.yml b/config/locales/activerecord.en.yml index e135856036..569c4c4d68 100644 --- a/config/locales/activerecord.en.yml +++ b/config/locales/activerecord.en.yml @@ -39,6 +39,11 @@ en: attributes: data: malformed: is malformed + list_account: + attributes: + account_id: + taken: is already on the list + must_be_following: must be a followed account status: attributes: reblog: diff --git a/spec/requests/api/v1/lists/accounts_spec.rb b/spec/requests/api/v1/lists/accounts_spec.rb index 3911d1f28b..da815f0635 100644 --- a/spec/requests/api/v1/lists/accounts_spec.rb +++ b/spec/requests/api/v1/lists/accounts_spec.rb @@ -95,7 +95,7 @@ RSpec.describe 'Accounts' do it 'does not add the account to the list', :aggregate_failures do subject - expect(response).to have_http_status(404) + expect(response).to have_http_status(422) expect(response.content_type) .to start_with('application/json') expect(list.accounts).to_not include(bob)