I’ve got a simple ActionMailer::Base subclass:
class InfoMailer < ActionMailer::Base
def info(user, zip_name)
recipients user.email
subject "Requested Info"
attachment(:content_type => "application/zip",
:filename => zip_name,
:body => File.read(zip_name))
body(:message => "Here is the Info that you Requested")
end
end
I’m trying to spec this following
http://www.rubytutorials.net/2008/02/26/small-rspec-revelations-actionmailer/
describe AssetsInfoMailer do
before(:each) do
@user = mock_model(User,
:email => @user_email = “[email protected]”,
:full_name => “The Wicked Witch of the West”
)
ActionMailer::Base.delivery_method = :test
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.deliveries = []
end
describe “.info” do
before(:each) do
@path = ‘xyz.zip’
@attachment_body = ‘zip_file_contents’
File.stub!(:read).and_return(@attachment_body)
@the_mail = AssetsInfoMailer.deliver_info(@user,@path)
@attachments = @the_mail.attachments
end
it "should have the right body" do
@the_mail.body.should == ""
end
end
The expectation of an empty string is just to see what’s actually
getting
returned, the result is:
‘AssetsInfoMailer.info should have the right body’ FAILED
expected: “”,
got: “Attachment: xyz.zip\n” (using ==)
It’s looking like the mail template never got rendered, and body is
giving
me the attachment since it’s the only part.
I’ve got one other mailer method in that mailer which doesn’t contain an
attachement, and it’s body comes out fine.
I’m not sure what’s going on here, and I’d appreciate any
help/insight/condolences…
–
Rick DeNatale
Blog: http://talklikeaduck.denhaven2.com/
Twitter: http://twitter.com/RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale