Refactor:Move Streak Badges to Sidekiq Cron (#9872)
This commit is contained in:
parent
5eda086e78
commit
469ce3c533
4 changed files with 57 additions and 6 deletions
|
|
@ -88,6 +88,18 @@ module BadgeRewarder
|
|||
end
|
||||
end
|
||||
|
||||
def self.award_four_week_streak_badge
|
||||
award_streak_badge(4)
|
||||
end
|
||||
|
||||
def self.award_eight_week_streak_badge
|
||||
award_streak_badge(8)
|
||||
end
|
||||
|
||||
def self.award_sixteen_week_streak_badge
|
||||
award_streak_badge(16)
|
||||
end
|
||||
|
||||
def self.award_streak_badge(num_weeks)
|
||||
# No credit for super low quality
|
||||
article_user_ids = Article.published
|
||||
|
|
|
|||
|
|
@ -24,3 +24,24 @@ award_beloved_comment_badges:
|
|||
- ""
|
||||
- award_beloved_comment_badges
|
||||
- ""
|
||||
award_four_week_streak_badge:
|
||||
cron: "10 0 * * *" # daily at 12:10 am UTC
|
||||
class: "BadgeAchievements::BadgeAwardWorker"
|
||||
args:
|
||||
- ""
|
||||
- award_four_week_streak_badge
|
||||
- ""
|
||||
award_eight_week_streak_badge:
|
||||
cron: "15 0 * * *" # daily at 12:15 am UTC
|
||||
class: "BadgeAchievements::BadgeAwardWorker"
|
||||
args:
|
||||
- ""
|
||||
- award_eight_week_streak_badge
|
||||
- ""
|
||||
award_sixteen_week_streak_badge:
|
||||
cron: "20 0 * * *" # daily at 12:20 am UTC
|
||||
class: "BadgeAchievements::BadgeAwardWorker"
|
||||
args:
|
||||
- ""
|
||||
- award_sixteen_week_streak_badge
|
||||
- ""
|
||||
|
|
|
|||
|
|
@ -1,9 +1,3 @@
|
|||
task award_badges: :environment do
|
||||
BadgeRewarder.award_streak_badge(4)
|
||||
BadgeRewarder.award_streak_badge(8)
|
||||
BadgeRewarder.award_streak_badge(16)
|
||||
end
|
||||
|
||||
task award_weekly_tag_badges: :environment do
|
||||
# Should run once per week.
|
||||
# Scheduled "daily" on Heroku Scheduler, should only fully run on Thursday.
|
||||
|
|
|
|||
|
|
@ -84,6 +84,30 @@ RSpec.describe BadgeRewarder, type: :labor do
|
|||
expect(BadgeAchievement.where(badge_id: badge.id).size).to eq(2)
|
||||
end
|
||||
|
||||
describe "::award_four_week_streak_badge" do
|
||||
it "calls award_streak_badge with argument 4" do
|
||||
allow(described_class).to receive(:award_streak_badge)
|
||||
described_class.award_four_week_streak_badge
|
||||
expect(described_class).to have_received(:award_streak_badge).with(4)
|
||||
end
|
||||
end
|
||||
|
||||
describe "::award_eight_week_streak_badge" do
|
||||
it "calls award_streak_badge with argument 8" do
|
||||
allow(described_class).to receive(:award_streak_badge)
|
||||
described_class.award_eight_week_streak_badge
|
||||
expect(described_class).to have_received(:award_streak_badge).with(8)
|
||||
end
|
||||
end
|
||||
|
||||
describe "::award_sixteen_week_streak_badge" do
|
||||
it "calls award_streak_badge with argument 16" do
|
||||
allow(described_class).to receive(:award_streak_badge)
|
||||
described_class.award_sixteen_week_streak_badge
|
||||
expect(described_class).to have_received(:award_streak_badge).with(16)
|
||||
end
|
||||
end
|
||||
|
||||
describe "::award_streak_badge" do
|
||||
it "rewards badge to users with four straight weeks of articles" do
|
||||
create(:badge, title: "4 Week Streak", slug: "4-week-streak")
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue