ソースを参照

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

読み込み中…
キャンセル
保存