Continued work on various models and specs
[merb_mart.git] / spec / mailers / user_mailer_spec.rb
blobccf0b0832878626c17c2ae1057b0d9cf373ea09a
1 require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
2 require File.join( File.dirname(__FILE__), "..", "user_spec_helper")
3 require File.join( File.dirname(__FILE__), "..", "authenticated_system_spec_helper")
5 describe UserMailer do
6   
7   def deliver(action, mail_opts= {}, opts = {})
8     UserMailer.dispatch_and_deliver(action, mail_opts, opts)
9     @delivery = Merb::Mailer.deliveries.last
10   end
11   
12   before(:each) do
13     @u = User.new(:email => "homer@simpsons.com", :login => "homer", :activation_code => "12345")
14     @mailer_params = { :from      => "info@mysite.com",
15                        :to        => @u.email,
16                        :subject   => "Welcome to MySite.com" }
17   end
18   
19   after(:each) do
20     Merb::Mailer.deliveries.clear
21   end
22   
23   it "should send mail to homer@simpsons.com for the signup email" do
24     deliver(:signup_notification, @mailer_params, :user => @u)
25     @delivery.assigns(:headers).should include("to: homer@simpsons.com")
26   end
27   
28   it "should send the mail from 'info@mysite.com' for the signup email" do
29     deliver(:signup_notification, @mailer_params, :user => @u)
30     @delivery.assigns(:headers).should include("from: info@mysite.com")
31   end
32   
33   it "should mention the users login in the text signup mail" do
34     deliver(:signup_notification, @mailer_params, :user => @u)
35     @delivery.text.should include(@u.login)
36   end
37   
38   it "should mention the users login in the HTML signup mail" do
39     deliver(:signup_notification, @mailer_params, :user => @u)
40     @delivery.html.should include(@u.login)
41   end
42   
43   it "should mention the activation link in the signup emails" do
44     deliver(:signup_notification, @mailer_params, :user => @u)
45     the_url = UserMailer.new.url(:user_activation, :activation_code => @u.activation_code)
46     the_url.should_not be_nil
47     @delivery.text.should include( the_url )   
48     @delivery.html.should include( the_url )
49   end
50   
51   it "should send mail to homer@simpson.com for the activation email" do
52     deliver(:activation_notification, @mailer_params, :user => @u)
53     @delivery.assigns(:headers).should include("to: homer@simpsons.com")
54   end
55   
56   it "should send the mail from 'info@mysite.com' for the activation email" do
57     deliver(:activation_notification, @mailer_params, :user => @u)
58     @delivery.assigns(:headers).should include("from: info@mysite.com")    
59   end
60   
61   it "should mention ther users login in the text activation mail" do
62     deliver(:activation_notification, @mailer_params, :user => @u)
63     @delivery.text.should include(@u.login)
64   end
66   it "should mention the users login in the html activation mail" do
67     deliver(:activation_notification, @mailer_params, :user => @u)
68     @delivery.html.should include(@u.login)    
69   end
70 end