diff --git a/app/models/wiki_page.rb b/app/models/wiki_page.rb index 8e3c50e7e..0e4ffb870 100644 --- a/app/models/wiki_page.rb +++ b/app/models/wiki_page.rb @@ -206,8 +206,9 @@ class WikiPage < ApplicationRecord end def tags - titles = DText.parse_wiki_titles(body) - Tag.nonempty.where(name: titles.uniq).pluck(:name) + titles = DText.parse_wiki_titles(body).uniq + tags = Tag.nonempty.where(name: titles).pluck(:name) + titles & tags end def visible? diff --git a/test/unit/related_tag_query_test.rb b/test/unit/related_tag_query_test.rb index 1059727f4..096bee3ea 100644 --- a/test/unit/related_tag_query_test.rb +++ b/test/unit/related_tag_query_test.rb @@ -91,6 +91,13 @@ class RelatedTagQueryTest < ActiveSupport::TestCase should "find any tags embedded in the wiki page" do assert_equal(["bbb", "ccc"], @query.wiki_page_tags) end + + should "return the tags in the same order as given by the wiki" do + create(:wiki_page, title: "wiki", body: "[[ccc]] [[bbb]] [[ccc]] [[bbb]] [[aaa]]") + + query = RelatedTagQuery.new(query: "wiki") + assert_equal(%w[ccc bbb aaa], query.wiki_page_tags) + end end end