mirror of
https://github.com/mastodon/mastodon.git
synced 2024-12-22 17:17:32 +00:00
Allow more than the max pins if account is not local (#7105)
Sidekiq sometimes throws errors for users that have more pinned items than the allowed by the local instance. It should only validate the number of pins for local accounts.
This commit is contained in:
parent
50529cbceb
commit
14d86eb0d0
|
@ -5,6 +5,6 @@ class StatusPinValidator < ActiveModel::Validator
|
||||||
pin.errors.add(:base, I18n.t('statuses.pin_errors.reblog')) if pin.status.reblog?
|
pin.errors.add(:base, I18n.t('statuses.pin_errors.reblog')) if pin.status.reblog?
|
||||||
pin.errors.add(:base, I18n.t('statuses.pin_errors.ownership')) if pin.account_id != pin.status.account_id
|
pin.errors.add(:base, I18n.t('statuses.pin_errors.ownership')) if pin.account_id != pin.status.account_id
|
||||||
pin.errors.add(:base, I18n.t('statuses.pin_errors.private')) unless %w(public unlisted).include?(pin.status.visibility)
|
pin.errors.add(:base, I18n.t('statuses.pin_errors.private')) unless %w(public unlisted).include?(pin.status.visibility)
|
||||||
pin.errors.add(:base, I18n.t('statuses.pin_errors.limit')) if pin.account.status_pins.count > 4
|
pin.errors.add(:base, I18n.t('statuses.pin_errors.limit')) if pin.account.status_pins.count > 4 && pin.account.local?
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -37,5 +37,36 @@ RSpec.describe StatusPin, type: :model do
|
||||||
|
|
||||||
expect(StatusPin.new(account: account, status: status).save).to be false
|
expect(StatusPin.new(account: account, status: status).save).to be false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
max_pins = 5
|
||||||
|
it 'does not allow pins above the max' do
|
||||||
|
account = Fabricate(:account)
|
||||||
|
status = []
|
||||||
|
|
||||||
|
(max_pins + 1).times do |i|
|
||||||
|
status[i] = Fabricate(:status, account: account)
|
||||||
|
end
|
||||||
|
|
||||||
|
max_pins.times do |i|
|
||||||
|
expect(StatusPin.new(account: account, status: status[i]).save).to be true
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(StatusPin.new(account: account, status: status[max_pins]).save).to be false
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'allows pins above the max for remote accounts' do
|
||||||
|
account = Fabricate(:account, domain: 'remote', username: 'bob', url: 'https://remote/')
|
||||||
|
status = []
|
||||||
|
|
||||||
|
(max_pins + 1).times do |i|
|
||||||
|
status[i] = Fabricate(:status, account: account)
|
||||||
|
end
|
||||||
|
|
||||||
|
max_pins.times do |i|
|
||||||
|
expect(StatusPin.new(account: account, status: status[i]).save).to be true
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(StatusPin.new(account: account, status: status[max_pins]).save).to be true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue