1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Only deliver pending emails to the mailroom

Makes it easier to test without triggering this behavior.
This commit is contained in:
David Heinemeier Hansson 2018-09-18 17:28:35 -07:00
parent d1329efd81
commit 26bfd1c59c
3 changed files with 14 additions and 3 deletions

View file

@ -7,7 +7,7 @@ class ActionMailroom::InboundEmail < ActiveRecord::Base
enum status: %i[ pending processing delivered failed bounced ]
# after_create_commit :deliver_to_mailroom_later
after_create_commit :deliver_to_mailroom_later, if: ->(r) { r.pending? }
def mail

View file

@ -2,8 +2,8 @@ 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)
ActionMailroom::InboundEmail.create!.tap do |inbound_email|
def create_inbound_email(fixture_name, status: :processing)
ActionMailroom::InboundEmail.create!(status: status).tap do |inbound_email|
inbound_email.raw_email.attach \
ActiveStorage::Blob.create_after_upload! \
io: file_fixture(fixture_name).open, filename: fixture_name, content_type: 'message/rfc822'

View file

@ -0,0 +1,11 @@
require_relative '../../test_helper'
class ActionMailroom::InboundEmail::DeliverToMailroomTest < ActiveSupport::TestCase
include ActiveJob::TestHelper
test "pending emails are delivered to the mailroom" do
assert_enqueued_jobs 1, only: ActionMailroom::DeliverInboundEmailToMailroomJob do
create_inbound_email("welcome.eml", status: :pending)
end
end
end