]> git.openstreetmap.org Git - rails.git/commitdiff
Send trace import result notification immediately
authorTom Hughes <tom@compton.nu>
Mon, 15 Jul 2019 20:45:07 +0000 (21:45 +0100)
committerTom Hughes <tom@compton.nu>
Mon, 15 Jul 2019 20:45:07 +0000 (21:45 +0100)
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

app/jobs/trace_importer_job.rb
test/jobs/trace_importer_job_test.rb

index e4395bf3d378356f06fb9bd896e8e90862cbf8d9..2a9a8678a514aa146a58948c7d5ab34b6772e5e0 100644 (file)
@@ -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
index bf30e69414d30d298127b91ff76d5d3b783ce04d..e1ddcc9679cbd1161a366bffd20c6fdc6fbc4cb8 100644 (file)
@@ -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)