correct regression and add integrity spec for onceoffs

This commit is contained in:
Sam 2018-06-20 09:09:13 +10:00
parent ab48664f79
commit cbaf521fc1
2 changed files with 17 additions and 3 deletions

View File

@ -6,15 +6,15 @@ module Jobs
def execute_onceoff(args) def execute_onceoff(args)
return unless SiteSetting.enable_badges return unless SiteSetting.enable_badges
users = User.query <<~SQL users = DB.query <<~SQL
SELECT ub.user_id, MIN(granted_at) AS first_granted_at, COUNT(*) SELECT ub.user_id, MIN(granted_at) AS first_granted_at, COUNT(*) count
FROM user_badges AS ub FROM user_badges AS ub
WHERE ub.badge_id = #{Badge::Anniversary} WHERE ub.badge_id = #{Badge::Anniversary}
GROUP BY ub.user_id GROUP BY ub.user_id
HAVING COUNT(ub.id) > 1 HAVING COUNT(ub.id) > 1
SQL SQL
users.to_a.each do |u| users.each do |u|
first = u.first_granted_at first = u.first_granted_at
badges = UserBadge.where( badges = UserBadge.where(
"badge_id = ? AND user_id = ? AND granted_at > ?", "badge_id = ? AND user_id = ? AND granted_at > ?",

View File

@ -0,0 +1,14 @@
require "rails_helper"
describe Jobs::Onceoff do
it "can run all once off jobs without errors" do
# load all once offs
Dir[Rails.root + 'app/jobs/onceoff/*.rb'].each do |f|
require_relative '../../app/jobs/onceoff/' + File.basename(f)
end
ObjectSpace.each_object(Class).select { |klass| klass < Jobs::Onceoff }.each do |j|
j.new.execute_onceoff(nil)
end
end
end