FIX: Exclude PMs that user sent to themselves. (#14496)

Regression from 016efeadf6

Follow-up to 016efeadf6
This commit is contained in:
Alan Guo Xiang Tan 2021-10-04 11:55:35 +08:00 committed by GitHub
parent d39315239e
commit 34cebfd867
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 0 deletions

View File

@ -5,6 +5,15 @@ class TopicQuery
def list_private_messages(user) def list_private_messages(user)
list = private_messages_for(user, :user) list = private_messages_for(user, :user)
list = not_archived(list, user) list = not_archived(list, user)
list = list.where(<<~SQL)
NOT (
topics.participant_count = 1
AND topics.user_id = #{user.id.to_i}
AND topics.moderator_posts_count = 0
)
SQL
create_list(:private_messages, {}, list) create_list(:private_messages, {}, list)
end end

View File

@ -3,6 +3,7 @@
require 'rails_helper' require 'rails_helper'
describe TopicQuery::PrivateMessageLists do describe TopicQuery::PrivateMessageLists do
fab!(:admin) { Fabricate(:admin) }
fab!(:user) { Fabricate(:user) } fab!(:user) { Fabricate(:user) }
fab!(:user_2) { Fabricate(:user) } fab!(:user_2) { Fabricate(:user) }
fab!(:user_3) { Fabricate(:user) } fab!(:user_3) { Fabricate(:user) }
@ -50,6 +51,17 @@ describe TopicQuery::PrivateMessageLists do
expect(topics).to contain_exactly(private_message) expect(topics).to contain_exactly(private_message)
end end
it "includes topics with moderator posts" do
pm = Fabricate(:private_message_post, user: user_4).topic
expect(TopicQuery.new(user_4).list_private_messages(user_4).topics).to be_empty
pm.add_moderator_post(admin, "Thank you for your flag")
expect(TopicQuery.new(user_4).list_private_messages(user_4).topics)
.to contain_exactly(pm)
end
end end
describe '#list_private_messages_group' do describe '#list_private_messages_group' do