From: Tom Hughes Date: Mon, 15 Jul 2019 20:45:07 +0000 (+0100) Subject: Send trace import result notification immediately X-Git-Tag: live~2569^2 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/5cb96cd1a2964463dfcb6083da95badecccb7f98?ds=sidebyside Send trace import result notification immediately If we delay sending failure notifications then they will fail because the trace will no longer exist. As trace imports are running in the background anyway there doesn't seem to be any good reason to defer the emails. Fixes #2312 --- diff --git a/app/jobs/trace_importer_job.rb b/app/jobs/trace_importer_job.rb index e4395bf3d..2a9a8678a 100644 --- a/app/jobs/trace_importer_job.rb +++ b/app/jobs/trace_importer_job.rb @@ -5,15 +5,15 @@ class TraceImporterJob < ApplicationJob gpx = trace.import if gpx.actual_points.positive? - Notifier.gpx_success(trace, gpx.actual_points).deliver_later + Notifier.gpx_success(trace, gpx.actual_points).deliver else - Notifier.gpx_failure(trace, "0 points parsed ok. Do they all have lat,lng,alt,timestamp?").deliver_later + Notifier.gpx_failure(trace, "0 points parsed ok. Do they all have lat,lng,alt,timestamp?").deliver trace.destroy end rescue StandardError => e logger.info e.to_s e.backtrace.each { |l| logger.info l } - Notifier.gpx_failure(trace, e.to_s + "\n" + e.backtrace.join("\n")).deliver_later + Notifier.gpx_failure(trace, e.to_s + "\n" + e.backtrace.join("\n")).deliver trace.destroy end end diff --git a/test/jobs/trace_importer_job_test.rb b/test/jobs/trace_importer_job_test.rb index bf30e6941..e1ddcc967 100644 --- a/test/jobs/trace_importer_job_test.rb +++ b/test/jobs/trace_importer_job_test.rb @@ -12,13 +12,9 @@ class TraceImporterJobTest < ActiveJob::TestCase end trace.stub(:import, gpx) do - perform_enqueued_jobs do - TraceImporterJob.perform_now(trace) - end + TraceImporterJob.perform_now(trace) end - assert_performed_jobs 1 - email = ActionMailer::Base.deliveries.last assert_equal trace.user.email, email.to[0] assert_match(/success/, email.subject) @@ -36,13 +32,9 @@ class TraceImporterJobTest < ActiveJob::TestCase end trace.stub(:import, gpx) do - perform_enqueued_jobs do - TraceImporterJob.perform_now(trace) - end + TraceImporterJob.perform_now(trace) end - assert_performed_jobs 1 - email = ActionMailer::Base.deliveries.last assert_equal trace.user.email, email.to[0] assert_match(/failure/, email.subject) @@ -54,13 +46,9 @@ class TraceImporterJobTest < ActiveJob::TestCase # Check that the user gets a failure notification when something goes badly wrong trace = create(:trace) trace.stub(:import, -> { raise }) do - perform_enqueued_jobs do - TraceImporterJob.perform_now(trace) - end + TraceImporterJob.perform_now(trace) end - assert_performed_jobs 1 - email = ActionMailer::Base.deliveries.last assert_equal trace.user.email, email.to[0] assert_match(/failure/, email.subject)