diff --git a/lib/active_job/job_proxy.rb b/lib/active_job/job_proxy.rb index 8a586242..630b62d3 100644 --- a/lib/active_job/job_proxy.rb +++ b/lib/active_job/job_proxy.rb @@ -27,7 +27,7 @@ def perform_now end def duration - finished_at - scheduled_at + finished_at - (scheduled_at || enqueued_at) end ActiveJob::JobsRelation::STATUSES.each do |status| diff --git a/test/active_job/job_proxy_test.rb b/test/active_job/job_proxy_test.rb index c8c2446d..2e2ccc14 100644 --- a/test/active_job/job_proxy_test.rb +++ b/test/active_job/job_proxy_test.rb @@ -6,4 +6,13 @@ class ActiveJob::JobProxyTest < ActiveSupport::TestCase job_proxy = ActiveJob::JobProxy.new(job.serialize) assert_instance_of DummyJob, ActiveJob::Base.deserialize(job_proxy.serialize) end + + test "#duration does not break if scheduled_at is not set" do + job = DummyJob.new(123) + job_proxy = ActiveJob::JobProxy.new(job.serialize) + job_proxy.finished_at = job_proxy.enqueued_at + 5.seconds + + assert_nil job_proxy.scheduled_at + assert_equal 5.seconds, job_proxy.duration + end end