fixes #2427: Prevent removing all tags from post

This commit is contained in:
r888888888
2015-07-21 14:14:08 -07:00
parent 05da47cac8
commit dc34c68353
3 changed files with 19 additions and 0 deletions

View File

@@ -481,6 +481,12 @@ class Post < ActiveRecord::Base
def update_tag_post_counts
decrement_tags = tag_array_was - tag_array
if decrement_tags.size > 1 && !CurrentUser.is_builder? && CurrentUser.created_at > 1.week.ago
self.errors.add(:updater_id, "must have an account at least 1 week old to remove tags")
return false
end
increment_tags = tag_array - tag_array_was
if increment_tags.any?
Tag.delay(:queue => "default").increment_post_counts(increment_tags)

View File

@@ -8,6 +8,7 @@ en:
post:
approver: "You"
approver_id: "You"
updater_id: "You"
post_flag:
creator: "You"
creator_id: "You"

View File

@@ -430,6 +430,18 @@ class PostTest < ActiveSupport::TestCase
@post = FactoryGirl.create(:post)
end
context "as a new user" do
setup do
CurrentUser.user = FactoryGirl.create(:user)
@post.update_attribute(:tag_string, "aaa bbb ccc ddd")
end
should "not allow you to remove more than 2 tags" do
@post.update_attributes(:tag_string => "aaa")
assert_equal(["You must have an account at least 1 week old to remove tags"], @post.errors.full_messages)
end
end
context "with a banned artist" do
setup do
@artist = FactoryGirl.create(:artist)