actionmailer_csi 2.3.5.p6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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