actionmailer_csi 2.3.5.p6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. data/CHANGELOG +370 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +149 -0
  4. data/Rakefile +99 -0
  5. data/install.rb +30 -0
  6. data/lib/action_mailer/adv_attr_accessor.rb +30 -0
  7. data/lib/action_mailer/base.rb +706 -0
  8. data/lib/action_mailer/helpers.rb +113 -0
  9. data/lib/action_mailer/mail_helper.rb +17 -0
  10. data/lib/action_mailer/part.rb +107 -0
  11. data/lib/action_mailer/part_container.rb +55 -0
  12. data/lib/action_mailer/quoting.rb +61 -0
  13. data/lib/action_mailer/test_case.rb +64 -0
  14. data/lib/action_mailer/test_helper.rb +68 -0
  15. data/lib/action_mailer/utils.rb +7 -0
  16. data/lib/action_mailer/vendor/text-format-0.6.3/text/format.rb +1466 -0
  17. data/lib/action_mailer/vendor/text_format.rb +10 -0
  18. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/address.rb +426 -0
  19. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/attachments.rb +46 -0
  20. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/base64.rb +46 -0
  21. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/compat.rb +41 -0
  22. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/config.rb +67 -0
  23. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/core_extensions.rb +63 -0
  24. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/encode.rb +581 -0
  25. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/header.rb +960 -0
  26. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/index.rb +9 -0
  27. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/interface.rb +1130 -0
  28. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/loader.rb +3 -0
  29. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/mail.rb +578 -0
  30. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/mailbox.rb +495 -0
  31. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/main.rb +6 -0
  32. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/mbox.rb +3 -0
  33. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/net.rb +248 -0
  34. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/obsolete.rb +132 -0
  35. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/parser.rb +1478 -0
  36. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/port.rb +379 -0
  37. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/quoting.rb +118 -0
  38. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/require_arch.rb +58 -0
  39. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/scanner.rb +49 -0
  40. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/scanner_r.rb +261 -0
  41. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/stringio.rb +280 -0
  42. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/utils.rb +337 -0
  43. data/lib/action_mailer/vendor/tmail-1.2.3/tmail/version.rb +39 -0
  44. data/lib/action_mailer/vendor/tmail-1.2.3/tmail.rb +5 -0
  45. data/lib/action_mailer/vendor/tmail.rb +17 -0
  46. data/lib/action_mailer/version.rb +9 -0
  47. data/lib/action_mailer.rb +62 -0
  48. data/lib/actionmailer.rb +2 -0
  49. data/test/abstract_unit.rb +62 -0
  50. data/test/asset_host_test.rb +54 -0
  51. data/test/delivery_method_test.rb +51 -0
  52. data/test/fixtures/asset_host_mailer/email_with_asset.html.erb +1 -0
  53. data/test/fixtures/auto_layout_mailer/hello.html.erb +1 -0
  54. data/test/fixtures/auto_layout_mailer/multipart.text.html.erb +1 -0
  55. data/test/fixtures/auto_layout_mailer/multipart.text.plain.erb +1 -0
  56. data/test/fixtures/explicit_layout_mailer/logout.html.erb +1 -0
  57. data/test/fixtures/explicit_layout_mailer/signup.html.erb +1 -0
  58. data/test/fixtures/first_mailer/share.erb +1 -0
  59. data/test/fixtures/helper_mailer/use_example_helper.erb +1 -0
  60. data/test/fixtures/helper_mailer/use_helper.erb +1 -0
  61. data/test/fixtures/helper_mailer/use_helper_method.erb +1 -0
  62. data/test/fixtures/helper_mailer/use_mail_helper.erb +5 -0
  63. data/test/fixtures/helpers/example_helper.rb +5 -0
  64. data/test/fixtures/layouts/auto_layout_mailer.html.erb +1 -0
  65. data/test/fixtures/layouts/auto_layout_mailer.text.erb +1 -0
  66. data/test/fixtures/layouts/spam.html.erb +1 -0
  67. data/test/fixtures/path.with.dots/funky_path_mailer/multipart_with_template_path_with_dots.erb +1 -0
  68. data/test/fixtures/raw_email +14 -0
  69. data/test/fixtures/raw_email10 +20 -0
  70. data/test/fixtures/raw_email12 +32 -0
  71. data/test/fixtures/raw_email13 +29 -0
  72. data/test/fixtures/raw_email2 +114 -0
  73. data/test/fixtures/raw_email3 +70 -0
  74. data/test/fixtures/raw_email4 +59 -0
  75. data/test/fixtures/raw_email5 +19 -0
  76. data/test/fixtures/raw_email6 +20 -0
  77. data/test/fixtures/raw_email7 +66 -0
  78. data/test/fixtures/raw_email8 +47 -0
  79. data/test/fixtures/raw_email9 +28 -0
  80. data/test/fixtures/raw_email_quoted_with_0d0a +14 -0
  81. data/test/fixtures/raw_email_with_invalid_characters_in_content_type +104 -0
  82. data/test/fixtures/raw_email_with_nested_attachment +100 -0
  83. data/test/fixtures/raw_email_with_partially_quoted_subject +14 -0
  84. data/test/fixtures/second_mailer/share.erb +1 -0
  85. data/test/fixtures/templates/signed_up.erb +3 -0
  86. data/test/fixtures/test_mailer/_subtemplate.text.plain.erb +1 -0
  87. data/test/fixtures/test_mailer/body_ivar.erb +2 -0
  88. data/test/fixtures/test_mailer/custom_templating_extension.text.html.haml +6 -0
  89. data/test/fixtures/test_mailer/custom_templating_extension.text.plain.haml +6 -0
  90. data/test/fixtures/test_mailer/implicitly_multipart_example.ignored.erb +1 -0
  91. data/test/fixtures/test_mailer/implicitly_multipart_example.rhtml.bak +1 -0
  92. data/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb +10 -0
  93. data/test/fixtures/test_mailer/implicitly_multipart_example.text.html.erb~ +10 -0
  94. data/test/fixtures/test_mailer/implicitly_multipart_example.text.plain.erb +2 -0
  95. data/test/fixtures/test_mailer/implicitly_multipart_example.text.yaml.erb +1 -0
  96. data/test/fixtures/test_mailer/included_subtemplate.text.plain.erb +1 -0
  97. data/test/fixtures/test_mailer/rxml_template.builder +2 -0
  98. data/test/fixtures/test_mailer/rxml_template.rxml +2 -0
  99. data/test/fixtures/test_mailer/signed_up.html.erb +3 -0
  100. data/test/fixtures/test_mailer/signed_up_with_url.erb +5 -0
  101. data/test/mail_helper_test.rb +95 -0
  102. data/test/mail_layout_test.rb +123 -0
  103. data/test/mail_render_test.rb +116 -0
  104. data/test/mail_service_test.rb +1081 -0
  105. data/test/quoting_test.rb +99 -0
  106. data/test/test_helper_test.rb +129 -0
  107. data/test/tmail_test.rb +22 -0
  108. data/test/url_test.rb +76 -0
  109. metadata +195 -0
@@ -0,0 +1,100 @@
1
+ From jamis@37signals.com Thu Feb 22 11:20:31 2007
2
+ Mime-Version: 1.0 (Apple Message framework v752.3)
3
+ Message-Id: <2CCE0408-10C7-4045-9B16-A1C11C31469B@37signals.com>
4
+ Content-Type: multipart/signed;
5
+ micalg=sha1;
6
+ boundary=Apple-Mail-42-587703407;
7
+ protocol="application/pkcs7-signature"
8
+ To: Jamis Buck <jamis@jamisbuck.org>
9
+ Subject: Testing attachments
10
+ From: Jamis Buck <jamis@37signals.com>
11
+ Date: Thu, 22 Feb 2007 11:20:31 -0700
12
+
13
+
14
+ --Apple-Mail-42-587703407
15
+ Content-Type: multipart/mixed;
16
+ boundary=Apple-Mail-41-587703287
17
+
18
+
19
+ --Apple-Mail-41-587703287
20
+ Content-Transfer-Encoding: 7bit
21
+ Content-Type: text/plain;
22
+ charset=US-ASCII;
23
+ format=flowed
24
+
25
+ Here is a test of an attachment via email.
26
+
27
+ - Jamis
28
+
29
+
30
+ --Apple-Mail-41-587703287
31
+ Content-Transfer-Encoding: base64
32
+ Content-Type: image/png;
33
+ x-unix-mode=0644;
34
+ name=byo-ror-cover.png
35
+ Content-Disposition: inline;
36
+ filename=truncated.png
37
+
38
+ iVBORw0KGgoAAAANSUhEUgAAAKUAAADXCAYAAAB7wZEQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
39
+ AAALEgAACxIB0t1+/AAAABd0RVh0Q3JlYXRpb24gVGltZQAxLzI1LzIwMDeD9CJVAAAAGHRFWHRT
40
+ b2Z0d2FyZQBBZG9iZSBGaXJld29ya3NPsx9OAAAyBWlUWHRYTUw6Y29tLmFkb2JlLnhtcDw/eHBh
41
+ Y2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1l
42
+ dGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMS1j
43
+ MDIwIDEuMjU1NzE2LCBUdWUgT2N0IDEwIDIwMDYgMjM6MTY6MzQiPgogICA8cmRmOlJERiB4bWxu
44
+ czpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAg
45
+ ICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXA9Imh0
46
+ dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eGFwOkNyZWF0b3JUb29sPkFk
47
+ b2JlIEZpcmV3b3JrcyBDUzM8L3hhcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhhcDpDcmVhdGVE
48
+ YXRlPjIwMDctMDEtMjVUMDU6Mjg6MjFaPC94YXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhhcDpN
49
+ b2RpZnlEYXRlPjIwMDctMDEtMjVUMDU6Mjg6MjFaPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgPC9y
50
+ ZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAg
51
+ ICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAg
52
+ ICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0
53
+ hhojpmnJMfaYFmSkXWg5PGCmHXVj/c9At0hSK2xGdd8F3muk0VFjb4f5Ue0ksQ8qAcq0delaXhdb
54
+ DjKNnF+3B3t9kObZYmk7AZgWYqO9anpR3wpM9sQ5XslB9a+kWyTtNb0fOmudzGHfPFBQDKesyycm
55
+ DBL7Cw5bXjIEuci+SSOm/LYnXDZu6iuPEj8lYBb+OU8xx1f9m+e5rhJiYKqjo5vHfiZp+VUkW9xc
56
+ Ufd6JHNWc47PkQqb9ie3SLEZB/ZqyAssiqURY+G35iOMZUrHbasHnb80QAPv9FHtAbJIyro7bi5b
57
+ ai2TEAKen5+LJNWrglZjm3UbZvt7KryA2J5b5J1jZF8kL6GzvG1Zqx54Y1y7J7n20wMOt9frG2sW
58
+ uwGP07kNz3732vf6bfvAvLldfS+9fts2euXY37D+R29FGZdlnhzV4TTFmPJduBP2RbNNua4rTqcT
59
+ Qt7Xy1KUB0AHSdP5AZQYvHZg7WD1XvYeMO1A9HhZPqMX5KXbMBrn2efxns/ee21674efxz4Tp/fq
60
+ 2HZ648dgYaC1i3Vq1IbNPq3PvDTPezY9FaRISjvnzWqdgcWN8EJgjnNq+Z7ktOm9l2Nfth28EZi4
61
+ bG/we5JwxM+Tql47/D/X6b38I8/RyxvxPJrX6zvQbo3h9jyJx+C0ALX327QETHl5eYlaYCT5rPTb
62
+ +5/rAq26t3lKIxV/p88hq6ptngdgCzoPjJqndiLfc/6y5A14WeDFGNPct4iUsJBV2bYzLEV7m83s
63
+ 6Rp63VPhHKC/g/LzaU9qexJRr56043JWinqAtfZqsSm1sjoznthl54dtCqv+uL4nIY+oYWuc3+nH
64
+ kGfn8b0HQpvOYLQAZUDanbJs3jQhITZEgdarZK+cO6ySlL13rut5nFaN23s7u3Snz6eRPTkCoc2/
65
+ Vp1zHfZVFpZ87FiMVLV1iqyK5rlzfji2GzjfDsodlD+Weo5UD4h6PwKqzQMqID0tq2VjjFVSMpis
66
+ ZLRAs7sePZBZAHI+gIanB8I7MD+femAceeUe2Kxa5jS950kZ1p5eNEdeX1+jFmSpZ+1EdWCsDcne
67
+ NPNgUHNw3aYpnzv9PGTX0uo94EtN9qq1rOdxe3kc79T8ukeHJJ8Fnxej6qlylbLLsjQLOy6Xy2a1
68
+ kefs/N+nM7+S7IG5/E5Yc7F003pWErLjbH0O5cGadiMptSB/DZ5U5DI9yeg5MFYyMj8lC/Y7/Xjq
69
+ OZlWcnpg9aQfXz2HRq+Wn5xOp6gN8tWq8R44e2pfyzLYemEgprst+XXk2Zj2nXlbsG05BprndTMv
70
+ C3QRaXczshhVsHnMgfYn80Y2g5JureA6wBasPeP7LkE/jvZMJAaf/g/U2RelHsisvan5FqweIAHg
71
+ Pwc7L68GxvVDAAAAAElFTkSuQmCC
72
+
73
+ --Apple-Mail-41-587703287--
74
+
75
+ --Apple-Mail-42-587703407
76
+ Content-Transfer-Encoding: base64
77
+ Content-Type: application/pkcs7-signature;
78
+ name=smime.p7s
79
+ Content-Disposition: attachment;
80
+ filename=smime.p7s
81
+
82
+ MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIIGJzCCAuAw
83
+ ggJJoAMCAQICEFjnFNYXwDEZRWY5EkfzopUwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCWkEx
84
+ JTAjBgNVBAoTHFRoYXd0ZSBDb25zdWx0aW5nIChQdHkpIEx0ZC4xLDAqBgNVBAMTI1RoYXd0ZSBQ
85
+ ZXJzb25hbCBGcmVlbWFpbCBJc3N1aW5nIENBMB4XDTA2MDkxMjE3MDExMloXDTA3MDkxMjE3MDEx
86
+ MlowRTEfMB0GA1UEAxMWVGhhd3RlIEZyZWVtYWlsIE1lbWJlcjEiMCAGCSqGSIb3DQEJARYTamFt
87
+ aXNAMzdzaWduYWxzLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAO2A9JeOFIFJ
88
+ G6z8pTcAldrZ2nMe+Xb1tNrbHgoVzN/QhHXM4qst2Ml93cmFLjMmwG7P9RJeU4oNx+jTqVoBB7NV
89
+ Ne1/o56Do0KhfMZ9iUDQdPLbkZMq4EEpFMdm6PyM3muRKwPhj66iAWe/osCb8DowUK2f66vaRx0Z
90
+ Y0MQHIIrXE02Ta4IfAhIfPqBLkZ4WgTYBHN9vMdYea1jF0GO4gqGk1wqwb3yxv2QMYMbwJ6SI+k/
91
+ ZjkSR/OilTCBhwYLKoZIhvcNAQkQAgsxeKB2MGIxCzAJBgNVBAYTAlpBMSUwIwYDVQQKExxUaGF3
92
+ dGUgQ29uc3VsdGluZyAoUHR5KSBMdGQuMSwwKgYDVQQDEyNUaGF3dGUgUGVyc29uYWwgRnJlZW1h
93
+ aWwgSXNzdWluZyBDQQIQWOcU1hfAMRlFZjkSR/OilTANBgkqhkiG9w0BAQEFAASCAQCfwQiC3v6/
94
+ yleRDGv3bJ4nQYQ+c3mz3+mn3Xi6uU35n3piwxZZaWRdmLyiXPvU+QReHpSf3l2qsEZM3sdE0XF9
95
+ eRul/+QTFJcDNXOEAxG1zC2Gpz+6c6RrX4Ou12Pwkp+pNrZWTSY/mZgdqcArupOBcZi7qBjoWcy5
96
+ wb54dfvSSjrjmqLbkH/E8ww/6gGQuU/xXpAUZgUrTmQHrNKeIdSh5oDkOxFaFWvnmb8Z/2ixKqW/
97
+ Ux6WqamyvBtTs/5YBEtnpZOk+uVoscYEUBhU+DVJ2OSvTdXSivMtBdXmGTsG22k+P1NGUHi/A7ev
98
+ xPaO0uk4V8xyjNlN4HPuGpkrlXwPAAAAAAAA
99
+
100
+ --Apple-Mail-42-587703407--
@@ -0,0 +1,14 @@
1
+ From jamis@37signals.com Mon May 2 16:07:05 2005
2
+ Mime-Version: 1.0 (Apple Message framework v622)
3
+ Content-Transfer-Encoding: base64
4
+ Message-Id: <d3b8cf8e49f04480850c28713a1f473e@37signals.com>
5
+ Content-Type: text/plain;
6
+ charset=EUC-KR;
7
+ format=flowed
8
+ To: jamis@37signals.com
9
+ From: Jamis Buck <jamis@37signals.com>
10
+ Subject: Re: Test: =?UTF-8?B?Iua8ouWtlyI=?= mid =?UTF-8?B?Iua8ouWtlyI=?= tail
11
+ Date: Mon, 2 May 2005 16:07:05 -0600
12
+
13
+ tOu6zrrQwMcguLbC+bChwfa3ziwgv+y4rrTCIMfPs6q01MC7ILnPvcC0z7TZLg0KDQrBpiDAzLin
14
+ wLogSmFtaXPA1LTPtNku
@@ -0,0 +1 @@
1
+ second mail
@@ -0,0 +1,3 @@
1
+ Hello there,
2
+
3
+ Mr. <%= @recipient %>
@@ -0,0 +1,2 @@
1
+ body: <%= @body %>
2
+ bar: <%= @bar %>
@@ -0,0 +1,6 @@
1
+ %p Hello there,
2
+
3
+ %p
4
+ Mr.
5
+ = @recipient
6
+ from haml
@@ -0,0 +1,6 @@
1
+ %p Hello there,
2
+
3
+ %p
4
+ Mr.
5
+ = @recipient
6
+ from haml
@@ -0,0 +1 @@
1
+ Ignored when searching for implicitly multipart parts.
@@ -0,0 +1 @@
1
+ Ignored when searching for implicitly multipart parts.
@@ -0,0 +1,10 @@
1
+ <html>
2
+ <body>
3
+ HTML formatted message to <strong><%= @recipient %></strong>.
4
+ </body>
5
+ </html>
6
+ <html>
7
+ <body>
8
+ HTML formatted message to <strong><%= @recipient %></strong>.
9
+ </body>
10
+ </html>
@@ -0,0 +1,10 @@
1
+ <html>
2
+ <body>
3
+ HTML formatted message to <strong><%= @recipient %></strong>.
4
+ </body>
5
+ </html>
6
+ <html>
7
+ <body>
8
+ HTML formatted message to <strong><%= @recipient %></strong>.
9
+ </body>
10
+ </html>
@@ -0,0 +1,2 @@
1
+ Plain text to <%= @recipient %>.
2
+ Plain text to <%= @recipient %>.
@@ -0,0 +1 @@
1
+ yaml to: <%= @recipient %>
@@ -0,0 +1 @@
1
+ Hey Ho, <%= render :partial => "subtemplate" %>
@@ -0,0 +1,2 @@
1
+ xml.instruct!
2
+ xml.test
@@ -0,0 +1,2 @@
1
+ xml.instruct!
2
+ xml.test
@@ -0,0 +1,3 @@
1
+ Hello there,
2
+
3
+ Mr. <%= @recipient %>
@@ -0,0 +1,5 @@
1
+ Hello there,
2
+
3
+ Mr. <%= @recipient %>. Please see our greeting at <%= @welcome_url %> <%= welcome_url %>
4
+
5
+ <%= image_tag "somelogo.png" %>
@@ -0,0 +1,95 @@
1
+ require 'abstract_unit'
2
+
3
+ module MailerHelper
4
+ def person_name
5
+ "Mr. Joe Person"
6
+ end
7
+ end
8
+
9
+ class HelperMailer < ActionMailer::Base
10
+ helper MailerHelper
11
+ helper :example
12
+
13
+ def use_helper(recipient)
14
+ recipients recipient
15
+ subject "using helpers"
16
+ from "tester@example.com"
17
+ end
18
+
19
+ def use_example_helper(recipient)
20
+ recipients recipient
21
+ subject "using helpers"
22
+ from "tester@example.com"
23
+ self.body = { :text => "emphasize me!" }
24
+ end
25
+
26
+ def use_mail_helper(recipient)
27
+ recipients recipient
28
+ subject "using mailing helpers"
29
+ from "tester@example.com"
30
+ self.body = { :text =>
31
+ "But soft! What light through yonder window breaks? It is the east, " +
32
+ "and Juliet is the sun. Arise, fair sun, and kill the envious moon, " +
33
+ "which is sick and pale with grief that thou, her maid, art far more " +
34
+ "fair than she. Be not her maid, for she is envious! Her vestal " +
35
+ "livery is but sick and green, and none but fools do wear it. Cast " +
36
+ "it off!"
37
+ }
38
+ end
39
+
40
+ def use_helper_method(recipient)
41
+ recipients recipient
42
+ subject "using helpers"
43
+ from "tester@example.com"
44
+ self.body = { :text => "emphasize me!" }
45
+ end
46
+
47
+ private
48
+
49
+ def name_of_the_mailer_class
50
+ self.class.name
51
+ end
52
+ helper_method :name_of_the_mailer_class
53
+ end
54
+
55
+ class MailerHelperTest < Test::Unit::TestCase
56
+ def new_mail( charset="utf-8" )
57
+ mail = TMail::Mail.new
58
+ mail.set_content_type "text", "plain", { "charset" => charset } if charset
59
+ mail
60
+ end
61
+
62
+ def setup
63
+ set_delivery_method :test
64
+ ActionMailer::Base.perform_deliveries = true
65
+ ActionMailer::Base.deliveries = []
66
+
67
+ @recipient = 'test@localhost'
68
+ end
69
+
70
+ def teardown
71
+ restore_delivery_method
72
+ end
73
+
74
+ def test_use_helper
75
+ mail = HelperMailer.create_use_helper(@recipient)
76
+ assert_match %r{Mr. Joe Person}, mail.encoded
77
+ end
78
+
79
+ def test_use_example_helper
80
+ mail = HelperMailer.create_use_example_helper(@recipient)
81
+ assert_match %r{<em><strong><small>emphasize me!}, mail.encoded
82
+ end
83
+
84
+ def test_use_helper_method
85
+ mail = HelperMailer.create_use_helper_method(@recipient)
86
+ assert_match %r{HelperMailer}, mail.encoded
87
+ end
88
+
89
+ def test_use_mail_helper
90
+ mail = HelperMailer.create_use_mail_helper(@recipient)
91
+ assert_match %r{ But soft!}, mail.encoded
92
+ assert_match %r{east, and\n Juliet}, mail.encoded
93
+ end
94
+ end
95
+
@@ -0,0 +1,123 @@
1
+ require 'abstract_unit'
2
+
3
+ class AutoLayoutMailer < ActionMailer::Base
4
+ def hello(recipient)
5
+ recipients recipient
6
+ subject "You have a mail"
7
+ from "tester@example.com"
8
+ end
9
+
10
+ def spam(recipient)
11
+ recipients recipient
12
+ subject "You have a mail"
13
+ from "tester@example.com"
14
+ body render(:inline => "Hello, <%= @world %>", :layout => 'spam', :body => { :world => "Earth" })
15
+ end
16
+
17
+ def nolayout(recipient)
18
+ recipients recipient
19
+ subject "You have a mail"
20
+ from "tester@example.com"
21
+ body render(:inline => "Hello, <%= @world %>", :layout => false, :body => { :world => "Earth" })
22
+ end
23
+
24
+ def multipart(recipient, type = nil)
25
+ recipients recipient
26
+ subject "You have a mail"
27
+ from "tester@example.com"
28
+
29
+ content_type(type) if type
30
+ end
31
+ end
32
+
33
+ class ExplicitLayoutMailer < ActionMailer::Base
34
+ layout 'spam', :except => [:logout]
35
+
36
+ def signup(recipient)
37
+ recipients recipient
38
+ subject "You have a mail"
39
+ from "tester@example.com"
40
+ end
41
+
42
+ def logout(recipient)
43
+ recipients recipient
44
+ subject "You have a mail"
45
+ from "tester@example.com"
46
+ end
47
+ end
48
+
49
+ class LayoutMailerTest < Test::Unit::TestCase
50
+ def setup
51
+ set_delivery_method :test
52
+ ActionMailer::Base.perform_deliveries = true
53
+ ActionMailer::Base.deliveries = []
54
+
55
+ @recipient = 'test@localhost'
56
+ end
57
+
58
+ def teardown
59
+ restore_delivery_method
60
+ end
61
+
62
+ def test_should_pickup_default_layout
63
+ mail = AutoLayoutMailer.create_hello(@recipient)
64
+ assert_equal "Hello from layout Inside", mail.body.strip
65
+ end
66
+
67
+ def test_should_pickup_multipart_layout
68
+ mail = AutoLayoutMailer.create_multipart(@recipient)
69
+ assert_equal "multipart/alternative", mail.content_type
70
+ assert_equal 2, mail.parts.size
71
+
72
+ assert_equal 'text/plain', mail.parts.first.content_type
73
+ assert_equal "text/plain layout - text/plain multipart", mail.parts.first.body
74
+
75
+ assert_equal 'text/html', mail.parts.last.content_type
76
+ assert_equal "Hello from layout text/html multipart", mail.parts.last.body
77
+ end
78
+
79
+ def test_should_pickup_multipartmixed_layout
80
+ mail = AutoLayoutMailer.create_multipart(@recipient, "multipart/mixed")
81
+ assert_equal "multipart/mixed", mail.content_type
82
+ assert_equal 2, mail.parts.size
83
+
84
+ assert_equal 'text/plain', mail.parts.first.content_type
85
+ assert_equal "text/plain layout - text/plain multipart", mail.parts.first.body
86
+
87
+ assert_equal 'text/html', mail.parts.last.content_type
88
+ assert_equal "Hello from layout text/html multipart", mail.parts.last.body
89
+ end
90
+
91
+ def test_should_fix_multipart_layout
92
+ mail = AutoLayoutMailer.create_multipart(@recipient, "text/plain")
93
+ assert_equal "multipart/alternative", mail.content_type
94
+ assert_equal 2, mail.parts.size
95
+
96
+ assert_equal 'text/plain', mail.parts.first.content_type
97
+ assert_equal "text/plain layout - text/plain multipart", mail.parts.first.body
98
+
99
+ assert_equal 'text/html', mail.parts.last.content_type
100
+ assert_equal "Hello from layout text/html multipart", mail.parts.last.body
101
+ end
102
+
103
+
104
+ def test_should_pickup_layout_given_to_render
105
+ mail = AutoLayoutMailer.create_spam(@recipient)
106
+ assert_equal "Spammer layout Hello, Earth", mail.body.strip
107
+ end
108
+
109
+ def test_should_respect_layout_false
110
+ mail = AutoLayoutMailer.create_nolayout(@recipient)
111
+ assert_equal "Hello, Earth", mail.body.strip
112
+ end
113
+
114
+ def test_explicit_class_layout
115
+ mail = ExplicitLayoutMailer.create_signup(@recipient)
116
+ assert_equal "Spammer layout We do not spam", mail.body.strip
117
+ end
118
+
119
+ def test_explicit_layout_exceptions
120
+ mail = ExplicitLayoutMailer.create_logout(@recipient)
121
+ assert_equal "You logged out", mail.body.strip
122
+ end
123
+ end
@@ -0,0 +1,116 @@
1
+ require 'abstract_unit'
2
+
3
+ class RenderMailer < ActionMailer::Base
4
+ def inline_template(recipient)
5
+ recipients recipient
6
+ subject "using helpers"
7
+ from "tester@example.com"
8
+ body render(:inline => "Hello, <%= @world %>", :body => { :world => "Earth" })
9
+ end
10
+
11
+ def file_template(recipient)
12
+ recipients recipient
13
+ subject "using helpers"
14
+ from "tester@example.com"
15
+ body render(:file => "signed_up", :body => { :recipient => recipient })
16
+ end
17
+
18
+ def rxml_template(recipient)
19
+ recipients recipient
20
+ subject "rendering rxml template"
21
+ from "tester@example.com"
22
+ end
23
+
24
+ def included_subtemplate(recipient)
25
+ recipients recipient
26
+ subject "Including another template in the one being rendered"
27
+ from "tester@example.com"
28
+ end
29
+
30
+ def included_old_subtemplate(recipient)
31
+ recipients recipient
32
+ subject "Including another template in the one being rendered"
33
+ from "tester@example.com"
34
+ body render(:inline => "Hello, <%= render \"subtemplate\" %>", :body => { :world => "Earth" })
35
+ end
36
+
37
+ def initialize_defaults(method_name)
38
+ super
39
+ mailer_name "test_mailer"
40
+ end
41
+ end
42
+
43
+ class FirstMailer < ActionMailer::Base
44
+ def share(recipient)
45
+ recipients recipient
46
+ subject "using helpers"
47
+ from "tester@example.com"
48
+ end
49
+ end
50
+
51
+ class SecondMailer < ActionMailer::Base
52
+ def share(recipient)
53
+ recipients recipient
54
+ subject "using helpers"
55
+ from "tester@example.com"
56
+ end
57
+ end
58
+
59
+ class RenderHelperTest < Test::Unit::TestCase
60
+ def setup
61
+ set_delivery_method :test
62
+ ActionMailer::Base.perform_deliveries = true
63
+ ActionMailer::Base.deliveries = []
64
+
65
+ @recipient = 'test@localhost'
66
+ end
67
+
68
+ def teardown
69
+ restore_delivery_method
70
+ end
71
+
72
+ def test_inline_template
73
+ mail = RenderMailer.create_inline_template(@recipient)
74
+ assert_equal "Hello, Earth", mail.body.strip
75
+ end
76
+
77
+ def test_file_template
78
+ mail = RenderMailer.create_file_template(@recipient)
79
+ assert_equal "Hello there, \n\nMr. test@localhost", mail.body.strip
80
+ end
81
+
82
+ def test_rxml_template
83
+ mail = RenderMailer.deliver_rxml_template(@recipient)
84
+ assert_equal "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<test/>", mail.body.strip
85
+ end
86
+
87
+ def test_included_subtemplate
88
+ mail = RenderMailer.deliver_included_subtemplate(@recipient)
89
+ assert_equal "Hey Ho, let's go!", mail.body.strip
90
+ end
91
+ end
92
+
93
+ class FirstSecondHelperTest < Test::Unit::TestCase
94
+ def setup
95
+ set_delivery_method :test
96
+ ActionMailer::Base.perform_deliveries = true
97
+ ActionMailer::Base.deliveries = []
98
+
99
+ @recipient = 'test@localhost'
100
+ end
101
+
102
+ def teardown
103
+ restore_delivery_method
104
+ end
105
+
106
+ def test_ordering
107
+ mail = FirstMailer.create_share(@recipient)
108
+ assert_equal "first mail", mail.body.strip
109
+ mail = SecondMailer.create_share(@recipient)
110
+ assert_equal "second mail", mail.body.strip
111
+ mail = FirstMailer.create_share(@recipient)
112
+ assert_equal "first mail", mail.body.strip
113
+ mail = SecondMailer.create_share(@recipient)
114
+ assert_equal "second mail", mail.body.strip
115
+ end
116
+ end