Sha256: 9c94e0f657dbf47ca2059df97c80df7017ed8fe02f0a1f3d68632e555d5f228d

Contents?: true

Size: 1.36 KB

Versions: 4

Compression:

Stored size: 1.36 KB

Contents

module EmailSpec
  module TestDeliveries
    def all_emails
      ActionMailer::Base.deliveries
    end

    def last_email_sent
      ActionMailer::Base.deliveries.last || raise("No email has been sent!")
    end

    def reset_mailer
      ActionMailer::Base.deliveries.clear
    end

    def mailbox_for(address)
      address = AddressConverter.instance.convert(address)
      ActionMailer::Base.deliveries.select { |m| m.to.include?(address) || (m.bcc && m.bcc.include?(address)) || (m.cc && m.cc.include?(address)) }
    end
  end

  module ARMailerDeliveries
    def all_emails
      Email.all.map{ |email| parse_to_tmail(email) }
    end

    def last_email_sent
      if email = Email.last
        TMail::Mail.parse(email.mail)
      else
        raise("No email has been sent!")
      end
    end

    def reset_mailer
      Email.delete_all
    end

    def mailbox_for(address)
      address = AddressConverter.instance.convert(address)
      Email.all.select { |email| email.to.include?(address) || email.bcc.include?(address) || email.cc.include?(address) }.map{ |email| parse_to_tmail(email) }
    end

    def parse_to_tmail(email)
      TMail::Mail.parse(email.mail)
    end
  end

  module Deliveries
    if ActionMailer::Base.delivery_method == :activerecord
      include EmailSpec::ARMailerDeliveries
    else
      include EmailSpec::TestDeliveries
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
bmabey-email_spec-0.2.1 lib/email_spec/deliveries.rb
bmabey-email_spec-0.3.0 lib/email_spec/deliveries.rb
email_spec-0.3.0 lib/email_spec/deliveries.rb
email_spec-0.2.1 lib/email_spec/deliveries.rb