Creating notification tests and views.

This commit is contained in:
Carlos A. da Silva
2009-10-08 11:31:51 -03:00
parent 3b5f1437b5
commit 1bd14eadfa
7 changed files with 111 additions and 11 deletions

View File

@@ -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')

View File

@@ -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) %>

View File

@@ -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.

View File

@@ -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{<a href=\"http://#{host}/confirmation\?perishable_token=#{@user.perishable_token}">}
assert_match confirmation_url_regexp, @mail.body
end
end

View File

@@ -1,7 +0,0 @@
require 'test_helper'
class NotifierTest < ActionMailer::TestCase
# TODO
end

View File

@@ -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{<a href=\"http://#{host}/password/edit\?perishable_token=#{@user.perishable_token}">}
assert_match confirmation_url_regexp, @mail.body
end
end

View File

@@ -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)