diff options
| author | luuduong <luuduong@gmail.com> | 2014-01-11 08:54:15 -0700 |
|---|---|---|
| committer | luuduong <luuduong@gmail.com> | 2014-01-11 08:54:15 -0700 |
| commit | d395ce2a6c26df728dca1463bafb3fbc3053ecee (patch) | |
| tree | 9ccd2cd649a9248515a9f2cf80e9f9964d094396 | |
| parent | 53ac765a11f59217025081dc3cbf1862712f5062 (diff) | |
| parent | dadaac2417bec87c9f61c0aaf84879b92721cde4 (diff) | |
Merged in mocheen/cakeside/5 (pull request #30)
Send welcome email when someone registers.
| -rw-r--r-- | app/mailers/user_mailer.rb | 9 | ||||
| -rw-r--r-- | app/models/user.rb | 5 | ||||
| -rw-r--r-- | app/views/user_mailer/welcome_email.html.erb | 18 | ||||
| -rw-r--r-- | app/views/user_mailer/welcome_email.text.erb | 9 | ||||
| -rw-r--r-- | config/environments/development.rb | 11 | ||||
| -rw-r--r-- | spec/mailers/user_mailer_spec.rb | 24 | ||||
| -rw-r--r-- | spec/models/user_spec.rb | 14 |
7 files changed, 90 insertions, 0 deletions
diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb new file mode 100644 index 00000000..34afa204 --- /dev/null +++ b/app/mailers/user_mailer.rb @@ -0,0 +1,9 @@ +class UserMailer < ActionMailer::Base + default from: "noreply@cakeside.com" + + def welcome_email(user) + @url = 'https://www.cakeside.com/login' + @user = user + mail(to: @user.email, subject: "Welcome to CakeSide") + end +end diff --git a/app/models/user.rb b/app/models/user.rb index b7c6e9f4..b9203eab 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -8,6 +8,7 @@ class User < ActiveRecord::Base before_save :geocode, :reverse_geocode before_save :ensure_authentication_token + after_create :send_welcome_email validates :name, :presence => true validates :website, :format => URI::regexp(%w(http https)), :allow_blank => true @@ -50,6 +51,10 @@ class User < ActiveRecord::Base self.is_admin end + def send_welcome_email + UserMailer.delay.welcome_email(self) + end + class << self def ordered User.order(:creations_count => :desc) diff --git a/app/views/user_mailer/welcome_email.html.erb b/app/views/user_mailer/welcome_email.html.erb new file mode 100644 index 00000000..b45760fc --- /dev/null +++ b/app/views/user_mailer/welcome_email.html.erb @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<html> + <head> + <meta content='text/html; charset=UTF-8' http-equiv='Content-Type' /> + </head> + <body> + <h1>Welcome to CakeSide.com, <%= @user.name %></h1> + <p> + You have successfully signed up to cakeside.com, + your username is: <%= @user.email %>.<br/> + </p> + <p> + To login to the site, just follow this link: <%= @url %>. + </p> + <p>Thanks for joining and have a great day!</p> + </body> +</html> + diff --git a/app/views/user_mailer/welcome_email.text.erb b/app/views/user_mailer/welcome_email.text.erb new file mode 100644 index 00000000..555815f0 --- /dev/null +++ b/app/views/user_mailer/welcome_email.text.erb @@ -0,0 +1,9 @@ +Welcome to CakeSide.com, <%= @user.name %> + +You have successfully signed up to cakeside.com, +your username is: <%= @user.email %>.<br/> + +To login to the site, just follow this link: <%= @url %>. + +Thanks for joining and have a great day! + diff --git a/config/environments/development.rb b/config/environments/development.rb index 844f433f..0cab3255 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -26,6 +26,17 @@ Cake::Application.configure do # This option may cause significant delays in view rendering with a large # number of complex assets. config.assets.debug = true + + config.action_mailer.smtp_settings = { + :address => ENV['SMTP_HOST'], + :port => ENV['SMTP_PORT'], + :domain => ENV['SMTP_DOMAIN'], + :user_name => ENV['SMTP_USERNAME'], + :password => ENV['SMTP_PASSWORD'], + :authentication => :plain, + :enable_starttls_auto => true + } + config.after_initialize do Bullet.enable = true Bullet.alert = true diff --git a/spec/mailers/user_mailer_spec.rb b/spec/mailers/user_mailer_spec.rb new file mode 100644 index 00000000..48728a6e --- /dev/null +++ b/spec/mailers/user_mailer_spec.rb @@ -0,0 +1,24 @@ +require "spec_helper" + +describe UserMailer do + context "send welcome email" do + let(:user) { build(:user) } + let(:mail) { UserMailer.welcome_email(user) } + + it "adds a subject" do + mail.subject.should == "Welcome to CakeSide" + end + + it "sends to the users email" do + mail.to.should include user.email + end + + it "should send from the correct address" do + mail.from.should include 'noreply@cakeside.com' + end + + it "includes their name" do + mail.body.encoded.should match(user.name) + end + end +end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index ae2e61be..1af5bb9d 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -118,4 +118,18 @@ describe User do results.last.should == first_person end end + + describe "send welcome email" do + let(:user) { build(:user) } + let(:mailer) { double("mailer", welcome_email: true) } + + before :each do + UserMailer.stub(:delay).and_return(mailer) + user.send_welcome_email + end + + it "should send the email" do + mailer.should have_received(:welcome_email).with(user) + end + end end |
