diff --git a/app/models/notifier.rb b/app/models/notifier.rb
index 941bd642..1f46af98 100644
--- a/app/models/notifier.rb
+++ b/app/models/notifier.rb
@@ -1,12 +1,21 @@
class Notifier < ::ActionMailer::Base
+ cattr_accessor :sender
def confirmation_instructions(record)
- # TODO: configure email
+ from self.class.sender
+ recipients record.email
+ subject I18n.t(:confirmation_instructions, :scope => [:devise, :notifier], :default => 'Confirmation instructions')
+ sent_on Time.now
+ content_type 'text/html'
+ body record.class.name.downcase.to_sym => record
end
def reset_password_instructions(record)
- # TODO
+ from self.class.sender
+ recipients record.email
+ subject I18n.t(:reset_password_instructions, :scope => [:devise, :notifier], :default => 'Reset password instructions')
+ sent_on Time.now
+ content_type 'text/html'
+ body record.class.name.downcase.to_sym => record
end
end
-
-#Devise::Notifier.template_root = File.join(File.dirname(__FILE__), '..', 'views')
diff --git a/app/views/notifier/confirmation_instructions.html.erb b/app/views/notifier/confirmation_instructions.html.erb
index e69de29b..d72dca26 100644
--- a/app/views/notifier/confirmation_instructions.html.erb
+++ b/app/views/notifier/confirmation_instructions.html.erb
@@ -0,0 +1,5 @@
+Welcome <%= @user.email %>!
+
+You can confirm your account through the link below:
+
+<%= link_to 'Confirm my account', confirmation_url(:perishable_token => @user.perishable_token) %>
diff --git a/app/views/notifier/reset_password_instructions.html.erb b/app/views/notifier/reset_password_instructions.html.erb
index e69de29b..ca529167 100644
--- a/app/views/notifier/reset_password_instructions.html.erb
+++ b/app/views/notifier/reset_password_instructions.html.erb
@@ -0,0 +1,8 @@
+Hello <%= @user.email %>!
+
+Someone has requested a link to change your password, and you can do this through the link below.
+
+<%= link_to 'Change my password', edit_password_url(:perishable_token => @user.perishable_token) %>
+
+If you didn't request this, please ignore this email.
+Your password won't change until you access the link above and create a new one.
diff --git a/test/mailers/confirmation_instructions_test.rb b/test/mailers/confirmation_instructions_test.rb
new file mode 100644
index 00000000..ea39197a
--- /dev/null
+++ b/test/mailers/confirmation_instructions_test.rb
@@ -0,0 +1,42 @@
+require 'test_helper'
+
+class ConfirmationInstructionsTest < ActionMailer::TestCase
+
+ def setup
+ setup_mailer
+ I18n.backend.store_translations :en, {:devise => { :notifier => { :confirmation_instructions => 'Account Confirmation' } }}
+ Notifier.sender = 'test@example.com'
+ @user = create_user
+ @mail = ActionMailer::Base.deliveries.first
+ end
+
+ test 'email sent after creating the user' do
+ assert_not_nil @mail
+ end
+
+ test 'content type should be set to html' do
+ assert_equal 'text/html', @mail.content_type
+ end
+
+ test 'send confirmation instructions to the user email' do
+ assert_equal [@user.email], @mail.to
+ end
+
+ test 'setup sender from configuration' do
+ assert_equal ['test@example.com'], @mail.from
+ end
+
+ test 'setup subject from I18n' do
+ assert_equal 'Account Confirmation', @mail.subject
+ end
+
+ test 'body should have user info' do
+ assert_match /#{@user.email}/, @mail.body
+ end
+
+ test 'body should have link to confirm the account' do
+ host = ActionMailer::Base.default_url_options[:host]
+ confirmation_url_regexp = %r{}
+ assert_match confirmation_url_regexp, @mail.body
+ end
+end
diff --git a/test/mailers/notifier_test.rb b/test/mailers/notifier_test.rb
deleted file mode 100644
index b1bfb5bd..00000000
--- a/test/mailers/notifier_test.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'test_helper'
-
-class NotifierTest < ActionMailer::TestCase
-
- # TODO
-end
-
diff --git a/test/mailers/reset_password_instructions_test.rb b/test/mailers/reset_password_instructions_test.rb
new file mode 100644
index 00000000..4b5f06c3
--- /dev/null
+++ b/test/mailers/reset_password_instructions_test.rb
@@ -0,0 +1,42 @@
+require 'test_helper'
+
+class ResetPasswordInstructionsTest < ActionMailer::TestCase
+
+ def setup
+ setup_mailer
+ I18n.backend.store_translations :en, {:devise => { :notifier => { :reset_password_instructions => 'Reset instructions' } }}
+ Notifier.sender = 'test@example.com'
+ @user = create_user
+ @mail = Notifier.deliver_reset_password_instructions(@user)
+ end
+
+ test 'email sent after reseting the user password' do
+ assert_not_nil @mail
+ end
+
+ test 'content type should be set to html' do
+ assert_equal 'text/html', @mail.content_type
+ end
+
+ test 'send confirmation instructions to the user email' do
+ assert_equal [@user.email], @mail.to
+ end
+
+ test 'setup sender from configuration' do
+ assert_equal ['test@example.com'], @mail.from
+ end
+
+ test 'setup subject from I18n' do
+ assert_equal 'Reset instructions', @mail.subject
+ end
+
+ test 'body should have user info' do
+ assert_match /#{@user.email}/, @mail.body
+ end
+
+ test 'body should have link to confirm the account' do
+ host = ActionMailer::Base.default_url_options[:host]
+ confirmation_url_regexp = %r{}
+ assert_match confirmation_url_regexp, @mail.body
+ end
+end
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 78b78ce2..e4d7639b 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -14,6 +14,7 @@ require 'integration_tests_helper'
ActionMailer::Base.delivery_method = :test
ActionMailer::Base.perform_deliveries = true
+ActionMailer::Base.default_url_options[:host] = 'test.com'
ActiveRecord::Migration.verbose = false
ActiveRecord::Base.logger = Logger.new(nil)