FIX: Don't count private content in New User of the Month
This commit is contained in:
parent
6a7920ad75
commit
fa41913ba5
|
@ -59,10 +59,12 @@ module Jobs
|
||||||
LEFT OUTER JOIN post_actions AS pa ON
|
LEFT OUTER JOIN post_actions AS pa ON
|
||||||
pa.post_id = p.id AND pa.post_action_type_id = :like
|
pa.post_id = p.id AND pa.post_action_type_id = :like
|
||||||
LEFT OUTER JOIN users AS liked_by ON liked_by.id = pa.user_id
|
LEFT OUTER JOIN users AS liked_by ON liked_by.id = pa.user_id
|
||||||
|
LEFT OUTER JOIN topics AS t ON t.id = p.topic_id
|
||||||
WHERE u.active AND
|
WHERE u.active AND
|
||||||
u.id > 0 AND
|
u.id > 0 AND
|
||||||
NOT(u.admin) AND
|
NOT(u.admin) AND
|
||||||
NOT(u.moderator) AND
|
NOT(u.moderator) AND
|
||||||
|
t.archetype <> '#{Archetype.private_message}' AND
|
||||||
u.created_at >= CURRENT_TIMESTAMP - '1 month'::INTERVAL AND
|
u.created_at >= CURRENT_TIMESTAMP - '1 month'::INTERVAL AND
|
||||||
u.id NOT IN (#{current_owners.join(',')})
|
u.id NOT IN (#{current_owners.join(',')})
|
||||||
GROUP BY u.id
|
GROUP BY u.id
|
||||||
|
@ -73,8 +75,11 @@ module Jobs
|
||||||
LIMIT :max_awarded
|
LIMIT :max_awarded
|
||||||
SQL
|
SQL
|
||||||
|
|
||||||
User.exec_sql(sql, like: PostActionType.types[:like],
|
User.exec_sql(
|
||||||
max_awarded: MAX_AWARDED).each do |row|
|
sql,
|
||||||
|
like: PostActionType.types[:like],
|
||||||
|
max_awarded: MAX_AWARDED
|
||||||
|
).each do |row|
|
||||||
scores[row['id'].to_i] = row['score'].to_f
|
scores[row['id'].to_i] = row['score'].to_f
|
||||||
end
|
end
|
||||||
scores
|
scores
|
||||||
|
|
|
@ -106,6 +106,19 @@ describe Jobs::GrantNewUserOfTheMonthBadges do
|
||||||
expect(granter.scores.keys).not_to include(user.id)
|
expect(granter.scores.keys).not_to include(user.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "doesn't count private topics" do
|
||||||
|
user = Fabricate(:user, created_at: 1.week.ago)
|
||||||
|
topic = Fabricate(:private_message_topic)
|
||||||
|
Fabricate(:post, topic: topic, user: user)
|
||||||
|
p = Fabricate(:post, user: user)
|
||||||
|
old_user = Fabricate(:user, created_at: 6.months.ago)
|
||||||
|
PostAction.act(old_user, p, PostActionType.types[:like])
|
||||||
|
old_user = Fabricate(:user, created_at: 6.months.ago)
|
||||||
|
PostAction.act(old_user, p, PostActionType.types[:like])
|
||||||
|
|
||||||
|
expect(granter.scores.keys).not_to include(user.id)
|
||||||
|
end
|
||||||
|
|
||||||
it "requires at least two likes to be considered" do
|
it "requires at least two likes to be considered" do
|
||||||
user = Fabricate(:user, created_at: 1.week.ago)
|
user = Fabricate(:user, created_at: 1.week.ago)
|
||||||
Fabricate(:post, user: user)
|
Fabricate(:post, user: user)
|
||||||
|
|
Loading…
Reference in New Issue