Sha256: ee447faf9371359810f3f1ea985096190d647f7b661ca00ecdde5911bdc39bb7

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 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 do |m|
        addresses = m.to || []
        addresses += m.cc if m.cc
        addresses += m.bcc if m.bcc
        addresses.include?(address)
      end
    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) }.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

1 entries across 1 versions & 1 rubygems

Version Path
tpitale-email_spec-0.2.2 lib/email_spec/deliveries.rb