1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
module EmailSpec
module MailerDeliveries
def all_emails
deliveries
end
def last_email_sent
deliveries.last || raise("No email has been sent!")
end
def reset_mailer
if defined?(ActionMailer) && ActionMailer::Base.delivery_method == :cache
mailer.clear_cache
else
deliveries.clear
end
end
def mailbox_for(address)
deliveries.select { |email| email.destinations.include?(address) }
end
protected
def deliveries
if ActionMailer::Base.delivery_method == :cache
mailer.cached_deliveries
else
mailer.deliveries
end
end
end
module ARMailerDeliveries
def all_emails
Email.all.map{ |email| parse_to_mail(email) }
end
def last_email_sent
if email = Email.last
parse_to_mail(email)
else
raise("No email has been sent!")
end
end
def reset_mailer
Email.delete_all
end
def mailbox_for(address)
Email.all.select { |email| email.destinations.include?(address) }.map{ |email| parse_to_mail(email) }
end
def parse_to_mail(email)
Mail.read(email.mail)
end
end
if defined?(Pony)
module ::Pony
def self.deliveries
@deliveries ||= []
end
def self.mail(options)
deliveries << build_mail(options)
end
end
end
module Deliveries
if defined?(Pony)
def deliveries; Pony::deliveries ; end
include EmailSpec::MailerDeliveries
elsif ActionMailer::Base.delivery_method == :activerecord
include EmailSpec::ARMailerDeliveries
else
def mailer; ActionMailer::Base; end
include EmailSpec::MailerDeliveries
end
end
end
|