瀏覽代碼

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.
master
Renato "Lond" Cerqueira 6 年之前
committed by Eugen Rochko
父節點
當前提交
14d86eb0d0
共有 2 個檔案被更改,包括 32 行新增1 行删除
  1. +1
    -1
      app/validators/status_pin_validator.rb
  2. +31
    -0
      spec/models/status_pin_spec.rb

+ 1
- 1
app/validators/status_pin_validator.rb 查看文件

@@ -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.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.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

+ 31
- 0
spec/models/status_pin_spec.rb 查看文件

@@ -37,5 +37,36 @@ RSpec.describe StatusPin, type: :model do

expect(StatusPin.new(account: account, status: status).save).to be false
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

Loading…
取消
儲存