提交 d41e4c1c 编写于 作者: L Luca Guidi

Make sure ActionMailer use default charset if no defined by current locale

上级 8f74ba96
......@@ -346,10 +346,10 @@ class Base
# Specify the charset to use for the message.
# It performs a lookup, on the specified charset, then on the charset from
# the current locale, and, finally, on the +default_charset+ specified
# the current locale, and, in the end, on the +default_charset+ specified
# for ActionMailer::Base.
def charset(charset = nil)
@charset ||= charset || I18n.translate(:charset) || @@default_charset
@charset ||= charset || I18n.translate(:charset, :default => @@default_charset)
end
attr_writer :charset
......
......@@ -59,28 +59,26 @@ def test_should_use_locale_charset
end
def test_should_use_default_charset_if_no_current_locale
uses_locale nil do
with_locale nil do
assert_equal @charset, mail.charset
end
end
def test_mail_headers_should_contains_current_charset
uses_locale 'de-DE' do
with_locale 'de-DE' do
assert_match /iso-8859-1/, mail.header['content-type'].body
end
end
def test_should_use_charset_from_current_locale
uses_locale 'de-DE' do
with_locale 'de-DE' do
assert_equal 'iso-8859-1', mail.charset
end
end
def test_should_raise_exception_if_current_locale_doesnt_specify_a_charset
assert_raise I18n::MissingTranslationData do
uses_locale 'en-GB' do
mail
end
def test_should_use_default_charset_if_missing_for_current_locale
with_locale 'en-GB' do
assert_equal @charset, mail.charset
end
end
......@@ -89,7 +87,7 @@ def test_should_use_explicit_charset
end
def test_mail_parts_charsets
uses_locale 'de-DE' do
with_locale 'de-DE' do
charsets = mail('multiparted').parts.map(&:charset)
assert_equal 'iso-8859-1', charsets[0]
assert_equal 'iso-8859-1', charsets[1]
......@@ -98,7 +96,7 @@ def test_mail_parts_charsets
end
def test_mail_parts_headers
uses_locale 'de-DE' do
with_locale 'de-DE' do
content_types = mail('multiparted').parts.map(&:header).map do |header|
header['content-type'].body
end
......@@ -111,7 +109,7 @@ def test_mail_parts_headers
# TODO: this case depends on XML Builder,
# should we pass Builder::XmlMarkup.new :encoding => charset_from_i18n ?
def _ignore_test_rxml_template_should_use_current_charset
uses_locale 'de-DE' do
with_locale 'de-DE' do
assert_equal "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<test/>",
mail('rxml_template').body.strip
end
......@@ -122,7 +120,7 @@ def mail(method = 'use_locale_charset')
I18nMailer.__send__('create_' + method, @recipient)
end
def uses_locale(locale, &block)
def with_locale(locale, &block)
begin
I18n.locale = locale
yield
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册