diff --git a/lib/action_mailroom/test_helper.rb b/lib/action_mailroom/test_helper.rb index 06a38f75b6..7f56831f36 100644 --- a/lib/action_mailroom/test_helper.rb +++ b/lib/action_mailroom/test_helper.rb @@ -2,11 +2,17 @@ module ActionMailroom module TestHelper # Create an InboundEmail record using an eml fixture in the format of message/rfc822 # referenced with +fixture_name+ located in +test/fixtures/files/fixture_name+. - def create_inbound_email(fixture_name, status: :processing) - raw_email = ActiveStorage::Blob.create_after_upload! \ - io: file_fixture(fixture_name).open, filename: fixture_name, content_type: 'message/rfc822' - - ActionMailroom::InboundEmail.create!(status: status, raw_email: raw_email) + def create_inbound_email_from_fixture(fixture_name, status: :processing) + create_inbound_email file_fixture(fixture_name).open, filename: fixture_name, status: status end + + def create_inbound_email_from_mail(status: :processing, &block) + create_inbound_email(StringIO.new(Mail.new { instance_eval(&block) }.to_s), status: status) + end + + def create_inbound_email(io, filename: 'mail.eml', status: status) + ActionMailroom::InboundEmail.create! status: status, raw_email: + ActiveStorage::Blob.create_after_upload!(io: io, filename: filename, content_type: 'message/rfc822') + end end end diff --git a/test/unit/inbound_email/incineration_test.rb b/test/unit/inbound_email/incineration_test.rb index f2464b8cb8..3de0af3225 100644 --- a/test/unit/inbound_email/incineration_test.rb +++ b/test/unit/inbound_email/incineration_test.rb @@ -5,7 +5,7 @@ class ActionMailroom::InboundEmail::IncinerationTest < ActiveSupport::TestCase freeze_time assert_enqueued_with job: ActionMailroom::InboundEmail::IncinerationJob, at: 30.days.from_now do - create_inbound_email("welcome.eml").delivered! + create_inbound_email_from_fixture("welcome.eml").delivered! end end end diff --git a/test/unit/mailbox/callbacks_test.rb b/test/unit/mailbox/callbacks_test.rb index ada6410876..4cafeb3534 100644 --- a/test/unit/mailbox/callbacks_test.rb +++ b/test/unit/mailbox/callbacks_test.rb @@ -13,7 +13,7 @@ end class ActionMailroom::Mailbox::CallbacksTest < ActiveSupport::TestCase setup do $before_processing = $after_processing = $around_processing = $processed = false - @inbound_email = create_inbound_email("welcome.eml") + @inbound_email = create_inbound_email_from_fixture("welcome.eml") end test "all callback types" do diff --git a/test/unit/mailbox/routing_test.rb b/test/unit/mailbox/routing_test.rb index 6026686bea..4a8ed10eb0 100644 --- a/test/unit/mailbox/routing_test.rb +++ b/test/unit/mailbox/routing_test.rb @@ -13,7 +13,7 @@ end class ActionMailroom::Mailbox::RoutingTest < ActiveSupport::TestCase setup do $processed = false - @inbound_email = create_inbound_email("welcome.eml") + @inbound_email = create_inbound_email_from_fixture("welcome.eml") end test "string routing" do @@ -23,7 +23,7 @@ class ActionMailroom::Mailbox::RoutingTest < ActiveSupport::TestCase test "delayed routing" do perform_enqueued_jobs only: ActionMailroom::RoutingJob do - another_inbound_email = create_inbound_email("welcome.eml", status: :pending) + another_inbound_email = create_inbound_email_from_fixture("welcome.eml", status: :pending) assert_equal "Discussion: Let's debate these attachments", $processed end end diff --git a/test/unit/mailbox/state_test.rb b/test/unit/mailbox/state_test.rb index 41fbafbd67..d73ecaa1e2 100644 --- a/test/unit/mailbox/state_test.rb +++ b/test/unit/mailbox/state_test.rb @@ -17,7 +17,7 @@ end class ActionMailroom::Mailbox::StateTest < ActiveSupport::TestCase setup do $processed = false - @inbound_email = create_inbound_email("welcome.eml") + @inbound_email = create_inbound_email_from_fixture("welcome.eml") end test "successful mailbox processing leaves inbound email in delivered state" do diff --git a/test/unit/router_test.rb b/test/unit/router_test.rb index 6bfd880b67..fa7ac2ba19 100644 --- a/test/unit/router_test.rb +++ b/test/unit/router_test.rb @@ -15,8 +15,12 @@ module ActionMailroom end test "routed to mailbox" do - @router.route create_inbound_email("welcome.eml") - assert_equal "Discussion: Let's debate these attachments", $processed + @router.route create_inbound_email_from_mail { + to "replies@example.com" + subject "This is a reply" + } + + assert_equal "This is a reply", $processed end end end