Expand BadgeRewarder functionality (#540)
- Refactor badge rewarder - Add contributor badge functionality - Create BadgeRewarder rake tasks
This commit is contained in:
parent
c0c07a0085
commit
f1abd283f9
3 changed files with 37 additions and 4 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue