Преглед изворни кода

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

+ 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 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…
Откажи
Сачувај