diff --git a/app/models/tag_alias.rb b/app/models/tag_alias.rb index d848bf4e7..ab4c16704 100644 --- a/app/models/tag_alias.rb +++ b/app/models/tag_alias.rb @@ -44,8 +44,8 @@ class TagAlias < TagRelationship end def self.to_aliased(names) - names = Array(names) - return names if names.empty? + names = Array(names).map(&:to_s) + return [] if names.empty? aliases = active.where(antecedent_name: names).map { |ta| [ta.antecedent_name, ta.consequent_name] }.to_h names.map { |name| aliases[name] || name } end diff --git a/test/unit/post_test.rb b/test/unit/post_test.rb index d2c917061..601dc2c91 100644 --- a/test/unit/post_test.rb +++ b/test/unit/post_test.rb @@ -2407,6 +2407,15 @@ class PostTest < ActiveSupport::TestCase assert_tag_match([], "filesize:1048000") end + should "resolve aliases to the actual tag" do + create(:tag_alias, antecedent_name: "kitten", consequent_name: "cat") + post1 = create(:post, tag_string: "cat") + post2 = create(:post, tag_string: "dog") + + assert_tag_match([post1], "kitten") + assert_tag_match([post2], "-kitten") + end + should "fail for more than 6 tags" do post1 = FactoryBot.create(:post, :rating => "s") diff --git a/test/unit/tag_alias_test.rb b/test/unit/tag_alias_test.rb index 1c4933da2..ea7e58c0c 100644 --- a/test/unit/tag_alias_test.rb +++ b/test/unit/tag_alias_test.rb @@ -111,6 +111,7 @@ class TagAliasTest < ActiveSupport::TestCase ta = create(:tag_alias, antecedent_name: "aaa", consequent_name: "bbb") assert_equal(["bbb"], TagAlias.to_aliased("aaa")) + assert_equal(["bbb"], TagAlias.to_aliased("aaa".mb_chars)) assert_equal(["bbb", "ccc"], TagAlias.to_aliased(["aaa", "ccc"])) assert_equal(["ccc", "bbb"], TagAlias.to_aliased(["ccc", "bbb"])) assert_equal(["bbb", "bbb"], TagAlias.to_aliased(["aaa", "aaa"]))