From b4b80b9618f1d6c0f423cf9c20fea92c347aa6e4 Mon Sep 17 00:00:00 2001 From: nonamethanks Date: Wed, 21 Jul 2021 10:27:02 +0200 Subject: [PATCH] Forum link search: also include BURs --- app/models/forum_post.rb | 5 +++- .../functional/forum_posts_controller_test.rb | 24 ++++++++++--------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/app/models/forum_post.rb b/app/models/forum_post.rb index 818e5ea67..514fe3e48 100644 --- a/app/models/forum_post.rb +++ b/app/models/forum_post.rb @@ -45,7 +45,10 @@ class ForumPost < ApplicationRecord end def wiki_link_matches(title) - where(id: DtextLink.forum_post.wiki_link.where(link_target: WikiPage.normalize_title(title)).select(:model_id)) + dtext_links = DtextLink.forum_post.wiki_link.where(link_target: WikiPage.normalize_title(title)).select(:model_id) + bur_links = BulkUpdateRequest.where_array_includes_any(:tags, title).select(:forum_post_id) + + where(id: dtext_links).or(where(id: bur_links)) end def search(params) diff --git a/test/functional/forum_posts_controller_test.rb b/test/functional/forum_posts_controller_test.rb index be3912546..4a527f49c 100644 --- a/test/functional/forum_posts_controller_test.rb +++ b/test/functional/forum_posts_controller_test.rb @@ -54,12 +54,14 @@ class ForumPostsControllerTest < ActionDispatch::IntegrationTest context "index action" do setup do @admin = create(:admin_user) - @other_forum = as(@user) { create(:forum_post, body: "[[test]]", topic: build(:forum_topic, title: "my topic", category_id: 1)) } + @linked_forum = as(@user) { create(:forum_post, body: "[[yyy]]", topic: build(:forum_topic, title: "my topic", category_id: 1)) } @mod_forum = as(@mod) { create(:forum_post, creator: @mod, topic: build(:forum_topic, min_level: User::Levels::MODERATOR)) } @admin_forum = as(@admin) { create(:forum_post, creator: @admin, topic: build(:forum_topic, min_level: User::Levels::ADMIN)) } - @unrelated_forum = as (@user) { create(:forum_post, is_deleted: true) } - as (@user) { create(:forum_post_vote, forum_post: @forum_post) } - create(:bulk_update_request, forum_post: @other_forum) + @unrelated_forum = as(@user) { create(:forum_post, is_deleted: true) } + as(@user) { create(:forum_post_vote, forum_post: @forum_post) } + + @bur_forum = as(@user) { create(:forum_post, topic: build(:forum_topic, title: "bur")) } + create(:bulk_update_request, forum_post: @bur_forum, script: "alias xxx -> yyy") end context "as a user" do @@ -72,18 +74,18 @@ class ForumPostsControllerTest < ActionDispatch::IntegrationTest assert_response :success end - should respond_to_search({}).with { [@unrelated_forum, @other_forum, @forum_post] } + should respond_to_search({}).with { [@bur_forum, @unrelated_forum, @linked_forum, @forum_post] } should respond_to_search(body_matches: "xxx").with { @forum_post } should respond_to_search(body_matches: "bababa").with { [] } should respond_to_search(is_deleted: "true").with { @unrelated_forum } - should respond_to_search(linked_to: "TEST").with { @other_forum } + should respond_to_search(linked_to: "yyy").with { [@bur_forum, @linked_forum] } context "using includes" do should respond_to_search(topic: {title_matches: "my forum topic"}).with { @forum_post } - should respond_to_search(topic: {category_id: 1}).with { @other_forum } - should respond_to_search(has_bulk_update_request: "true").with { @other_forum } + should respond_to_search(topic: {category_id: 1}).with { @linked_forum } + should respond_to_search(has_bulk_update_request: "true").with { @bur_forum } should respond_to_search(has_votes: "true").with { @forum_post } - should respond_to_search(has_dtext_links: "true").with { @other_forum } + should respond_to_search(has_dtext_links: "true").with { @linked_forum } should respond_to_search(creator_id: 999).with { @forum_post } should respond_to_search(creator: {name: "okuu"}).with { [] } end @@ -94,7 +96,7 @@ class ForumPostsControllerTest < ActionDispatch::IntegrationTest CurrentUser.user = @mod end - should respond_to_search({}).with { [@unrelated_forum, @mod_forum, @other_forum, @forum_post] } + should respond_to_search({}).with { [@bur_forum, @unrelated_forum, @mod_forum, @linked_forum, @forum_post] } context "using includes" do should respond_to_search(creator: {name: "okuu"}).with { @mod_forum } @@ -106,7 +108,7 @@ class ForumPostsControllerTest < ActionDispatch::IntegrationTest CurrentUser.user = @admin end - should respond_to_search({}).with { [@unrelated_forum, @admin_forum, @mod_forum, @other_forum, @forum_post] } + should respond_to_search({}).with { [@bur_forum, @unrelated_forum, @admin_forum, @mod_forum, @linked_forum, @forum_post] } end end