To add a collaborator to this project you will need to use the Relish gem to add the collaborator via a terminal command. Soon you'll be able to also add collaborators here!
More about adding a collaboratoraction mailbox spec
Mailbox specs provide alternative assertions to those available in ActiveMailbox::TestHelper
and help assert behaviour of how the email
are routed, delivered, bounced or failed.
Mailbox specs are marked by type: :mailbox
or if you have set
config.infer_spec_type_from_file_location!
by placing them in spec/mailboxes
.
With mailbox specs you can:
process(mail_or_attributes)
- send mail directly to the mailbox under test forprocess
ing.receive_inbound_email(mail_or_attributes)
- matcher for asserting whether incoming email would route to the mailbox under test.have_been_delivered
- matcher for asserting whether an incoming email object was delivered.have_bounced
- matcher for asserting whether an incoming email object has bounced.have_failed
- matcher for asserting whether an incoming email object has failed.
- Background
-
- Given
- action mailbox is available
- Scenarios
-
- Simple testing mail properly routed
-
- Given
-
a file named "app/mailboxes/application_mailbox.rb" with:
class ApplicationMailbox < ActionMailbox::Base routing (/^[email protected]/i) => :inbox end
- And
-
a file named "app/maiboxes/inbox_mailbox.rb" with:
class InboxMailbox < ApplicationMailbox def process case mail.subject when (/^\[\d*\]/i) # ok when (/^\[\w*\]/i) bounced! else raise "Invalid email subject" end end end
- And
-
a file named "spec/mailboxes/inbox_mailbox_spec.rb" with:
require 'rails_helper' RSpec.describe InboxMailbox, type: :mailbox do it "route email to properly mailbox" do expect(InboxMailbox) .to receive_inbound_email(to: "[email protected]") end it "marks email as delivered when number tag in subject is valid" do mail = Mail.new( from: "[email protected]", subject: "[141982763] support ticket" ) mail_processed = process(mail) expect(mail_processed).to have_been_delivered end it "marks email as bounced when number tag in subject is invalid" do mail = Mail.new( from: "[email protected]", subject: "[111X] support ticket" ) mail_processed = process(mail) expect(mail_processed).to have_bounced end it "marks email as failed when subject is invalid" do mail = Mail.new( from: "[email protected]", subject: "INVALID" ) expect { expect(process(mail)).to have_failed }.to raise_error(/Invalid email subject/) end end
- When
-
I run
rspec spec/mailboxes/inbox_mailbox_spec.rb
- Then
- the example should pass
Last published 9 months ago by Jon Rowe.