Mailer subjects namespaced by model

This commit is contained in:
Carlos A. da Silva
2009-10-20 01:28:01 -02:00
parent d26f90f72b
commit 0eb8b3b7cc
7 changed files with 123 additions and 36 deletions

View File

@@ -1,42 +1,59 @@
require 'test_helper'
require 'test/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
def user
@user ||= create_user
end
def mail
@mail ||= begin
user
ActionMailer::Base.deliveries.first
end
end
test 'email sent after creating the user' do
assert_not_nil @mail
assert_not_nil mail
end
test 'content type should be set to html' do
assert_equal 'text/html', @mail.content_type
assert_equal 'text/html', mail.content_type
end
test 'send confirmation instructions to the user email' do
assert_equal [@user.email], @mail.to
mail
assert_equal [user.email], mail.to
end
test 'setup sender from configuration' do
assert_equal ['test@example.com'], @mail.from
assert_equal ['test@example.com'], mail.from
end
test 'setup subject from I18n' do
assert_equal 'Account Confirmation', @mail.subject
store_translations :en, :devise => { :notifier => { :confirmation_instructions => 'Account Confirmation' } } do
assert_equal 'Account Confirmation', mail.subject
end
end
test 'subject namespaced by model' do
store_translations :en, :devise => { :notifier => { :user => { :confirmation_instructions => 'User Account Confirmation' } } } do
assert_equal 'User Account Confirmation', mail.subject
end
end
test 'body should have user info' do
assert_match /#{@user.email}/, @mail.body
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}/users/confirmation\?confirmation_token=#{@user.confirmation_token}">}
assert_match confirmation_url_regexp, @mail.body
confirmation_url_regexp = %r{<a href=\"http://#{host}/users/confirmation\?confirmation_token=#{user.confirmation_token}">}
assert_match confirmation_url_regexp, mail.body
end
end

View File

@@ -1,43 +1,62 @@
require 'test_helper'
require 'test/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
@user.send_reset_password_instructions
@mail = ActionMailer::Base.deliveries.last
end
def user
@user ||= begin
user = create_user
user.send_reset_password_instructions
user
end
end
def mail
@mail ||= begin
user
ActionMailer::Base.deliveries.last
end
end
test 'email sent after reseting the user password' do
assert_not_nil @mail
assert_not_nil mail
end
test 'content type should be set to html' do
assert_equal 'text/html', @mail.content_type
assert_equal 'text/html', mail.content_type
end
test 'send confirmation instructions to the user email' do
assert_equal [@user.email], @mail.to
assert_equal [user.email], mail.to
end
test 'setup sender from configuration' do
assert_equal ['test@example.com'], @mail.from
assert_equal ['test@example.com'], mail.from
end
test 'setup subject from I18n' do
assert_equal 'Reset instructions', @mail.subject
store_translations :en, :devise => { :notifier => { :reset_password_instructions => 'Reset instructions' } } do
assert_equal 'Reset instructions', mail.subject
end
end
test 'subject namespaced by model' do
store_translations :en, :devise => { :notifier => { :user => { :reset_password_instructions => 'User Reset Instructions' } } } do
assert_equal 'User Reset Instructions', mail.subject
end
end
test 'body should have user info' do
assert_match /#{@user.email}/, @mail.body
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}/users/password/edit\?reset_password_token=#{@user.reset_password_token}">}
assert_match confirmation_url_regexp, @mail.body
reset_url_regexp = %r{<a href=\"http://#{host}/users/password/edit\?reset_password_token=#{user.reset_password_token}">}
assert_match reset_url_regexp, mail.body
end
end

View File

@@ -3,6 +3,15 @@ class ActiveSupport::TestCase
ActionMailer::Base.deliveries = []
end
def store_translations(locale, translations, &block)
begin
I18n.backend.store_translations locale, translations
yield
ensure
I18n.reload!
end
end
# Helpers for creating new users
#
def generate_unique_email