Commit 1a8b411813954ff4b2d046d3aa98ca3e50e9f0a3

Authored by Victor Costa
1 parent 16929d88

Fix job reschedule

lib/proposals_discussion_plugin/ranking_job.rb
@@ -4,6 +4,9 @@ class ProposalsDiscussionPlugin::RankingJob @@ -4,6 +4,9 @@ class ProposalsDiscussionPlugin::RankingJob
4 ProposalsDiscussionPlugin::Topic.find_each do |topic| 4 ProposalsDiscussionPlugin::Topic.find_each do |topic|
5 ProposalsDiscussionPlugin::RankingJob::TopicRankingJob.new(topic.id).schedule 5 ProposalsDiscussionPlugin::RankingJob::TopicRankingJob.new(topic.id).schedule
6 end 6 end
  7 + end
  8 +
  9 + def after(job)
7 schedule(30.minutes.from_now) 10 schedule(30.minutes.from_now)
8 end 11 end
9 12
@@ -12,7 +15,7 @@ class ProposalsDiscussionPlugin::RankingJob @@ -12,7 +15,7 @@ class ProposalsDiscussionPlugin::RankingJob
12 end 15 end
13 16
14 def self.find_job 17 def self.find_job
15 - Delayed::Job.by_handler("--- !ruby/object:ProposalsDiscussionPlugin::RankingJob {}\n") 18 + Delayed::Job.by_handler("--- !ruby/object:ProposalsDiscussionPlugin::RankingJob {}\n").where('locked_at IS NULL')
16 end 19 end
17 20
18 21
test/unit/ranking_job_test.rb
@@ -15,6 +15,7 @@ class RankingJobTest < ActiveSupport::TestCase @@ -15,6 +15,7 @@ class RankingJobTest < ActiveSupport::TestCase
15 end 15 end
16 16
17 should 'do not create duplicated ranking job' do 17 should 'do not create duplicated ranking job' do
  18 + Delayed::Job.destroy_all
18 job.schedule 19 job.schedule
19 job.schedule 20 job.schedule
20 assert_equal 1, job.class.find_job.count 21 assert_equal 1, job.class.find_job.count
@@ -27,7 +28,6 @@ class RankingJobTest < ActiveSupport::TestCase @@ -27,7 +28,6 @@ class RankingJobTest < ActiveSupport::TestCase
27 28
28 should 'reschedule job when performed' do 29 should 'reschedule job when performed' do
29 process_delayed_job_queue 30 process_delayed_job_queue
30 - job.perform  
31 new_job = job.class.find_job.first 31 new_job = job.class.find_job.first
32 assert new_job.present? 32 assert new_job.present?
33 assert new_job.run_at > 20.minutes.from_now 33 assert new_job.run_at > 20.minutes.from_now