Add Fab Five BadgeRewarder + Rake Task (#1048)
* adds method and rake task * Improve BadgeRewarder spac
This commit is contained in:
parent
dd1d031930
commit
295b30ce3e
3 changed files with 32 additions and 13 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue