diff --git a/app/jobs/onceoff/fix_retro_anniversary.rb b/app/jobs/onceoff/fix_retro_anniversary.rb index 2d553c3a296..b141c890ff1 100644 --- a/app/jobs/onceoff/fix_retro_anniversary.rb +++ b/app/jobs/onceoff/fix_retro_anniversary.rb @@ -6,15 +6,15 @@ module Jobs def execute_onceoff(args) return unless SiteSetting.enable_badges - users = User.query <<~SQL - SELECT ub.user_id, MIN(granted_at) AS first_granted_at, COUNT(*) + users = DB.query <<~SQL + SELECT ub.user_id, MIN(granted_at) AS first_granted_at, COUNT(*) count FROM user_badges AS ub WHERE ub.badge_id = #{Badge::Anniversary} GROUP BY ub.user_id HAVING COUNT(ub.id) > 1 SQL - users.to_a.each do |u| + users.each do |u| first = u.first_granted_at badges = UserBadge.where( "badge_id = ? AND user_id = ? AND granted_at > ?", diff --git a/spec/integrity/onceoff_integrity_spec.rb b/spec/integrity/onceoff_integrity_spec.rb new file mode 100644 index 00000000000..8143fe79464 --- /dev/null +++ b/spec/integrity/onceoff_integrity_spec.rb @@ -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