From 1cdbfe3af13348f071688bffbb0b8104b9851bf4 Mon Sep 17 00:00:00 2001 From: Ben Halpern Date: Mon, 28 Jan 2019 14:14:45 -0500 Subject: [PATCH] Remove hardcoded values in streak reward (#1671) --- app/labor/badge_rewarder.rb | 6 +++--- spec/labor/badge_rewarder_spec.rb | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/labor/badge_rewarder.rb b/app/labor/badge_rewarder.rb index b32b27132..76606fb32 100644 --- a/app/labor/badge_rewarder.rb +++ b/app/labor/badge_rewarder.rb @@ -44,9 +44,9 @@ module BadgeRewarder end def self.award_streak_badge(num_weeks) - article_user_ids = Article.where("published_at > ?", 1.week.ago).pluck(:user_id) + article_user_ids = Article.where(published: true).where("published_at > ? AND score > ?", 1.week.ago, -25).pluck(:user_id) # No cred for super low quality message = "Congrats on achieving this streak! Consistent writing is hard. The next streak badge you can get is the #{num_weeks * 2} Week Badge. 😉" - users = User.where(id: article_user_ids).where("articles_count > ?", 3) + users = User.where(id: article_user_ids).where("articles_count >= ?", num_weeks) usernames = [] users.find_each do |user| count = 0 @@ -56,7 +56,7 @@ module BadgeRewarder count = count + 1 end end - if count > 3 + if count >= num_weeks usernames << user.username end end diff --git a/spec/labor/badge_rewarder_spec.rb b/spec/labor/badge_rewarder_spec.rb index ed1dae4e6..f41b6a8aa 100644 --- a/spec/labor/badge_rewarder_spec.rb +++ b/spec/labor/badge_rewarder_spec.rb @@ -81,6 +81,7 @@ RSpec.describe BadgeRewarder do create(:badge, title: "4 Week Streak", slug: "4-week-streak") user = create(:user) create(:article, user: user, published: true, published_at: 26.days.ago) + create(:article, user: user, published: true, published_at: 19.days.ago) create(:article, user: user, published: true, published_at: 5.days.ago) described_class.award_streak_badge(4) expect(user.badges.size).to eq(0)