has_emails 0.0.1 → 0.1.0

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 (40) hide show
  1. data/CHANGELOG +8 -0
  2. data/README +32 -71
  3. data/Rakefile +8 -8
  4. data/app/models/email.rb +7 -79
  5. data/app/models/email_address.rb +32 -110
  6. data/db/migrate/001_create_email_addresses.rb +4 -13
  7. data/lib/has_emails/extensions/action_mailer.rb +106 -0
  8. data/lib/has_emails.rb +50 -77
  9. data/test/app_root/app/models/empty +0 -0
  10. data/test/app_root/config/environment.rb +4 -27
  11. data/test/app_root/db/migrate/001_migrate_has_messages_to_version_2.rb +9 -0
  12. data/test/app_root/db/migrate/002_migrate_has_emails_to_version_1.rb +9 -0
  13. data/test/factory.rb +48 -0
  14. data/test/functional/has_emails_test.rb +139 -0
  15. data/test/test_helper.rb +5 -68
  16. data/test/unit/action_mailer_test.rb +57 -0
  17. data/test/unit/email_address_test.rb +100 -152
  18. data/test/unit/email_test.rb +26 -86
  19. metadata +78 -87
  20. data/app/mailers/application_mailer.rb +0 -85
  21. data/app/models/email_recipient.rb +0 -78
  22. data/app/models/email_recipient_build_extension.rb +0 -7
  23. data/db/bootstrap/events.yml +0 -4
  24. data/db/bootstrap/states.yml +0 -9
  25. data/db/migrate/002_add_email_specs.rb +0 -18
  26. data/db/migrate/003_add_email_recipient_specs.rb +0 -18
  27. data/test/app_root/app/models/department.rb +0 -2
  28. data/test/app_root/app/models/user.rb +0 -3
  29. data/test/app_root/db/migrate/001_create_users.rb +0 -11
  30. data/test/app_root/db/migrate/002_create_departments.rb +0 -12
  31. data/test/fixtures/departments.yml +0 -9
  32. data/test/fixtures/email_addresses.yml +0 -32
  33. data/test/fixtures/message_recipients.yml +0 -85
  34. data/test/fixtures/messages.yml +0 -52
  35. data/test/fixtures/state_changes.yml +0 -128
  36. data/test/fixtures/users.yml +0 -11
  37. data/test/unit/application_mailer_test.rb +0 -69
  38. data/test/unit/email_recipient_test.rb +0 -79
  39. data/test/unit/has_emails_test.rb +0 -36
  40. data/test/unit/recipient_extension_test.rb +0 -99
@@ -1,79 +0,0 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
2
-
3
- class EmailRecipientTest < Test::Unit::TestCase
4
- fixtures :users, :email_addresses, :messages, :message_recipients, :state_changes
5
-
6
- def test_recipient_with_email_address_should_be_valid
7
- assert_valid message_recipients(:bob_to_john)
8
- end
9
-
10
- def test_recipient_with_receiver_spec_should_be_valid
11
- assert_valid message_recipients(:bob_to_random)
12
- end
13
-
14
- def test_recipient_with_email_address_attribute_should_be_valid
15
- assert_valid message_recipients(:bob_to_marketing)
16
- end
17
-
18
- def test_should_require_receiver_spec
19
- assert_invalid message_recipients(:bob_to_random), :receiver_spec, nil
20
- end
21
-
22
- def test_should_require_minimum_length_for_receiver_spec
23
- assert_invalid message_recipients(:bob_to_random), :receiver_spec, 'ab'
24
- assert_valid message_recipients(:bob_to_random), :receiver_spec, 'a@a'
25
- end
26
-
27
- def test_should_require_maximum_length_for_receiver_spec
28
- assert_invalid message_recipients(:bob_to_random), :receiver_spec, 'a' * 300 + '@' + 'a' * 20
29
- assert_valid message_recipients(:bob_to_random), :receiver_spec, 'a' * 300 + '@' + 'a' * 19
30
- end
31
-
32
- def test_should_require_specific_format_for_receiver_spec
33
- assert_invalid message_recipients(:bob_to_random), :receiver_spec, 'aaaaaaaaaa'
34
- assert_valid message_recipients(:bob_to_random), :receiver_spec, 'aaa@aaa.com'
35
- end
36
-
37
- def test_email_getter_should_be_same_as_message_getter
38
- r = message_recipients(:bob_to_john)
39
- assert_equal r.email, r.message
40
- end
41
-
42
- def test_email_setter_should_be_same_as_message_setter
43
- r = message_recipients(:bob_to_john)
44
- r.email = messages(:sent_from_mary)
45
- assert_equal r.email, r.message
46
- end
47
-
48
- def test_email_id_getter_should_be_same_as_message_id_getter
49
- r = message_recipients(:bob_to_john)
50
- assert_equal r.email_id, r.message_id
51
- end
52
-
53
- def test_email_id_setter_should_be_same_as_message_id_setter
54
- r = message_recipients(:bob_to_john)
55
- r.email_id = messages(:sent_from_mary).id
56
- assert_equal r.email_id, r.message_id
57
- end
58
-
59
- def test_receiver_should_be_receiver_spec_if_string_recipient
60
- assert_equal 'random@random.com', message_recipients(:bob_to_random).receiver
61
- end
62
-
63
- def test_receiver_should_be_model_if_not_string_recipient
64
- assert_equal email_addresses(:john), message_recipients(:bob_to_john).receiver
65
- end
66
-
67
- def test_should_set_receiver_spec_if_receiver_is_string
68
- r = EmailRecipient.new
69
- r.receiver = 'test@me.com'
70
- assert_equal 'test@me.com', r.receiver_spec
71
- end
72
-
73
- def test_should_set_receiver_and_receiver_spec_if_receiver_is_not_string
74
- r = EmailRecipient.new
75
- r.receiver = email_addresses(:john)
76
- assert_equal 'john@john.com', r.receiver_spec
77
- assert_equal email_addresses(:john), r.receiver
78
- end
79
- end
@@ -1,36 +0,0 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
2
-
3
- class HasEmailsTest < Test::Unit::TestCase
4
- fixtures :users, :email_addresses, :messages, :message_recipients, :state_changes
5
-
6
- def test_should_generate_received_association
7
- assert_equal [messages(:sent_from_bob), messages(:sent_from_mary)], users(:john).received_emails.map(&:email)
8
- end
9
-
10
- def test_should_generate_unsent_association
11
- assert_equal [messages(:unsent_from_bob)], users(:bob).unsent_emails
12
- end
13
-
14
- def test_should_generate_sent_association
15
- assert_equal [messages(:sent_from_bob), messages(:queued_from_bob)], users(:bob).sent_emails
16
- end
17
-
18
- def test_should_generate_inbox
19
- assert_instance_of MessageBox, users(:bob).email_box
20
- end
21
-
22
- def test_inbox_should_contain_received_messages
23
- u = users(:bob)
24
- assert_equal u.received_emails, u.email_box.inbox
25
- end
26
-
27
- def test_inbox_should_contain_unsent_messages
28
- u = users(:bob)
29
- assert_equal u.unsent_emails, u.email_box.unsent
30
- end
31
-
32
- def test_inbox_should_contain_sent_messages
33
- u = users(:bob)
34
- assert_equal u.sent_emails, u.email_box.sent
35
- end
36
- end
@@ -1,99 +0,0 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
2
-
3
- class RecipientExtensionTest < Test::Unit::TestCase
4
- fixtures :users, :email_addresses, :messages, :message_recipients, :state_changes
5
-
6
- def setup
7
- @email = messages(:unsent_from_bob)
8
- end
9
-
10
- def test_should_input_string
11
- @email.to << 'test@me.com'
12
- assert_equal ['john@john.com', 'test@me.com'], @email.to.map(&:email_address).map(&:to_s)
13
- end
14
-
15
- def test_should_input_receiver
16
- @email.to << email_addresses(:bob)
17
- assert_equal [email_addresses(:john), email_addresses(:bob)], @email.to_receivers
18
- end
19
-
20
- def test_should_input_message_recipients
21
- @email.to << EmailRecipient.new(:receiver => email_addresses(:bob), :kind => 'to')
22
- assert_equal [email_addresses(:john), email_addresses(:bob)], @email.to_receivers
23
- end
24
-
25
- def test_should_push_string
26
- @email.to.push('test@me.com')
27
- assert_equal ['john@john.com', 'test@me.com'], @email.to.map(&:email_address).map(&:to_s)
28
- end
29
-
30
- def test_should_push_receiver
31
- @email.to.push(email_addresses(:bob))
32
- assert_equal [email_addresses(:john), email_addresses(:bob)], @email.to_receivers
33
- end
34
-
35
- def test_should_push_message_recipients
36
- @email.to.push(EmailRecipient.new(:receiver => email_addresses(:bob), :kind => 'to'))
37
- assert_equal [email_addresses(:john), email_addresses(:bob)], @email.to_receivers
38
- end
39
-
40
- def test_should_concat_string
41
- @email.to.concat(['test@me.com'])
42
- assert_equal ['john@john.com', 'test@me.com'], @email.to.map(&:email_address).map(&:to_s)
43
- end
44
-
45
- def test_should_concat_receiver
46
- @email.to.concat([email_addresses(:bob)])
47
- assert_equal [email_addresses(:john), email_addresses(:bob)], @email.to_receivers
48
- end
49
-
50
- def test_should_concat_message_recipients
51
- @email.to.concat([EmailRecipient.new(:receiver => email_addresses(:bob), :kind => 'to')])
52
- assert_equal [email_addresses(:john), email_addresses(:bob)], @email.to_receivers
53
- end
54
-
55
- def test_should_delete_string
56
- @email.to.delete('john@john.com')
57
- assert_equal [], @email.to_receivers
58
- end
59
-
60
- def test_should_delete_receiver
61
- @email.to.delete(email_addresses(:john))
62
- assert_equal [], @email.to_receivers
63
- end
64
-
65
- def test_should_delete_message_recipients
66
- @email.to.delete(@email.to.first)
67
- assert_equal [], @email.to
68
- end
69
-
70
- def test_should_replace_string
71
- @email.to.replace(['bob@bob.com'])
72
- assert_equal ['bob@bob.com'], @email.to.map(&:email_address).map(&:to_s)
73
- end
74
-
75
- def test_should_replace_receiver
76
- @email.to.replace([email_addresses(:bob)])
77
- assert_equal [email_addresses(:bob)], @email.to_receivers
78
- end
79
-
80
- def test_should_replace_message_recipients
81
- @email.to.replace([])
82
- assert_equal [], @email.to_receivers
83
- end
84
-
85
- def test_should_set_kind_for_to_recipients
86
- @email.to << users(:bob)
87
- assert_equal 'to', @email.to.last.kind
88
- end
89
-
90
- def test_should_set_kind_for_cc_recipients
91
- @email.cc << users(:bob)
92
- assert_equal 'cc', @email.cc.last.kind
93
- end
94
-
95
- def test_should_set_kind_for_bcc_recipients
96
- @email.bcc << users(:bob)
97
- assert_equal 'bcc', @email.bcc.last.kind
98
- end
99
- end