diff --git a/app/labor/badge_rewarder.rb b/app/labor/badge_rewarder.rb index 17f7928b8..2e887baac 100644 --- a/app/labor/badge_rewarder.rb +++ b/app/labor/badge_rewarder.rb @@ -25,12 +25,20 @@ module BadgeRewarder end end - def self.reward_top_seven_badges(usernames) + def self.award_top_seven_badges(usernames, message_markdown = "Congrats!!!") + award_badges(usernames, "top-7", 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 + + def self.award_badges(usernames, slug, message_markdown) User.where(username: usernames).each do |user| BadgeAchievement.create( user_id: user.id, - badge_id: Badge.find_by_slug("top-7").id, - rewarding_context_message_markdown: "Congrats!!!", + badge_id: Badge.find_by_slug(slug).id, + rewarding_context_message_markdown: message_markdown, ) user.save end diff --git a/lib/tasks/fetch.rake b/lib/tasks/fetch.rake index 2c29bf53a..d618a9dd6 100644 --- a/lib/tasks/fetch.rake +++ b/lib/tasks/fetch.rake @@ -75,3 +75,20 @@ task award_badges: :environment do BadgeRewarder.award_yearly_club_badges BadgeRewarder.award_beloved_comment_badges end + +# rake award_top_seven_badges["ben jess peter mac liana andy"] +task :award_top_seven_badges, [:arg1] => :environment do |t, args| + usernames = args[:arg1].split(" ") + puts "Awarding top-7 badges to #{usernames}" + BadgeRewarder.award_top_seven_badges(usernames) + puts "Done!" +end + +# rake award_contributor_badges["ben jess peter mac liana andy"] +task :award_contributor_badges, [:arg1] => :environment do |t, args| + usernames = args[:arg1].split(" ") + puts "Awarding dev-contributor badges to #{usernames}" + BadgeRewarder.award_contributor_badges(usernames) + puts "Done!" +end + diff --git a/spec/labor/badge_rewarder_spec.rb b/spec/labor/badge_rewarder_spec.rb index 8887cb4e8..2d420642b 100644 --- a/spec/labor/badge_rewarder_spec.rb +++ b/spec/labor/badge_rewarder_spec.rb @@ -34,7 +34,15 @@ RSpec.describe BadgeRewarder do badge = create(:badge, title: "Top 7") user = create(:user) user_other = create(:user) - described_class.reward_top_seven_badges([user.username, user_other.username]) + described_class.award_top_seven_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) + user_other = create(:user) + described_class.award_contributor_badges([user.username, user_other.username]) expect(BadgeAchievement.where(badge_id: badge.id).size).to eq(2) end end