X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/3e7bc943fe03dcd74666b6f26b3a831e06cac1d8..0f7eb71d622600cf02d1463979bdec557189825f:/test/jobs/trace_importer_job_test.rb diff --git a/test/jobs/trace_importer_job_test.rb b/test/jobs/trace_importer_job_test.rb index 73c8cebbe..c6d44ecce 100644 --- a/test/jobs/trace_importer_job_test.rb +++ b/test/jobs/trace_importer_job_test.rb @@ -12,16 +12,14 @@ 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) + + ActionMailer::Base.deliveries.clear end def test_failure_notification @@ -34,31 +32,59 @@ 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) + + ActionMailer::Base.deliveries.clear end def test_error_notification # 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 + + email = ActionMailer::Base.deliveries.last + assert_equal trace.user.email, email.to[0] + assert_match(/failure/, email.subject) + assert_no_match(/Start tag expected/, email.text_part.body.to_s, "should not include parser error") + assert_match(%r{jobs/trace_importer_job\.rb}, email.text_part.body.to_s, "should include stack backtrace") + + ActionMailer::Base.deliveries.clear + end + + def test_parse_error_notification + trace = create(:trace, :inserted => false, :fixture => "jpg") + Rails.logger.silence do + 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) + assert_match(/Start tag expected/, email.text_part.body.to_s, "should include parser error") + assert_no_match(%r{jobs/trace_importer_job\.rb}, email.text_part.body.to_s, "should not include stack backtrace") + + ActionMailer::Base.deliveries.clear + end + + def test_gz_parse_error_notification + trace = create(:trace, :inserted => false, :fixture => "jpg.gz") + Rails.logger.silence do + TraceImporterJob.perform_now(trace) + end email = ActionMailer::Base.deliveries.last assert_equal trace.user.email, email.to[0] assert_match(/failure/, email.subject) + assert_match(/Start tag expected/, email.text_part.body.to_s, "should include parser error") + assert_no_match(%r{jobs/trace_importer_job\.rb}, email.text_part.body.to_s, "should not include stack backtrace") + + ActionMailer::Base.deliveries.clear end end