mailboxer-without-notification 0.11.1

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 (107) hide show
  1. data/.gitignore +18 -0
  2. data/.rspec +1 -0
  3. data/.travis.yml +11 -0
  4. data/.yardopts +2 -0
  5. data/Appraisals +19 -0
  6. data/Gemfile +3 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +298 -0
  9. data/Rakefile +11 -0
  10. data/app/mailers/message_mailer.rb +37 -0
  11. data/app/models/conversation.rb +179 -0
  12. data/app/models/mailbox.rb +122 -0
  13. data/app/models/message.rb +218 -0
  14. data/app/models/receipt.rb +176 -0
  15. data/app/uploaders/attachment_uploader.rb +3 -0
  16. data/app/views/message_mailer/new_message_email.html.erb +20 -0
  17. data/app/views/message_mailer/new_message_email.text.erb +10 -0
  18. data/app/views/message_mailer/reply_message_email.html.erb +20 -0
  19. data/app/views/message_mailer/reply_message_email.text.erb +10 -0
  20. data/config/locales/en.yml +7 -0
  21. data/config/locales/fr.yml +7 -0
  22. data/db/migrate/20110511145103_create_mailboxer.rb +61 -0
  23. data/db/migrate/20110719110700_add_notified_object.rb +17 -0
  24. data/db/migrate/20110912163911_add_notification_code.rb +13 -0
  25. data/db/migrate/20111204163911_add_attachments.rb +9 -0
  26. data/db/migrate/20120813110712_rename_receipts_read.rb +9 -0
  27. data/db/migrate/20130305144212_add_global_notification_support.rb +9 -0
  28. data/db/migrate/20131003144212_change_table_notification.rb +10 -0
  29. data/db/migrate/20131003214212_change_relations.rb +6 -0
  30. data/gemfiles/rails3.0.gemfile +8 -0
  31. data/gemfiles/rails3.1.gemfile +8 -0
  32. data/gemfiles/rails3.2.gemfile +8 -0
  33. data/gemfiles/rails4.0.gemfile +8 -0
  34. data/lib/generators/mailboxer/install_generator.rb +35 -0
  35. data/lib/generators/mailboxer/templates/initializer.rb +17 -0
  36. data/lib/generators/mailboxer/views_generator.rb +9 -0
  37. data/lib/mailboxer.rb +37 -0
  38. data/lib/mailboxer/concerns/configurable_mailer.rb +13 -0
  39. data/lib/mailboxer/engine.rb +17 -0
  40. data/lib/mailboxer/models/messageable.rb +225 -0
  41. data/mailboxer.gemspec +49 -0
  42. data/spec/dummy/.gitignore +5 -0
  43. data/spec/dummy/Gemfile +33 -0
  44. data/spec/dummy/Rakefile +7 -0
  45. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  46. data/spec/dummy/app/controllers/home_controller.rb +4 -0
  47. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  48. data/spec/dummy/app/mailers/.gitkeep +0 -0
  49. data/spec/dummy/app/models/.gitkeep +0 -0
  50. data/spec/dummy/app/models/cylon.rb +7 -0
  51. data/spec/dummy/app/models/duck.rb +11 -0
  52. data/spec/dummy/app/models/user.rb +6 -0
  53. data/spec/dummy/app/views/home/index.html.haml +7 -0
  54. data/spec/dummy/app/views/layouts/application.html.haml +11 -0
  55. data/spec/dummy/config.ru +4 -0
  56. data/spec/dummy/config/application.rb +42 -0
  57. data/spec/dummy/config/boot.rb +10 -0
  58. data/spec/dummy/config/database.yml +24 -0
  59. data/spec/dummy/config/environment.rb +5 -0
  60. data/spec/dummy/config/environments/development.rb +26 -0
  61. data/spec/dummy/config/environments/production.rb +49 -0
  62. data/spec/dummy/config/environments/test.rb +33 -0
  63. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  64. data/spec/dummy/config/initializers/inflections.rb +10 -0
  65. data/spec/dummy/config/initializers/mailboxer.rb +17 -0
  66. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  67. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  68. data/spec/dummy/config/initializers/session_store.rb +8 -0
  69. data/spec/dummy/config/locales/en.yml +5 -0
  70. data/spec/dummy/config/routes.rb +58 -0
  71. data/spec/dummy/config/sunspot.yml +17 -0
  72. data/spec/dummy/db/migrate/20110228120600_create_users.rb +14 -0
  73. data/spec/dummy/db/migrate/20110306002940_create_ducks.rb +14 -0
  74. data/spec/dummy/db/migrate/20110306015107_create_cylons.rb +14 -0
  75. data/spec/dummy/db/migrate/20120305103200_create_mailboxer.rb +61 -0
  76. data/spec/dummy/db/migrate/20120305103201_add_notified_object.rb +17 -0
  77. data/spec/dummy/db/migrate/20120305103202_add_notification_code.rb +13 -0
  78. data/spec/dummy/db/migrate/20120305103203_add_attachments.rb +5 -0
  79. data/spec/dummy/db/migrate/20120813110712_rename_receipts_read.rb +9 -0
  80. data/spec/dummy/db/migrate/20130305144212_add_global_notification_support.rb +11 -0
  81. data/spec/dummy/db/migrate/20131003144212_change_table_notification.rb +10 -0
  82. data/spec/dummy/db/migrate/20131003214212_change_relations.rb +6 -0
  83. data/spec/dummy/db/schema.rb +74 -0
  84. data/spec/dummy/public/404.html +26 -0
  85. data/spec/dummy/public/422.html +26 -0
  86. data/spec/dummy/public/500.html +26 -0
  87. data/spec/dummy/public/favicon.ico +0 -0
  88. data/spec/dummy/public/index.html +239 -0
  89. data/spec/dummy/public/robots.txt +5 -0
  90. data/spec/dummy/public/uploads/testfile.txt +1 -0
  91. data/spec/dummy/script/rails +6 -0
  92. data/spec/factories/cylon.rb +10 -0
  93. data/spec/factories/duck.rb +10 -0
  94. data/spec/factories/user.rb +10 -0
  95. data/spec/integration/message_and_receipt_spec.rb +903 -0
  96. data/spec/integration/navigation_spec.rb +9 -0
  97. data/spec/mailboxer/concerns/configurable_mailer_spec.rb +27 -0
  98. data/spec/mailboxer_spec.rb +7 -0
  99. data/spec/mailers/message_mailer_spec.rb +109 -0
  100. data/spec/models/conversation_spec.rb +154 -0
  101. data/spec/models/mailbox_spec.rb +160 -0
  102. data/spec/models/mailboxer_models_messageable_spec.rb +324 -0
  103. data/spec/models/message_spec.rb +222 -0
  104. data/spec/models/receipt_spec.rb +56 -0
  105. data/spec/spec_helper.rb +36 -0
  106. data/spec/testfile.txt +1 -0
  107. metadata +301 -0
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Navigation" do
4
+ include Capybara::DSL
5
+
6
+ it "should be a valid app" do
7
+ ::Rails.application.should be_a(Dummy::Application)
8
+ end
9
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+ describe Concerns::ConfigurableMailer do
3
+
4
+ #describe "Notification instance#get_mailer" do
5
+ # before { @obj = Notification.new }
6
+ # it "returns default_mailer" do
7
+ # @obj.get_mailer.should eq NotificationMailer
8
+ # end
9
+ # it "returns 'foo' from Mailerbox.notification_mailer" do
10
+ # Mailboxer.notification_mailer = 'foo'
11
+ # @obj.get_mailer.should eq 'foo'
12
+ # end
13
+ # after { Mailboxer.notification_mailer = nil }
14
+ #end
15
+
16
+ describe "Message instance#get_mailer" do
17
+ before { @obj = Message.new }
18
+ it "returns default_mailer" do
19
+ @obj.get_mailer.should eq MessageMailer
20
+ end
21
+ it "returns 'foo' from Mailerbox.message_mailer" do
22
+ Mailboxer.message_mailer = 'foo'
23
+ @obj.get_mailer.should eq 'foo'
24
+ end
25
+ after { Mailboxer.message_mailer = nil }
26
+ end
27
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailboxer do
4
+ it "should be valid" do
5
+ Mailboxer.should be_a(Module)
6
+ end
7
+ end
@@ -0,0 +1,109 @@
1
+ require 'spec_helper'
2
+
3
+ describe MessageMailer do
4
+ shared_examples 'message_mailer' do
5
+ let(:sender) { FactoryGirl.create(:user) }
6
+ let(:entity1) { FactoryGirl.create(:user) }
7
+ let(:entity2) { FactoryGirl.create(:duck) }
8
+ let(:entity3) { FactoryGirl.create(:cylon) }
9
+
10
+ def sent_to?(entity)
11
+ ActionMailer::Base.deliveries.any? do |email|
12
+ email.to.first.to_s == entity.email
13
+ end
14
+ end
15
+
16
+ describe "when sending new message" do
17
+ before do
18
+ @receipt1 = sender.send_message([entity1, entity2, entity3], "Body", "Subject")
19
+ end
20
+
21
+ it "should send emails when should_email? is true (1 out of 3)" do
22
+ ActionMailer::Base.deliveries.should_not be_empty
23
+ ActionMailer::Base.deliveries.should have(1).item
24
+ end
25
+
26
+ it "should send an email to user entity" do
27
+ sent_to?(entity1).should be_true
28
+ end
29
+
30
+ it "shouldn't send an email to duck entity" do
31
+ sent_to?(entity2).should be_false
32
+ end
33
+
34
+ it "shouldn't send an email to cylon entity" do
35
+ sent_to?(entity3).should be_false
36
+ end
37
+ end
38
+
39
+ describe "when replying" do
40
+ before do
41
+ @receipt1 = sender.send_message([entity1, entity2, entity3], "Body", "Subject")
42
+ @receipt2 = sender.reply_to_all(@receipt1, "Body")
43
+ end
44
+
45
+ it "should send emails when should_email? is true (1 out of 3)" do
46
+ ActionMailer::Base.deliveries.should_not be_empty
47
+ ActionMailer::Base.deliveries.should have(2).items
48
+ end
49
+
50
+ it "should send an email to user entity" do
51
+ sent_to?(entity1).should be_true
52
+ end
53
+
54
+ it "shouldn't send an email to duck entity" do
55
+ sent_to?(entity2).should be_false
56
+ end
57
+
58
+ it "shouldn't send an email to cylon entity" do
59
+ sent_to?(entity3).should be_false
60
+ end
61
+ end
62
+ end
63
+
64
+ context "when mailer_wants_array is false" do
65
+ it_behaves_like 'message_mailer'
66
+ end
67
+
68
+ context "mailer_wants_array is true" do
69
+ class ArrayMailer < MessageMailer
70
+ default template_path: 'message_mailer'
71
+
72
+ def new_message_email(message, receivers)
73
+ receivers.each { |receiver| super(message, receiver) if receiver.mailboxer_email(message).present? }
74
+ end
75
+
76
+ def reply_message_email(message, receivers)
77
+ receivers.each { |receiver| super(message, receiver) if receiver.mailboxer_email(message).present? }
78
+ end
79
+ end
80
+
81
+ before :all do
82
+ Mailboxer.mailer_wants_array = true
83
+ Mailboxer.message_mailer = ArrayMailer
84
+ end
85
+
86
+ after :all do
87
+ Mailboxer.mailer_wants_array = false
88
+ Mailboxer.message_mailer = MessageMailer
89
+ end
90
+
91
+ it_behaves_like 'message_mailer'
92
+ end
93
+ end
94
+
95
+ def print_emails
96
+ ActionMailer::Base.deliveries.each do |email|
97
+ puts "----------------------------------------------------"
98
+ puts email.to
99
+ puts "---"
100
+ puts email.from
101
+ puts "---"
102
+ puts email.subject
103
+ puts "---"
104
+ puts email.body
105
+ puts "---"
106
+ puts email.encoded
107
+ puts "----------------------------------------------------"
108
+ end
109
+ end
@@ -0,0 +1,154 @@
1
+ require 'spec_helper'
2
+
3
+ describe Conversation do
4
+
5
+ before do
6
+ @entity1 = FactoryGirl.create(:user)
7
+ @entity2 = FactoryGirl.create(:user)
8
+ @receipt1 = @entity1.send_message(@entity2,"Body","Subject")
9
+ @receipt2 = @entity2.reply_to_all(@receipt1,"Reply body 1")
10
+ @receipt3 = @entity1.reply_to_all(@receipt2,"Reply body 2")
11
+ @receipt4 = @entity2.reply_to_all(@receipt3,"Reply body 3")
12
+ @message1 = @receipt1.message
13
+ @message4 = @receipt4.message
14
+ @conversation = @message1.conversation
15
+ end
16
+
17
+ it "should have proper original message" do
18
+ @conversation.original_message.should==@message1
19
+ end
20
+
21
+ it "should have proper originator (first sender)" do
22
+ @conversation.originator.should==@entity1
23
+ end
24
+
25
+ it "should have proper last message" do
26
+ @conversation.last_message.should==@message4
27
+ end
28
+
29
+ it "should have proper last sender" do
30
+ @conversation.last_sender.should==@entity2
31
+ end
32
+
33
+ it "should have all conversation users" do
34
+ @conversation.recipients.count.should==2
35
+ @conversation.recipients.count.should==2
36
+ @conversation.recipients.count(@entity1).should==1
37
+ @conversation.recipients.count(@entity2).should==1
38
+ end
39
+
40
+ it "should be able to be marked as deleted" do
41
+ @conversation.move_to_trash(@entity1)
42
+ @conversation.mark_as_deleted(@entity1)
43
+ @conversation.should be_is_deleted(@entity1)
44
+ end
45
+
46
+ it "should be removed from the database once deleted by all participants" do
47
+ @conversation.mark_as_deleted(@entity1)
48
+ @conversation.mark_as_deleted(@entity2)
49
+ Conversation.exists?(@conversation.id).should be_false
50
+ end
51
+
52
+ it "should be able to be marked as read" do
53
+ #@conversation.move_to_trash(@entity1)
54
+ @conversation.mark_as_read(@entity1)
55
+ @conversation.should be_is_read(@entity)
56
+ end
57
+
58
+ it "should be able to be marked as unread" do
59
+ @conversation.mark_as_read(@entity1)
60
+ @conversation.mark_as_unread(@entity1)
61
+ @conversation.should be_is_unread(@entity1)
62
+ end
63
+
64
+ it "should be able to add a new participant" do
65
+ new_user = FactoryGirl.create(:user)
66
+ @conversation.add_participant(new_user)
67
+ @conversation.participants.count.should == 3
68
+ @conversation.participants.should include(new_user, @entity1, @entity2)
69
+ @conversation.receipts_for(new_user).count.should == @conversation.receipts_for(@entity1).count
70
+ end
71
+
72
+ it "should deliver messages to new participants" do
73
+ new_user = FactoryGirl.create(:user)
74
+ @conversation.add_participant(new_user)
75
+ expect{
76
+ receipt5 = @entity1.reply_to_all(@receipt4,"Reply body 4")
77
+ }.to change{ @conversation.receipts_for(new_user).count }.by 1
78
+ end
79
+
80
+ describe "scopes" do
81
+ let(:participant) { FactoryGirl.create(:user) }
82
+ let!(:inbox_conversation) { @entity1.send_message(participant, "Body", "Subject").message.conversation }
83
+ let!(:sentbox_conversation) { participant.send_message(@entity1, "Body", "Subject").message.conversation }
84
+
85
+
86
+ describe ".participant" do
87
+ it "finds conversations with receipts for participant" do
88
+ Conversation.participant(participant).should == [sentbox_conversation, inbox_conversation]
89
+ end
90
+ end
91
+
92
+ describe ".inbox" do
93
+ it "finds inbox conversations with receipts for participant" do
94
+ Conversation.inbox(participant).should == [inbox_conversation]
95
+ end
96
+ end
97
+
98
+ describe ".sentbox" do
99
+ it "finds sentbox conversations with receipts for participant" do
100
+ Conversation.sentbox(participant).should == [sentbox_conversation]
101
+ end
102
+ end
103
+
104
+ describe ".trash" do
105
+ it "finds trash conversations with receipts for participant" do
106
+ trashed_conversation = @entity1.send_message(participant, "Body", "Subject").message.conversation
107
+ trashed_conversation.move_to_trash(participant)
108
+
109
+ Conversation.trash(participant).should == [trashed_conversation]
110
+ end
111
+ end
112
+
113
+ describe ".unread" do
114
+ it "finds unread conversations with receipts for participant" do
115
+ [sentbox_conversation, inbox_conversation].each {|c| c.mark_as_read(participant) }
116
+ unread_conversation = @entity1.send_message(participant, "Body", "Subject").message.conversation
117
+
118
+ Conversation.unread(participant).should == [unread_conversation]
119
+ end
120
+ end
121
+ end
122
+
123
+ describe "#is_completely_trashed?" do
124
+ it "returns true if all receipts in conversation are trashed for participant" do
125
+ @conversation.move_to_trash(@entity1)
126
+ @conversation.is_completely_trashed?(@entity1).should be_true
127
+ end
128
+ end
129
+
130
+ describe "#is_deleted?" do
131
+ it "returns false if a recipient has not deleted the conversation" do
132
+ @conversation.is_deleted?(@entity1).should be_false
133
+ end
134
+
135
+ it "returns true if a recipient has deleted the conversation" do
136
+ @conversation.mark_as_deleted(@entity1)
137
+ @conversation.is_deleted?(@entity1).should be_true
138
+ end
139
+ end
140
+
141
+ describe "#is_orphaned?" do
142
+ it "returns true if both participants have deleted the conversation" do
143
+ @conversation.mark_as_deleted(@entity1)
144
+ @conversation.mark_as_deleted(@entity2)
145
+ @conversation.is_orphaned?.should be_true
146
+ end
147
+
148
+ it "returns false if one has not deleted the conversation" do
149
+ @conversation.mark_as_deleted(@entity1)
150
+ @conversation.is_orphaned?.should be_false
151
+ end
152
+ end
153
+
154
+ end
@@ -0,0 +1,160 @@
1
+ require 'spec_helper'
2
+
3
+ describe Mailbox do
4
+
5
+ before do
6
+ @entity1 = FactoryGirl.create(:user)
7
+ @entity2 = FactoryGirl.create(:user)
8
+ @receipt1 = @entity1.send_message(@entity2,"Body","Subject")
9
+ @receipt2 = @entity2.reply_to_all(@receipt1,"Reply body 1")
10
+ @receipt3 = @entity1.reply_to_all(@receipt2,"Reply body 2")
11
+ @receipt4 = @entity2.reply_to_all(@receipt3,"Reply body 3")
12
+ @message1 = @receipt1.message
13
+ @message4 = @receipt4.message
14
+ @conversation = @message1.conversation
15
+ end
16
+
17
+ it "should return all conversations" do
18
+ @conv2 = @entity1.send_message(@entity2,"Body","Subject").conversation
19
+ @conv3 = @entity2.send_message(@entity1,"Body","Subject").conversation
20
+ @conv4 = @entity1.send_message(@entity2,"Body","Subject").conversation
21
+
22
+ assert @entity1.mailbox.conversations
23
+
24
+ @entity1.mailbox.conversations.to_a.count.should==4
25
+ @entity1.mailbox.conversations.to_a.count(@conversation).should==1
26
+ @entity1.mailbox.conversations.to_a.count(@conv2).should==1
27
+ @entity1.mailbox.conversations.to_a.count(@conv3).should==1
28
+ @entity1.mailbox.conversations.to_a.count(@conv4).should==1
29
+ end
30
+
31
+ it "should return all mail" do
32
+ assert @entity1.mailbox.receipts
33
+ @entity1.mailbox.receipts.count.should==4
34
+ @entity1.mailbox.receipts[0].should==Receipt.recipient(@entity1).conversation(@conversation)[0]
35
+ @entity1.mailbox.receipts[1].should==Receipt.recipient(@entity1).conversation(@conversation)[1]
36
+ @entity1.mailbox.receipts[2].should==Receipt.recipient(@entity1).conversation(@conversation)[2]
37
+ @entity1.mailbox.receipts[3].should==Receipt.recipient(@entity1).conversation(@conversation)[3]
38
+
39
+ assert @entity2.mailbox.receipts
40
+ @entity2.mailbox.receipts.count.should==4
41
+ @entity2.mailbox.receipts[0].should==Receipt.recipient(@entity2).conversation(@conversation)[0]
42
+ @entity2.mailbox.receipts[1].should==Receipt.recipient(@entity2).conversation(@conversation)[1]
43
+ @entity2.mailbox.receipts[2].should==Receipt.recipient(@entity2).conversation(@conversation)[2]
44
+ @entity2.mailbox.receipts[3].should==Receipt.recipient(@entity2).conversation(@conversation)[3]
45
+ end
46
+
47
+ it "should return sentbox" do
48
+ assert @entity1.mailbox.receipts.inbox
49
+ @entity1.mailbox.receipts.sentbox.count.should==2
50
+ @entity1.mailbox.receipts.sentbox[0].should==@receipt1
51
+ @entity1.mailbox.receipts.sentbox[1].should==@receipt3
52
+
53
+ assert @entity2.mailbox.receipts.inbox
54
+ @entity2.mailbox.receipts.sentbox.count.should==2
55
+ @entity2.mailbox.receipts.sentbox[0].should==@receipt2
56
+ @entity2.mailbox.receipts.sentbox[1].should==@receipt4
57
+ end
58
+
59
+ it "should return inbox" do
60
+ assert @entity1.mailbox.receipts.inbox
61
+ @entity1.mailbox.receipts.inbox.count.should==2
62
+ @entity1.mailbox.receipts.inbox[0].should==Receipt.recipient(@entity1).inbox.conversation(@conversation)[0]
63
+ @entity1.mailbox.receipts.inbox[1].should==Receipt.recipient(@entity1).inbox.conversation(@conversation)[1]
64
+
65
+ assert @entity2.mailbox.receipts.inbox
66
+ @entity2.mailbox.receipts.inbox.count.should==2
67
+ @entity2.mailbox.receipts.inbox[0].should==Receipt.recipient(@entity2).inbox.conversation(@conversation)[0]
68
+ @entity2.mailbox.receipts.inbox[1].should==Receipt.recipient(@entity2).inbox.conversation(@conversation)[1]
69
+ end
70
+
71
+ it "should understand the read option" do
72
+ @entity1.mailbox.inbox({:read => false}).count.should_not == 0
73
+ @conversation.mark_as_read(@entity1)
74
+ @entity1.mailbox.inbox({:read => false}).count.should == 0
75
+ end
76
+
77
+ it "should return trashed mails" do
78
+ @entity1.mailbox.receipts.move_to_trash
79
+
80
+ assert @entity1.mailbox.receipts.trash
81
+ @entity1.mailbox.receipts.trash.count.should==4
82
+ @entity1.mailbox.receipts.trash[0].should==Receipt.recipient(@entity1).conversation(@conversation)[0]
83
+ @entity1.mailbox.receipts.trash[1].should==Receipt.recipient(@entity1).conversation(@conversation)[1]
84
+ @entity1.mailbox.receipts.trash[2].should==Receipt.recipient(@entity1).conversation(@conversation)[2]
85
+ @entity1.mailbox.receipts.trash[3].should==Receipt.recipient(@entity1).conversation(@conversation)[3]
86
+
87
+ assert @entity2.mailbox.receipts.trash
88
+ @entity2.mailbox.receipts.trash.count.should==0
89
+ end
90
+
91
+ it "should delete trashed mails (TODO)" do
92
+ @entity1.mailbox.receipts.move_to_trash
93
+ #TODO
94
+ #@entity1.mailbox.empty_trash
95
+
96
+ assert @entity1.mailbox.receipts.trash
97
+ #@entity1.mailbox.receipts.trash.count.should==0
98
+
99
+ assert @entity2.mailbox.receipts
100
+ @entity2.mailbox.receipts.count.should==4
101
+
102
+ assert @entity2.mailbox.receipts.trash
103
+ @entity2.mailbox.receipts.trash.count.should==0
104
+ end
105
+
106
+ it "should deleted messages are not shown in inbox" do
107
+ assert @entity1.mailbox.receipts.inbox
108
+ @entity1.mailbox.inbox.count.should==2
109
+ @entity1.mailbox.receipts.inbox[0].should==Receipt.recipient(@entity1).inbox.conversation(@conversation)[0]
110
+ @entity1.mailbox.receipts.inbox[1].should==Receipt.recipient(@entity1).inbox.conversation(@conversation)[1]
111
+
112
+ assert @entity1.mailbox.receipts.inbox.mark_as_deleted
113
+ @entity1.mailbox.inbox.count.should==0
114
+ end
115
+
116
+ it "should deleted messages are not shown in sentbox" do
117
+ assert @entity1.mailbox.receipts.inbox
118
+ @entity1.mailbox.receipts.sentbox.count.should==2
119
+ @entity1.mailbox.receipts.sentbox[0].should==@receipt1
120
+ @entity1.mailbox.receipts.sentbox[1].should==@receipt3
121
+
122
+ assert @entity1.mailbox.receipts.sentbox.mark_as_deleted
123
+ @entity1.mailbox.sentbox.count.should==0
124
+ end
125
+
126
+ it "should reply for deleted messages return to inbox" do
127
+ assert @entity1.mailbox.receipts.inbox
128
+ @entity1.mailbox.inbox.count.should==2
129
+ @entity1.mailbox.receipts.inbox[0].should==Receipt.recipient(@entity1).inbox.conversation(@conversation)[0]
130
+ @entity1.mailbox.receipts.inbox[1].should==Receipt.recipient(@entity1).inbox.conversation(@conversation)[1]
131
+
132
+ assert @entity1.mailbox.receipts.inbox.mark_as_deleted
133
+ @entity1.mailbox.inbox.count.should==0
134
+
135
+ @entity2.reply_to_all(@receipt1,"Reply body 1")
136
+ @entity1.mailbox.inbox.count.should==1
137
+
138
+ @entity2.reply_to_all(@receipt3,"Reply body 3")
139
+ @entity1.mailbox.inbox.count.should==2
140
+ end
141
+
142
+ context "STI models" do
143
+ before do
144
+ @sti_entity1 = FactoryGirl.create(:user)
145
+ @sti_entity2 = FactoryGirl.create(:user)
146
+ @sti_mail = @sti_entity1.send_message(@sti_entity2, "Body", "Subject")
147
+ end
148
+
149
+ it "should add one to senders sentbox" do
150
+ @sti_entity1.mailbox.sentbox.count.should==1
151
+ @sti_entity1.mailbox.sentbox.should include(@sti_mail.conversation)
152
+ end
153
+
154
+ it "should add one to recievers inbox" do
155
+ @sti_entity2.mailbox.inbox.count.should == 1
156
+ @sti_entity2.mailbox.inbox.should include(@sti_mail.conversation)
157
+ end
158
+ end
159
+
160
+ end