From 7562925e0d66e0c9b743db82a5422101d6385bea Mon Sep 17 00:00:00 2001 From: Natalie Tay Date: Thu, 23 Mar 2023 21:35:12 +0800 Subject: [PATCH] FIX: Also evaluate list controller extensions (#455) --- .../list_controller_extension.rb | 2 +- plugin.rb | 1 + spec/requests/list_controller_spec.rb | 32 +++++++++++++++++-- 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/lib/discourse_assign/list_controller_extension.rb b/lib/discourse_assign/list_controller_extension.rb index 654d63f..34b9c04 100644 --- a/lib/discourse_assign/list_controller_extension.rb +++ b/lib/discourse_assign/list_controller_extension.rb @@ -3,7 +3,7 @@ module DiscourseAssign module ListControllerExtension def self.prepended(base) - base.class_eval { generate_message_route(:private_messages_assigned) } + base.class_eval { ListController.generate_message_route(:private_messages_assigned) } end end end diff --git a/plugin.rb b/plugin.rb index fe701d7..42d6377 100644 --- a/plugin.rb +++ b/plugin.rb @@ -40,6 +40,7 @@ after_initialize do reloadable_patch do |plugin| Group.class_eval { prepend DiscourseAssign::GroupExtension } + ListController.class_eval { prepend DiscourseAssign::ListControllerExtension } Post.class_eval { prepend DiscourseAssign::PostExtension } Topic.class_eval { prepend DiscourseAssign::TopicExtension } WebHook.class_eval { prepend DiscourseAssign::WebHookExtension } diff --git a/spec/requests/list_controller_spec.rb b/spec/requests/list_controller_spec.rb index 8e0b18d..319635f 100644 --- a/spec/requests/list_controller_spec.rb +++ b/spec/requests/list_controller_spec.rb @@ -4,10 +4,13 @@ require "rails_helper" require_relative "../support/assign_allowed_group" describe ListController do - before { SiteSetting.assign_enabled = true } + before do + SiteSetting.personal_message_enabled_groups = Group::AUTO_GROUPS[:trust_level_0] + SiteSetting.assign_enabled = true + end - let(:user) { Fabricate(:active_user) } - let(:user2) { Fabricate(:user) } + fab!(:user) { Fabricate(:active_user) } + fab!(:user2) { Fabricate(:user) } let(:admin) { Fabricate(:admin) } let(:post) { Fabricate(:post) } @@ -329,4 +332,27 @@ describe ListController do expect(JSON.parse(response.body)["topic_list"]["topics"]).to be_empty end end + + describe "#private_messages_assigned" do + fab!(:group) { Fabricate(:group, users: [user]) } + fab!(:pm) { Fabricate(:topic, archetype: Archetype.private_message, category_id: nil) } + fab!(:topic) { Fabricate(:topic, user: user) } + fab!(:pm_post) { Fabricate(:post, topic: pm) } + fab!(:post) { Fabricate(:post, topic: topic) } + + before do + SiteSetting.assign_allowed_on_groups = "#{group.id}" + Fabricate(:topic_allowed_user, user: user, topic: pm) + Assigner.new(pm, user).assign(user) + Assigner.new(topic, user).assign(user) + end + + it "returns assigned messages for user" do + sign_in(user) + + get "/topics/private-messages-assigned/#{user.username_lower}.json" + + expect(JSON.parse(response.body)["topic_list"]["topics"].map { |t| t["id"] }).to eq([pm.id]) + end + end end