[deploy] Refactor:Move Yearly Badge Awarder to Sidekiq Cron (#9836)
This commit is contained in:
parent
dbdc6ead38
commit
55e7e12e78
6 changed files with 28 additions and 4 deletions
|
|
@ -1,5 +1,5 @@
|
|||
module BadgeRewarder
|
||||
YEARS = { 1 => "one", 2 => "two", 3 => "three" }.freeze
|
||||
YEARS = { 1 => "one", 2 => "two", 3 => "three", 4 => "four", 5 => "five", 6 => "six", 7 => "seven" }.freeze
|
||||
REPOSITORIES = ["thepracticaldev/dev.to", "thepracticaldev/DEV-ios", "thepracticaldev/DEV-Android"].freeze
|
||||
|
||||
LONGEST_STREAK_WEEKS = 16
|
||||
|
|
@ -10,7 +10,8 @@ module BadgeRewarder
|
|||
MINIMUM_QUALITY = -25
|
||||
|
||||
def self.award_yearly_club_badges
|
||||
(1..3).each do |i|
|
||||
total_years = Time.current.year - ApplicationConfig["COMMUNITY_COPYRIGHT_START_YEAR"].to_i
|
||||
(1..total_years).each do |i|
|
||||
message = "Happy #{ApplicationConfig['COMMUNITY_NAME']} birthday! " \
|
||||
"Can you believe it's been #{i} #{'year'.pluralize(i)} already?!"
|
||||
badge = Badge.find_by!(slug: "#{YEARS[i]}-year-club")
|
||||
|
|
|
|||
|
|
@ -5,7 +5,11 @@ module BadgeAchievements
|
|||
sidekiq_options queue: :high_priority, retry: 10
|
||||
|
||||
def perform(usernames, badge_slug, message)
|
||||
BadgeRewarder.award_badges(usernames, badge_slug, message)
|
||||
if BadgeRewarder.respond_to?(badge_slug)
|
||||
BadgeRewarder.public_send(badge_slug)
|
||||
else
|
||||
BadgeRewarder.award_badges(usernames, badge_slug, message)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -10,3 +10,10 @@ record_daily_notifications:
|
|||
record_data_counts:
|
||||
cron: "10 * * * *" # every hour, 10 min after the hour
|
||||
class: "Metrics::RecordDataCountsWorker"
|
||||
award_yearly_club_badges:
|
||||
cron: "0 0 * * *" # daily at 12 am UTC
|
||||
class: "BadgeAchievements::BadgeAwardWorker"
|
||||
args:
|
||||
- ""
|
||||
- award_yearly_club_badges
|
||||
- ""
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
task award_badges: :environment do
|
||||
BadgeRewarder.award_yearly_club_badges
|
||||
BadgeRewarder.award_beloved_comment_badges
|
||||
BadgeRewarder.award_streak_badge(4)
|
||||
BadgeRewarder.award_streak_badge(8)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@ require "rails_helper"
|
|||
RSpec.describe BadgeRewarder, type: :labor do
|
||||
describe "::award_yearly_club_badges" do
|
||||
before do
|
||||
stub_const("#{described_class}::YEARS", BadgeRewarder::YEARS.slice(1, 2, 3))
|
||||
allow(ApplicationConfig).to receive(:[])
|
||||
allow(ApplicationConfig).to receive(:[]).with("COMMUNITY_COPYRIGHT_START_YEAR").and_return(3.years.ago.year)
|
||||
create(:badge, title: "one-year-club")
|
||||
create(:badge, title: "two-year-club")
|
||||
create(:badge, title: "three-year-club")
|
||||
|
|
|
|||
|
|
@ -19,5 +19,15 @@ RSpec.describe BadgeAchievements::BadgeAwardWorker, type: :worker do
|
|||
expect(badge_rewarder).to have_received(:award_badges).with("jess", "test", "yo")
|
||||
end
|
||||
end
|
||||
|
||||
context "with predefined badge_slug" do
|
||||
it "sends badge email" do
|
||||
allow(badge_rewarder).to receive(:award_yearly_club_badges)
|
||||
worker.perform("", "award_yearly_club_badges", "")
|
||||
|
||||
expect(badge_rewarder).to have_received(:award_yearly_club_badges)
|
||||
expect(badge_rewarder).not_to have_received(:award_badges)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue