mirror of
https://github.com/heartcombo/devise.git
synced 2026-01-23 13:48:06 -05:00
Mailer subjects namespaced by model
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user