From 3b96bbc80976836c6783ddd81db2f93b7e3fa3a2 Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Wed, 23 Jan 2019 14:47:49 +0100 Subject: [PATCH 1/1] Basic tests for the trace jobs --- test/jobs/trace_destroyer_job_test.rb | 19 ++++++-- test/jobs/trace_importer_job_test.rb | 65 +++++++++++++++++++++++++-- 2 files changed, 76 insertions(+), 8 deletions(-) diff --git a/test/jobs/trace_destroyer_job_test.rb b/test/jobs/trace_destroyer_job_test.rb index 0c62716a0..ed86a1616 100644 --- a/test/jobs/trace_destroyer_job_test.rb +++ b/test/jobs/trace_destroyer_job_test.rb @@ -1,7 +1,18 @@ -require 'test_helper' +require "test_helper" +require "minitest/mock" class TraceDestroyerJobTest < ActiveJob::TestCase - # test "the truth" do - # assert true - # end + def test_destroy_called + trace = Minitest::Mock.new + + # Tiny little bit of mocking to make activejob happy + trace.expect :is_a?, false, [TraceDestroyerJob] + + # Check that trace.destroy is called + trace.expect :destroy, true + + TraceDestroyerJob.perform_now(trace) + + assert_mock trace + end end diff --git a/test/jobs/trace_importer_job_test.rb b/test/jobs/trace_importer_job_test.rb index 9de0f64e0..73c8cebbe 100644 --- a/test/jobs/trace_importer_job_test.rb +++ b/test/jobs/trace_importer_job_test.rb @@ -1,7 +1,64 @@ -require 'test_helper' +require "test_helper" +require "minitest/mock" class TraceImporterJobTest < ActiveJob::TestCase - # test "the truth" do - # assert true - # end + def test_success_notification + # Check that the user gets a success notification when the trace has valid points + trace = create(:trace) + + gpx = Minitest::Mock.new + def gpx.actual_points + 5 + end + + trace.stub(:import, gpx) do + perform_enqueued_jobs do + TraceImporterJob.perform_now(trace) + end + end + + assert_performed_jobs 1 + + email = ActionMailer::Base.deliveries.last + assert_equal trace.user.email, email.to[0] + assert_match(/success/, email.subject) + end + + def test_failure_notification + # Check that the user gets a failure notification when the trace has no valid points + trace = create(:trace) + + gpx = Minitest::Mock.new + def gpx.actual_points + 0 + end + + trace.stub(:import, gpx) do + perform_enqueued_jobs do + TraceImporterJob.perform_now(trace) + end + end + + assert_performed_jobs 1 + + email = ActionMailer::Base.deliveries.last + assert_equal trace.user.email, email.to[0] + assert_match(/failure/, email.subject) + 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 + end + + assert_performed_jobs 1 + + email = ActionMailer::Base.deliveries.last + assert_equal trace.user.email, email.to[0] + assert_match(/failure/, email.subject) + end end -- 2.43.2