mirror of
https://github.com/mastodon/mastodon.git
synced 2025-01-10 20:17:08 +01:00
Add Account#actor_type_application?
query method (#33525)
This commit is contained in:
parent
a8b2b474d7
commit
9b8d1fb6d1
@ -107,14 +107,14 @@ class Account < ApplicationRecord
|
||||
validates_with UniqueUsernameValidator, if: -> { will_save_change_to_username? }
|
||||
|
||||
# Remote user validations, also applies to internal actors
|
||||
validates :username, format: { with: USERNAME_ONLY_RE }, if: -> { (remote? || actor_type == 'Application') && will_save_change_to_username? }
|
||||
validates :username, format: { with: USERNAME_ONLY_RE }, if: -> { (remote? || actor_type_application?) && will_save_change_to_username? }
|
||||
|
||||
# Remote user validations
|
||||
validates :uri, presence: true, unless: :local?, on: :create
|
||||
|
||||
# Local user validations
|
||||
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: USERNAME_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' }
|
||||
validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' }
|
||||
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: USERNAME_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_username? && !actor_type_application? }
|
||||
validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? && !actor_type_application? }
|
||||
validates :display_name, length: { maximum: DISPLAY_NAME_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_display_name? }
|
||||
validates :note, note_length: { maximum: NOTE_LENGTH_LIMIT }, if: -> { local? && will_save_change_to_note? }
|
||||
validates :fields, length: { maximum: DEFAULT_FIELDS_SIZE }, if: -> { local? && will_save_change_to_fields? }
|
||||
@ -208,6 +208,10 @@ class Account < ApplicationRecord
|
||||
self.actor_type = ActiveModel::Type::Boolean.new.cast(val) ? 'Service' : 'Person'
|
||||
end
|
||||
|
||||
def actor_type_application?
|
||||
actor_type == 'Application'
|
||||
end
|
||||
|
||||
def group?
|
||||
actor_type == 'Group'
|
||||
end
|
||||
|
@ -80,6 +80,20 @@ RSpec.describe Account do
|
||||
end
|
||||
end
|
||||
|
||||
describe '#actor_type_application?' do
|
||||
context 'when the actor is not of type application' do
|
||||
subject { Fabricate.build :account, actor_type: 'Person' }
|
||||
|
||||
it { is_expected.to_not be_actor_type_application }
|
||||
end
|
||||
|
||||
context 'when the actor is of type application' do
|
||||
subject { Fabricate.build :account, actor_type: 'Application' }
|
||||
|
||||
it { is_expected.to be_actor_type_application }
|
||||
end
|
||||
end
|
||||
|
||||
describe 'Local domain user methods' do
|
||||
subject { Fabricate(:account, domain: nil, username: 'alice') }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user