FIX: Topic map was incorrectly counting assign actions (#10360)
The assign plugin is one of two situations where a post can be both a whisper and a small-action. Check the action_code field to filter out small-actions.
This commit is contained in:
parent
f78792c779
commit
13feb300a8
|
@ -366,11 +366,6 @@ class TopicView
|
||||||
if is_mega_topic?
|
if is_mega_topic?
|
||||||
{}
|
{}
|
||||||
else
|
else
|
||||||
post_types = [Post.types[:regular], Post.types[:moderator_action]]
|
|
||||||
if @guardian.can_see_whispers?(@topic)
|
|
||||||
post_types << Post.types[:whisper]
|
|
||||||
end
|
|
||||||
|
|
||||||
sql = <<~SQL
|
sql = <<~SQL
|
||||||
SELECT user_id, count(*) AS count_all
|
SELECT user_id, count(*) AS count_all
|
||||||
FROM posts
|
FROM posts
|
||||||
|
@ -378,12 +373,13 @@ class TopicView
|
||||||
AND post_type IN (:post_types)
|
AND post_type IN (:post_types)
|
||||||
AND user_id IS NOT NULL
|
AND user_id IS NOT NULL
|
||||||
AND posts.deleted_at IS NULL
|
AND posts.deleted_at IS NULL
|
||||||
|
AND action_code IS NULL
|
||||||
GROUP BY user_id
|
GROUP BY user_id
|
||||||
ORDER BY count_all DESC
|
ORDER BY count_all DESC
|
||||||
LIMIT #{MAX_PARTICIPANTS}
|
LIMIT #{MAX_PARTICIPANTS}
|
||||||
SQL
|
SQL
|
||||||
|
|
||||||
Hash[*DB.query_single(sql, topic_id: @topic.id, post_types: post_types)]
|
Hash[*DB.query_single(sql, topic_id: @topic.id, post_types: Topic.visible_post_types(@guardian&.user))]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -286,6 +286,8 @@ describe TopicView do
|
||||||
context '.post_counts_by_user' do
|
context '.post_counts_by_user' do
|
||||||
it 'returns the two posters with their appropriate counts' do
|
it 'returns the two posters with their appropriate counts' do
|
||||||
Fabricate(:post, topic: topic, user: evil_trout, post_type: Post.types[:whisper])
|
Fabricate(:post, topic: topic, user: evil_trout, post_type: Post.types[:whisper])
|
||||||
|
# Should not be counted
|
||||||
|
Fabricate(:post, topic: topic, user: evil_trout, post_type: Post.types[:whisper], action_code: 'assign')
|
||||||
|
|
||||||
expect(TopicView.new(topic.id, admin).post_counts_by_user.to_a).to match_array([[first_poster.id, 2], [evil_trout.id, 2]])
|
expect(TopicView.new(topic.id, admin).post_counts_by_user.to_a).to match_array([[first_poster.id, 2], [evil_trout.id, 2]])
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue