From 295b30ce3ed8d52180405bc9c07114f736bb45f6 Mon Sep 17 00:00:00 2001 From: Jess Lee Date: Mon, 5 Nov 2018 11:46:08 -0500 Subject: [PATCH] Add Fab Five BadgeRewarder + Rake Task (#1048) * adds method and rake task * Improve BadgeRewarder spac --- app/labor/badge_rewarder.rb | 6 +++++- lib/tasks/fetch.rake | 8 ++++++++ spec/labor/badge_rewarder_spec.rb | 31 +++++++++++++++++++------------ 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/app/labor/badge_rewarder.rb b/app/labor/badge_rewarder.rb index 7a9e6badc..aeb3316f6 100644 --- a/app/labor/badge_rewarder.rb +++ b/app/labor/badge_rewarder.rb @@ -17,7 +17,7 @@ module BadgeRewarder message = "You're DEV famous! [This is the comment](https://dev.to#{comment.path}) for which you are being recognized. 😄" achievement = BadgeAchievement.create( user_id: comment.user_id, - badge_id: 3, + badge_id: Badge.find_by_slug("beloved-comment")&.id || 3, rewarding_context_message_markdown: message, ) comment.user.save if achievement.valid? @@ -29,6 +29,10 @@ module BadgeRewarder award_badges(usernames, "top-7", message_markdown) end + def self.award_fab_five_badges(usernames, message_markdown = "Congrats!!!") + award_badges(usernames, "fab-5", message_markdown) + end + def self.award_contributor_badges(usernames, message_markdown = "Thank you so much for your contributions!") award_badges(usernames, "dev-contributor", message_markdown) end diff --git a/lib/tasks/fetch.rake b/lib/tasks/fetch.rake index 0d231e4d5..1f0708858 100644 --- a/lib/tasks/fetch.rake +++ b/lib/tasks/fetch.rake @@ -92,6 +92,14 @@ task :award_contributor_badges, [:arg1] => :environment do |_t, args| puts "Done!" end +# rake award_fab_five_badges["ben jess peter mac liana andy"] +task :award_fab_five_badges, [:arg1] => :environment do |_t, args| + usernames = args[:arg1].split(" ") + puts "Awarding fab 5 badges to #{usernames}" + BadgeRewarder.award_fab_five_badges(usernames) + puts "Done!" +end + # this task is meant to be scheduled daily task award_contributor_badges_from_github: :environment do BadgeRewarder.award_contributor_badges_from_github diff --git a/spec/labor/badge_rewarder_spec.rb b/spec/labor/badge_rewarder_spec.rb index e1d6b9a55..eb85f411a 100644 --- a/spec/labor/badge_rewarder_spec.rb +++ b/spec/labor/badge_rewarder_spec.rb @@ -15,19 +15,18 @@ RSpec.describe BadgeRewarder do end it "rewards beloved comment to folks who have a qualifying comment" do - user = create(:user) - user_other = create(:user) - article = create(:article) - create(:comment, user_id: user.id, positive_reactions_count: 30, commentable_id: article.id) - create( - :comment, user_id: user_other.id, positive_reactions_count: 3, commentable_id: article.id - ) - create(:badge, title: "heweewweyhey") - create(:badge, title: "heweweewewewewyhey") - create(:badge, title: "heewwewewwwwwyhey") + create(:badge, title: "Beloved comment", slug: "beloved-comment") + comment = create(:comment, commentable: create(:article)) + comment.update(positive_reactions_count: 30) described_class.award_beloved_comment_badges - expect(user.badge_achievements.size).to eq(1) - expect(user_other.badge_achievements.size).to eq(0) + expect(BadgeAchievement.count).to eq(1) + end + + it "does not reward beloved comment to non-qualifying comment" do + create(:badge, title: "Beloved comment", slug: "beloved-comment") + create(:comment, commentable: create(:article)) + described_class.award_beloved_comment_badges + expect(BadgeAchievement.count).to eq(0) end it "rewards top seven badge to users" do @@ -38,6 +37,14 @@ RSpec.describe BadgeRewarder do expect(BadgeAchievement.where(badge_id: badge.id).size).to eq(2) end + it "rewards fab five badge to users" do + badge = create(:badge, title: "Fab 5") + user = create(:user) + user_other = create(:user) + described_class.award_fab_five_badges([user.username, user_other.username]) + expect(BadgeAchievement.where(badge_id: badge.id).size).to eq(2) + end + it "rewards contributor badges" do badge = create(:badge, title: "Dev Contributor") user = create(:user)