BURs: don't allow renames for tags with more than 200 posts.

Don't allow tags with more than 200 posts to be renamed. An alias must
be used instead.
This commit is contained in:
evazion
2020-12-03 14:24:16 -06:00
parent 1c9a926eac
commit 8a959b44df
2 changed files with 12 additions and 0 deletions

View File

@@ -1,4 +1,6 @@
class BulkUpdateRequestProcessor class BulkUpdateRequestProcessor
MAXIMUM_RENAME_COUNT = 200
include ActiveModel::Validations include ActiveModel::Validations
class Error < StandardError; end class Error < StandardError; end
@@ -87,6 +89,8 @@ class BulkUpdateRequestProcessor
tag = Tag.find_by_name(args[0]) tag = Tag.find_by_name(args[0])
if tag.nil? if tag.nil?
errors[:base] << "Can't rename #{args[0]} -> #{args[1]} (the '#{args[0]}' tag doesn't exist)" errors[:base] << "Can't rename #{args[0]} -> #{args[1]} (the '#{args[0]}' tag doesn't exist)"
elsif tag.post_count > MAXIMUM_RENAME_COUNT
errors[:base] << "Can't rename #{args[0]} -> #{args[1]} ('#{args[0]}' has more than #{MAXIMUM_RENAME_COUNT} posts, use an alias instead)"
end end
when :mass_update, :nuke when :mass_update, :nuke

View File

@@ -265,6 +265,14 @@ class BulkUpdateRequestTest < ActiveSupport::TestCase
assert_equal(["Can't rename aaa -> bbb (the 'aaa' tag doesn't exist)"], @bur.errors.full_messages) assert_equal(["Can't rename aaa -> bbb (the 'aaa' tag doesn't exist)"], @bur.errors.full_messages)
end end
should "fail if the old tag has more than 200 posts" do
create(:tag, name: "aaa", post_count: 1000)
@bur = build(:bulk_update_request, script: "rename aaa -> bbb")
assert_equal(false, @bur.valid?)
assert_equal(["Can't rename aaa -> bbb ('aaa' has more than 200 posts, use an alias instead)"], @bur.errors.full_messages)
end
context "when renaming a character tag with a *_(cosplay) tag" do context "when renaming a character tag with a *_(cosplay) tag" do
should "move the *_(cosplay) tag as well" do should "move the *_(cosplay) tag as well" do
@post = create(:post, tag_string: "toosaka_rin_(cosplay)") @post = create(:post, tag_string: "toosaka_rin_(cosplay)")