From 50864c71474f8d1cc7534540e8fa91a71ec866ee Mon Sep 17 00:00:00 2001 From: evazion Date: Wed, 3 Feb 2021 23:24:12 -0600 Subject: [PATCH] Fix #4685: Tagging "aliased_tag -aliased_tag" adds aliased_tag. --- app/models/post.rb | 2 +- test/unit/post_test.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/post.rb b/app/models/post.rb index 2ac522e0f..412e9b892 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -472,8 +472,8 @@ class Post < ApplicationRecord normalized_tags = apply_casesensitive_metatags(normalized_tags) normalized_tags = normalized_tags.map(&:downcase) normalized_tags = filter_metatags(normalized_tags) - normalized_tags = remove_negated_tags(normalized_tags) normalized_tags = TagAlias.to_aliased(normalized_tags) + normalized_tags = remove_negated_tags(normalized_tags) normalized_tags = %w(tagme) if normalized_tags.empty? normalized_tags = add_automatic_tags(normalized_tags) normalized_tags = remove_invalid_tags(normalized_tags) diff --git a/test/unit/post_test.rb b/test/unit/post_test.rb index 8674f408b..dcb3d6088 100644 --- a/test/unit/post_test.rb +++ b/test/unit/post_test.rb @@ -1214,6 +1214,16 @@ class PostTest < ActiveSupport::TestCase assert_equal("aaa", @post.tag_string) end + should "resolve aliases before removing negated tags" do + create(:tag_alias, antecedent_name: "female_focus", consequent_name: "female") + + @post.update!(tag_string: "blah female_focus -female") + assert_equal("blah", @post.tag_string) + + @post.update!(tag_string: "blah female_focus -female_focus") + assert_equal("blah", @post.tag_string) + end + should "resolve abbreviations" do create(:tag, name: "hair_ribbon", post_count: 300_000) create(:tag, name: "hakurei_reimu", post_count: 50_000)