FIX: `TopicQuery.list_private_messages_unread` ignore notification level
This commit is contained in:
parent
d83e3f9ce8
commit
2ff16b3650
|
@ -328,7 +328,15 @@ class TopicQuery
|
|||
|
||||
def list_private_messages_unread(user)
|
||||
list = private_messages_for(user, :user)
|
||||
list = list.where("tu.last_read_post_number IS NULL OR tu.last_read_post_number < topics.highest_post_number")
|
||||
|
||||
list = TopicQuery.unread_filter(
|
||||
list,
|
||||
user.id,
|
||||
staff: user.staff?
|
||||
)
|
||||
|
||||
first_unread_pm_at = UserStat.where(user_id: user.id).pluck(:first_unread_pm_at).first
|
||||
list = list.where("topics.updated_at >= ?", first_unread_pm_at) if first_unread_pm_at
|
||||
create_list(:private_messages, {}, list)
|
||||
end
|
||||
|
||||
|
|
|
@ -638,26 +638,35 @@ RSpec.describe ListController do
|
|||
end
|
||||
end
|
||||
|
||||
describe "private_messages_unread" do
|
||||
before do
|
||||
u = Fabricate(:user)
|
||||
pm = Fabricate(:private_message_topic, user: u)
|
||||
Fabricate(:post, user: u, topic: pm, post_number: 1)
|
||||
pm.topic_allowed_users.create!(user: user)
|
||||
describe "#private_messages_unread" do
|
||||
fab!(:pm_user) { Fabricate(:user) }
|
||||
|
||||
fab!(:pm) do
|
||||
Fabricate(:private_message_topic).tap do |t|
|
||||
t.allowed_users << pm_user
|
||||
create_post(user: pm_user, topic_id: t.id)
|
||||
end
|
||||
end
|
||||
|
||||
it "returns 403 error when the user can't see private message" do
|
||||
sign_in(Fabricate(:user))
|
||||
get "/topics/private-messages-unread/#{user.username}.json"
|
||||
expect(response).to be_forbidden
|
||||
get "/topics/private-messages-unread/#{pm_user.username}.json"
|
||||
expect(response.status).to eq(403)
|
||||
end
|
||||
|
||||
it "succeeds when the user can see private messages" do
|
||||
sign_in(user)
|
||||
get "/topics/private-messages-unread/#{user.username}.json"
|
||||
TopicUser.find_by(topic: pm, user: pm_user).update!(
|
||||
notification_level: TopicUser.notification_levels[:tracking],
|
||||
last_read_post_number: 0,
|
||||
)
|
||||
|
||||
sign_in(pm_user)
|
||||
get "/topics/private-messages-unread/#{pm_user.username}.json"
|
||||
|
||||
expect(response.status).to eq(200)
|
||||
json = response.parsed_body
|
||||
expect(json["topic_list"]["topics"].size).to eq(1)
|
||||
expect(json["topic_list"]["topics"][0]["id"]).to eq(pm.id)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in New Issue