summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluuduong <luuduong@gmail.com>2014-01-11 08:54:15 -0700
committerluuduong <luuduong@gmail.com>2014-01-11 08:54:15 -0700
commitd395ce2a6c26df728dca1463bafb3fbc3053ecee (patch)
tree9ccd2cd649a9248515a9f2cf80e9f9964d094396
parent53ac765a11f59217025081dc3cbf1862712f5062 (diff)
parentdadaac2417bec87c9f61c0aaf84879b92721cde4 (diff)
Merged in mocheen/cakeside/5 (pull request #30)
Send welcome email when someone registers.
-rw-r--r--app/mailers/user_mailer.rb9
-rw-r--r--app/models/user.rb5
-rw-r--r--app/views/user_mailer/welcome_email.html.erb18
-rw-r--r--app/views/user_mailer/welcome_email.text.erb9
-rw-r--r--config/environments/development.rb11
-rw-r--r--spec/mailers/user_mailer_spec.rb24
-rw-r--r--spec/models/user_spec.rb14
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