aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/action_mailbox/mail_ext/recipients.rb21
-rw-r--r--test/unit/mail_ext/recipients_test.rb29
2 files changed, 50 insertions, 0 deletions
diff --git a/lib/action_mailbox/mail_ext/recipients.rb b/lib/action_mailbox/mail_ext/recipients.rb
index 58561c7f01..baf97472a6 100644
--- a/lib/action_mailbox/mail_ext/recipients.rb
+++ b/lib/action_mailbox/mail_ext/recipients.rb
@@ -2,4 +2,25 @@ class Mail::Message
def recipients
Array(to) + Array(cc) + Array(bcc)
end
+
+ def recipients_addresses
+ convert_to_addresses recipients
+ end
+
+ def to_addresses
+ convert_to_addresses to
+ end
+
+ def cc_addresses
+ convert_to_addresses cc
+ end
+
+ def bcc_addresses
+ convert_to_addresses bcc
+ end
+
+ private
+ def convert_to_addresses(recipients)
+ recipients.collect { |recipient| Mail::Address.new recipient }
+ end
end
diff --git a/test/unit/mail_ext/recipients_test.rb b/test/unit/mail_ext/recipients_test.rb
new file mode 100644
index 0000000000..86db569a53
--- /dev/null
+++ b/test/unit/mail_ext/recipients_test.rb
@@ -0,0 +1,29 @@
+require_relative '../../test_helper'
+
+module MailExt
+ class RecipientsTest < ActiveSupport::TestCase
+ setup do
+ @mail = Mail.new(to: "david@basecamp.com", cc: "jason@basecamp.com", bcc: "andrea@basecamp.com")
+ end
+
+ test "recipients include everyone from to, cc, and bcc" do
+ assert_equal %w[ david@basecamp.com jason@basecamp.com andrea@basecamp.com ], @mail.recipients
+ end
+
+ test "recipients addresses use address objects" do
+ assert_equal "basecamp.com", @mail.recipients_addresses.first.domain
+ end
+
+ test "to addresses use address objects" do
+ assert_equal "basecamp.com", @mail.to_addresses.first.domain
+ end
+
+ test "cc addresses use address objects" do
+ assert_equal "basecamp.com", @mail.cc_addresses.first.domain
+ end
+
+ test "bcc addresses use address objects" do
+ assert_equal "basecamp.com", @mail.bcc_addresses.first.domain
+ end
+ end
+end \ No newline at end of file