On Fri, Mar 20, 2009 at 11:46 AM, Zach Dennis <zach.den...@gmail.com> wrote:
> On Fri, Mar 20, 2009 at 11:11 AM, Zach Dennis <zach.den...@gmail.com> > wrote: > > 2009/3/18 Rick DeNatale <rick.denat...@gmail.com>: > >> 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 = "somewh...@over.the.rainbow", > >> :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: > >> 1) > >> '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... > >> > > > > When sending attachments emails are sent as multipart messages. The > > only part being specified is the attachment. The other call to "body" > > is being ignored. Try something like: > > > > def info(user, zip_name) > > recipients user.email > > subject "Requested Info" > > attachment(:content_type => "application/zip", > > :filename => zip_name, > > :body => File.read(zip_name)) > > part "text/plain" do |p| > > p.body(:message => "Here is the Info that you Requested") > > end > > end > > I just tried my out, and while it does work because there are multiple > parts specified, also re-ordering of the initial #body to come before > the attachment doesn't seem to help with the original code either. > > I'm curious now what you do find out and which route you decide to go, > keep us posted either way Rick. I ende up with pretty much the above, but with p.body(render_message('info', :message =>... since there was a template to render.
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users