Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
b30eb39f
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b30eb39f
编写于
1月 22, 2010
作者:
J
José Valim and Mikel Lindsaar
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add more tests to new API.
上级
bb9d71ff
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
107 addition
and
48 deletion
+107
-48
actionmailer/lib/action_mailer/base.rb
actionmailer/lib/action_mailer/base.rb
+24
-14
actionmailer/lib/action_mailer/deprecated_api.rb
actionmailer/lib/action_mailer/deprecated_api.rb
+1
-1
actionmailer/test/base_test.rb
actionmailer/test/base_test.rb
+82
-33
未找到文件。
actionmailer/lib/action_mailer/base.rb
浏览文件 @
b30eb39f
...
...
@@ -277,14 +277,14 @@ class Base < AbstractController::Base
@@deliveries
=
[]
cattr_accessor
:deliveries
@@default_charset
=
"utf-8"
cattr_accessor
:default_charset
extlib_inheritable_accessor
:default_charset
self
.
default_charset
=
"utf-8"
@@default_content_type
=
"text/plain"
cattr_accessor
:default_content_type
extlib_inheritable_accessor
:default_content_type
self
.
default_content_type
=
"text/plain"
@@default_mime_version
=
"1.0"
cattr_accessor
:default_mime_version
extlib_inheritable_accessor
:default_mime_version
self
.
default_mime_version
=
"1.0"
# This specifies the order that the parts of a multipart email will be. Usually you put
# text/plain at the top so someone without a MIME capable email reader can read the plain
...
...
@@ -292,14 +292,24 @@ class Base < AbstractController::Base
#
# Any content type that is not listed here will be inserted in the order you add them to
# the email after the content types you list here.
@@default_implicit_parts_order
=
[
"text/plain"
,
"text/enriched"
,
"text/html"
]
cattr_accessor
:default_implicit_parts_order
extlib_inheritable_accessor
:default_implicit_parts_order
self
.
default_implicit_parts_order
=
[
"text/plain"
,
"text/enriched"
,
"text/html"
]
# Expose the internal Mail message
attr_reader
:message
# Pass calls to headers and attachment to the Mail#Message instance
delegate
:headers
,
:attachments
,
:to
=>
:@message
def
headers
(
args
=
nil
)
if
args
ActiveSupport
::
Deprecation
.
warn
"headers(Hash) is deprecated, please do headers[key] = value instead"
,
caller
@headers
=
args
else
@message
end
end
def
attachments
@message
.
attachments
end
class
<<
self
...
...
@@ -386,9 +396,9 @@ def mail(headers = {})
m
=
@message
m
.
content_type
||=
headers
[
:content_type
]
||
@@
default_content_type
m
.
charset
||=
headers
[
:charset
]
||
@@
default_charset
m
.
mime_version
||=
headers
[
:mime_version
]
||
@@
default_mime_version
m
.
content_type
||=
headers
[
:content_type
]
||
self
.
class
.
default_content_type
m
.
charset
||=
headers
[
:charset
]
||
self
.
class
.
default_charset
m
.
mime_version
||=
headers
[
:mime_version
]
||
self
.
class
.
default_mime_version
m
.
subject
=
quote_if_necessary
(
headers
[
:subject
],
m
.
charset
)
if
headers
[
:subject
]
m
.
to
=
quote_address_if_necessary
(
headers
[
:to
],
m
.
charset
)
if
headers
[
:to
]
...
...
@@ -398,7 +408,7 @@ def mail(headers = {})
m
.
reply_to
=
quote_address_if_necessary
(
headers
[
:reply_to
],
m
.
charset
)
if
headers
[
:reply_to
]
m
.
date
=
headers
[
:date
]
if
headers
[
:date
]
m
.
body
.
set_sort_order
(
headers
[
:parts_order
]
||
@@
default_implicit_parts_order
)
m
.
body
.
set_sort_order
(
headers
[
:parts_order
]
||
self
.
class
.
default_implicit_parts_order
)
# # Set the subject if not set yet
# @subject ||= I18n.t(:subject, :scope => [:actionmailer, mailer_name, method_name],
...
...
actionmailer/lib/action_mailer/deprecated_api.rb
浏览文件 @
b30eb39f
...
...
@@ -227,7 +227,7 @@ def create_mail #:nodoc:
m
.
mime_version
=
mime_version
unless
mime_version
.
nil?
m
.
date
=
sent_on
.
to_time
rescue
sent_on
if
sent_on
headers
.
each
{
|
k
,
v
|
m
[
k
]
=
v
}
@
headers
.
each
{
|
k
,
v
|
m
[
k
]
=
v
}
real_content_type
,
ctype_attrs
=
parse_content_type
main_type
,
sub_type
=
split_content_type
(
real_content_type
)
...
...
actionmailer/test/base_test.rb
浏览文件 @
b30eb39f
...
...
@@ -37,37 +37,43 @@
# mail.deliver
#
# Notifier.welcome(user).deliver # => creates and sends the Mail in one step
class
BaseTest
<
Test
::
Unit
::
TestCase
class
BaseTest
<
ActiveSupport
::
TestCase
DEFAULT_HEADERS
=
{
:to
=>
'mikel@test.lindsaar.net'
,
:from
=>
'jose@test.plataformatec.com'
,
:subject
=>
'The first email on new API!'
}
class
TestMailer
<
ActionMailer
::
Base
def
welcome
(
hash
=
{})
hash
=
{
:to
=>
'mikel@test.lindsaar.net'
,
:from
=>
'jose@test.plataformatec.com'
,
:subject
=>
'The first email on new API!'
}.
merge!
(
hash
)
mail
(
hash
)
headers
[
'X-SPAM'
]
=
"Not SPAM"
mail
(
DEFAULT_HEADERS
.
merge
(
hash
))
end
def
invoice
(
hash
=
{})
def
attachment_with_content
attachments
[
'invoice.pdf'
]
=
'This is test File content'
hash
=
{
:to
=>
'mikel@test.lindsaar.net'
,
:from
=>
'jose@test.plataformatec.com'
,
:subject
=>
'Your invoice is attached'
}.
merge!
(
hash
)
mail
(
hash
)
mail
(
DEFAULT_HEADERS
)
end
def
attachment_with_hash
attachments
[
'invoice.jpg'
]
=
{
:content
=>
"you smiling"
,
:mime_type
=>
"image/x-jpg"
,
:transfer_encoding
=>
"base64"
}
mail
(
DEFAULT_HEADERS
)
end
end
def
test_the_method_call_to_mail_does_not_raise_error
test
"method call to mail does not raise error"
do
assert_nothing_raised
{
TestMailer
.
deliver_welcome
}
end
def
test_should_set_the_headers_of_the_mail_message
test
"mail() should set the headers of the mail message"
do
email
=
TestMailer
.
deliver_welcome
assert_equal
(
email
.
to
,
[
'mikel@test.lindsaar.net'
])
assert_equal
(
email
.
from
,
[
'jose@test.plataformatec.com'
])
assert_equal
(
email
.
subject
,
'The first email on new API!'
)
end
def
test_should_allow_all_headers_set
test
"mail() with bcc, cc, content_type, charset, mime_version, reply_to and date"
do
@time
=
Time
.
now
email
=
TestMailer
.
deliver_welcome
(
:bcc
=>
'bcc@test.lindsaar.net'
,
:cc
=>
'cc@test.lindsaar.net'
,
...
...
@@ -85,32 +91,58 @@ def test_should_allow_all_headers_set
assert_equal
(
email
.
date
,
@time
)
end
# def test_should_allow_custom_headers_to_be_set
# email = TestMailer.deliver_welcome
# assert_equal("Not SPAM", email['X-SPAM'])
# end
def
test_should_allow_you_to_send_an_attachment
assert_nothing_raised
{
TestMailer
.
deliver_invoice
}
test
"custom headers"
do
email
=
TestMailer
.
deliver_welcome
assert_equal
(
"Not SPAM"
,
email
[
'X-SPAM'
].
decoded
)
end
def
test_should_allow_you_to_send_an_attachment
email
=
TestMailer
.
deliver_
invoice
test
"attachment with content"
do
email
=
TestMailer
.
deliver_
attachment_with_content
assert_equal
(
1
,
email
.
attachments
.
length
)
assert_equal
(
'invoice.pdf'
,
email
.
attachments
[
0
].
filename
)
assert_equal
(
'This is test File content'
,
email
.
attachments
[
'invoice.pdf'
].
decoded
)
end
def
test_should_allow_you_to_send_an_attachment
email
=
TestMailer
.
deliver_
invoice
test
"attachment gets content type from filename"
do
email
=
TestMailer
.
deliver_
attachment_with_content
assert_equal
(
'invoice.pdf'
,
email
.
attachments
[
0
].
filename
)
end
def
test_should_allow_you_to_send_an_attachment
email
=
TestMailer
.
deliver_invoice
assert_equal
(
'This is test File content'
,
email
.
attachments
[
'invoice.pdf'
].
decoded
)
test
"attachment with hash"
do
email
=
TestMailer
.
deliver_attachment_with_hash
assert_equal
(
1
,
email
.
attachments
.
length
)
assert_equal
(
'invoice.jpg'
,
email
.
attachments
[
0
].
filename
)
assert_equal
(
"
\312\213\254\232
)b"
,
email
.
attachments
[
'invoice.jpg'
].
decoded
)
end
test
"uses default charset from class"
do
swap
TestMailer
,
:default_charset
=>
"US-ASCII"
do
email
=
TestMailer
.
deliver_welcome
assert_equal
(
"US-ASCII"
,
email
.
charset
)
email
=
TestMailer
.
deliver_welcome
(
:charset
=>
"iso-8559-1"
)
assert_equal
(
"iso-8559-1"
,
email
.
charset
)
end
end
def
test_should_use_class_defaults
test
"uses default content type from class"
do
swap
TestMailer
,
:default_content_type
=>
"text/html"
do
email
=
TestMailer
.
deliver_welcome
assert_equal
(
"text/html"
,
email
.
mime_type
)
email
=
TestMailer
.
deliver_welcome
(
:content_type
=>
"application/xml"
)
assert_equal
(
"application/xml"
,
email
.
mime_type
)
end
end
test
"uses default mime version from class"
do
swap
TestMailer
,
:default_mime_version
=>
"2.0"
do
email
=
TestMailer
.
deliver_welcome
assert_equal
(
"2.0"
,
email
.
mime_version
)
email
=
TestMailer
.
deliver_welcome
(
:mime_version
=>
"1.0"
)
assert_equal
(
"1.0"
,
email
.
mime_version
)
end
end
# def test_that_class_defaults_are_set_on_instantiation
...
...
@@ -120,5 +152,22 @@ def test_should_use_class_defaults
# def test_should_set_the_subject_from_i18n
# pending
# end
protected
# Execute the block setting the given values and restoring old values after
# the block is executed.
def
swap
(
object
,
new_values
)
old_values
=
{}
new_values
.
each
do
|
key
,
value
|
old_values
[
key
]
=
object
.
send
key
object
.
send
:"
#{
key
}
="
,
value
end
yield
ensure
old_values
.
each
do
|
key
,
value
|
object
.
send
:"
#{
key
}
="
,
value
end
end
end
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录