mailboxer 0.11.0 → 0.12.0.rc1
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +4 -3
- data/Appraisals +6 -14
- data/Gemfile +1 -1
- data/README.md +2 -2
- data/app/mailers/mailboxer/base_mailer.rb +14 -0
- data/app/mailers/{message_mailer.rb → mailboxer/message_mailer.rb} +9 -14
- data/app/mailers/mailboxer/notification_mailer.rb +17 -0
- data/app/models/mailboxer/conversation.rb +196 -0
- data/app/models/mailboxer/conversation/opt_out.rb +15 -0
- data/app/models/{mailbox.rb → mailboxer/mailbox.rb} +10 -10
- data/app/models/mailboxer/message.rb +49 -0
- data/app/models/{notification.rb → mailboxer/notification.rb} +44 -40
- data/app/models/{receipt.rb → mailboxer/receipt.rb} +12 -11
- data/app/views/{message_mailer → mailboxer/message_mailer}/new_message_email.html.erb +3 -3
- data/app/views/{message_mailer → mailboxer/message_mailer}/new_message_email.text.erb +2 -2
- data/app/views/{message_mailer → mailboxer/message_mailer}/reply_message_email.html.erb +3 -3
- data/app/views/{message_mailer → mailboxer/message_mailer}/reply_message_email.text.erb +2 -2
- data/app/views/{notification_mailer → mailboxer/notification_mailer}/new_notification_email.html.erb +0 -0
- data/app/views/{notification_mailer → mailboxer/notification_mailer}/new_notification_email.text.erb +0 -0
- data/db/migrate/20110511145103_create_mailboxer.rb +18 -14
- data/db/migrate/20131206080416_add_conversation_optout.rb +14 -0
- data/gemfiles/rails3.2.gemfile +2 -3
- data/gemfiles/rails4.0.gemfile +3 -4
- data/gemfiles/rails4.1.gemfile +7 -0
- data/lib/generators/mailboxer/install_generator.rb +1 -4
- data/lib/generators/mailboxer/namespacing_compatibility_generator.rb +22 -0
- data/lib/generators/mailboxer/templates/initializer.rb +8 -4
- data/lib/generators/mailboxer/templates/mailboxer_namespacing_compatibility.rb +24 -0
- data/lib/mailboxer.rb +7 -1
- data/lib/mailboxer/cleaner.rb +9 -0
- data/lib/mailboxer/engine.rb +1 -1
- data/lib/mailboxer/mail_dispatcher.rb +48 -0
- data/lib/mailboxer/models/messageable.rb +21 -20
- data/lib/mailboxer/version.rb +3 -0
- data/mailboxer.gemspec +16 -8
- data/spec/dummy/Gemfile +1 -1
- data/spec/dummy/app/models/duck.rb +2 -2
- data/spec/dummy/config/initializers/mailboxer.rb +4 -0
- data/spec/dummy/db/migrate/20120305103200_create_mailboxer.rb +18 -14
- data/spec/dummy/db/migrate/20131206080416_add_conversation_optout.rb +14 -0
- data/spec/dummy/db/schema.rb +30 -21
- data/spec/integration/message_and_receipt_spec.rb +212 -212
- data/spec/mailboxer/mail_dispatcher_spec.rb +114 -0
- data/spec/mailers/message_mailer_spec.rb +4 -4
- data/spec/mailers/notification_mailer_spec.rb +2 -2
- data/spec/models/conversation_spec.rb +148 -47
- data/spec/models/mailbox_spec.rb +50 -50
- data/spec/models/mailboxer_models_messageable_spec.rb +52 -52
- data/spec/models/message_spec.rb +1 -1
- data/spec/models/notification_spec.rb +50 -18
- data/spec/models/receipt_spec.rb +1 -1
- data/spec/spec_helper.rb +3 -0
- metadata +68 -57
- data/app/mailers/notification_mailer.rb +0 -21
- data/app/models/conversation.rb +0 -166
- data/app/models/message.rb +0 -68
- data/db/migrate/20110719110700_add_notified_object.rb +0 -17
- data/db/migrate/20110912163911_add_notification_code.rb +0 -13
- data/db/migrate/20111204163911_add_attachments.rb +0 -9
- data/db/migrate/20120813110712_rename_receipts_read.rb +0 -9
- data/db/migrate/20130305144212_add_global_notification_support.rb +0 -9
- data/gemfiles/rails3.0.gemfile +0 -8
- data/gemfiles/rails3.1.gemfile +0 -8
- data/lib/mailboxer/concerns/configurable_mailer.rb +0 -13
- data/spec/dummy/db/migrate/20120305103201_add_notified_object.rb +0 -17
- data/spec/dummy/db/migrate/20120305103202_add_notification_code.rb +0 -13
- data/spec/dummy/db/migrate/20120305103203_add_attachments.rb +0 -5
- data/spec/dummy/db/migrate/20120813110712_rename_receipts_read.rb +0 -9
- data/spec/dummy/db/migrate/20130305144212_add_global_notification_support.rb +0 -11
- data/spec/mailboxer/concerns/configurable_mailer_spec.rb +0 -27
@@ -0,0 +1,114 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Mailboxer::MailDispatcher do
|
4
|
+
|
5
|
+
subject(:instance) { described_class.new(mailable, recipients) }
|
6
|
+
|
7
|
+
let(:mailable) { Mailboxer::Notification.new }
|
8
|
+
let(:recipient1) { double 'recipient1', mailboxer_email: '' }
|
9
|
+
let(:recipient2) { double 'recipient2', mailboxer_email: 'foo@bar.com' }
|
10
|
+
let(:recipients) { [ recipient1, recipient2 ] }
|
11
|
+
|
12
|
+
describe "call" do
|
13
|
+
context "no emails" do
|
14
|
+
before { Mailboxer.uses_emails = false }
|
15
|
+
after { Mailboxer.uses_emails = true }
|
16
|
+
its(:call) { should be_false }
|
17
|
+
end
|
18
|
+
|
19
|
+
context "mailer wants array" do
|
20
|
+
before { Mailboxer.mailer_wants_array = true }
|
21
|
+
after { Mailboxer.mailer_wants_array = false }
|
22
|
+
it 'sends collection' do
|
23
|
+
subject.should_receive(:send_email).with(recipients)
|
24
|
+
subject.call
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context "mailer doesnt want array" do
|
29
|
+
it 'sends collection' do
|
30
|
+
subject.should_not_receive(:send_email).with(recipient1) #email is blank
|
31
|
+
subject.should_receive(:send_email).with(recipient2)
|
32
|
+
subject.call
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "send_email" do
|
38
|
+
|
39
|
+
let(:mailer) { double 'mailer' }
|
40
|
+
|
41
|
+
before(:each) do
|
42
|
+
subject.stub(:mailer).and_return mailer
|
43
|
+
end
|
44
|
+
|
45
|
+
context "with custom_deliver_proc" do
|
46
|
+
let(:my_proc) { double 'proc' }
|
47
|
+
|
48
|
+
before { Mailboxer.custom_deliver_proc = my_proc }
|
49
|
+
after { Mailboxer.custom_deliver_proc = nil }
|
50
|
+
it "triggers proc" do
|
51
|
+
my_proc.should_receive(:call).with(mailer, mailable, recipient1)
|
52
|
+
subject.send :send_email, recipient1
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context "without custom_deliver_proc" do
|
57
|
+
let(:email) { double :email }
|
58
|
+
|
59
|
+
it "triggers standard deliver chain" do
|
60
|
+
mailer.should_receive(:send_email).with(mailable, recipient1).and_return email
|
61
|
+
email.should_receive :deliver
|
62
|
+
|
63
|
+
subject.send :send_email, recipient1
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "mailer" do
|
69
|
+
let(:recipients) { [] }
|
70
|
+
|
71
|
+
context "mailable is a Message" do
|
72
|
+
let(:mailable) { Mailboxer::Notification.new }
|
73
|
+
|
74
|
+
its(:mailer) { should be Mailboxer::NotificationMailer }
|
75
|
+
|
76
|
+
context "with custom mailer" do
|
77
|
+
before { Mailboxer.notification_mailer = 'foo' }
|
78
|
+
after { Mailboxer.notification_mailer = nil }
|
79
|
+
|
80
|
+
its(:mailer) { should eq 'foo' }
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context "mailable is a Notification" do
|
85
|
+
let(:mailable) { Mailboxer::Message.new }
|
86
|
+
its(:mailer) { should be Mailboxer::MessageMailer }
|
87
|
+
|
88
|
+
context "with custom mailer" do
|
89
|
+
before { Mailboxer.message_mailer = 'foo' }
|
90
|
+
after { Mailboxer.message_mailer = nil }
|
91
|
+
|
92
|
+
its(:mailer) { should eq 'foo' }
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "filtered_recipients" do
|
98
|
+
context "responds to conversation" do
|
99
|
+
let(:conversation) { double 'conversation' }
|
100
|
+
let(:mailable) { double 'mailable', :conversation => conversation }
|
101
|
+
before(:each) do
|
102
|
+
conversation.should_receive(:has_subscriber?).with(recipient1).and_return false
|
103
|
+
conversation.should_receive(:has_subscriber?).with(recipient2).and_return true
|
104
|
+
end
|
105
|
+
|
106
|
+
its(:filtered_recipients){ should eq [recipient2] }
|
107
|
+
end
|
108
|
+
|
109
|
+
context 'doesnt respond to conversation' do
|
110
|
+
let(:mailable) { double 'mailable' }
|
111
|
+
its(:filtered_recipients){ should eq recipients }
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe MessageMailer do
|
3
|
+
describe Mailboxer::MessageMailer do
|
4
4
|
shared_examples 'message_mailer' do
|
5
5
|
let(:sender) { FactoryGirl.create(:user) }
|
6
6
|
let(:entity1) { FactoryGirl.create(:user) }
|
@@ -66,8 +66,8 @@ describe MessageMailer do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
context "mailer_wants_array is true" do
|
69
|
-
class ArrayMailer < MessageMailer
|
70
|
-
default template_path: 'message_mailer'
|
69
|
+
class ArrayMailer < Mailboxer::MessageMailer
|
70
|
+
default template_path: 'mailboxer/message_mailer'
|
71
71
|
|
72
72
|
def new_message_email(message, receivers)
|
73
73
|
receivers.each { |receiver| super(message, receiver) if receiver.mailboxer_email(message).present? }
|
@@ -85,7 +85,7 @@ describe MessageMailer do
|
|
85
85
|
|
86
86
|
after :all do
|
87
87
|
Mailboxer.mailer_wants_array = false
|
88
|
-
Mailboxer.message_mailer = MessageMailer
|
88
|
+
Mailboxer.message_mailer = Mailboxer::MessageMailer
|
89
89
|
end
|
90
90
|
|
91
91
|
it_behaves_like 'message_mailer'
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe NotificationMailer do
|
3
|
+
describe Mailboxer::NotificationMailer do
|
4
4
|
before do
|
5
5
|
@entity1 = FactoryGirl.create(:user)
|
6
6
|
@entity2 = FactoryGirl.create(:duck)
|
7
7
|
@entity3 = FactoryGirl.create(:cylon)
|
8
|
-
@receipt1 = Notification.notify_all([@entity1,@entity2,@entity3],"Subject", "Body Body Body Body Body Body Body Body Body Body Body Body")
|
8
|
+
@receipt1 = Mailboxer::Notification.notify_all([@entity1,@entity2,@entity3],"Subject", "Body Body Body Body Body Body Body Body Body Body Body Body")
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should send emails when should_email? is true (2 out of 3)" do
|
@@ -1,123 +1,224 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Conversation do
|
3
|
+
describe Mailboxer::Conversation do
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
5
|
+
let!(:entity1) { FactoryGirl.create(:user) }
|
6
|
+
let!(:entity2) { FactoryGirl.create(:user) }
|
7
|
+
let!(:receipt1) { entity1.send_message(entity2,"Body","Subject") }
|
8
|
+
let!(:receipt2) { entity2.reply_to_all(receipt1,"Reply body 1") }
|
9
|
+
let!(:receipt3) { entity1.reply_to_all(receipt2,"Reply body 2") }
|
10
|
+
let!(:receipt4) { entity2.reply_to_all(receipt3,"Reply body 3") }
|
11
|
+
let!(:message1) { receipt1.notification }
|
12
|
+
let!(:message4) { receipt4.notification }
|
13
|
+
let!(:conversation) { message1.conversation }
|
14
|
+
|
15
|
+
it { should validate_presence_of :subject }
|
16
|
+
it { should ensure_length_of(:subject).is_at_most(Mailboxer.subject_max_length) }
|
16
17
|
|
17
18
|
it "should have proper original message" do
|
18
|
-
|
19
|
+
conversation.original_message.should == message1
|
19
20
|
end
|
20
21
|
|
21
22
|
it "should have proper originator (first sender)" do
|
22
|
-
|
23
|
+
conversation.originator.should == entity1
|
23
24
|
end
|
24
25
|
|
25
26
|
it "should have proper last message" do
|
26
|
-
|
27
|
+
conversation.last_message.should == message4
|
27
28
|
end
|
28
29
|
|
29
30
|
it "should have proper last sender" do
|
30
|
-
|
31
|
+
conversation.last_sender.should == entity2
|
31
32
|
end
|
32
33
|
|
33
34
|
it "should have all conversation users" do
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
conversation.recipients.count.should == 2
|
36
|
+
conversation.recipients.count.should == 2
|
37
|
+
conversation.recipients.count(entity1).should == 1
|
38
|
+
conversation.recipients.count(entity2).should == 1
|
38
39
|
end
|
39
40
|
|
40
41
|
it "should be able to be marked as deleted" do
|
41
|
-
|
42
|
-
|
43
|
-
|
42
|
+
conversation.move_to_trash(entity1)
|
43
|
+
conversation.mark_as_deleted(entity1)
|
44
|
+
conversation.should be_is_deleted(entity1)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should be removed from the database once deleted by all participants" do
|
48
|
+
conversation.mark_as_deleted(entity1)
|
49
|
+
conversation.mark_as_deleted(entity2)
|
50
|
+
Mailboxer::Conversation.exists?(conversation.id).should be_false
|
44
51
|
end
|
45
52
|
|
46
53
|
it "should be able to be marked as read" do
|
47
|
-
|
48
|
-
|
49
|
-
@conversation.should be_is_read(@entity)
|
54
|
+
conversation.mark_as_read(entity1)
|
55
|
+
conversation.should be_is_read(entity1)
|
50
56
|
end
|
51
57
|
|
52
58
|
it "should be able to be marked as unread" do
|
53
|
-
|
54
|
-
|
55
|
-
|
59
|
+
conversation.mark_as_read(entity1)
|
60
|
+
conversation.mark_as_unread(entity1)
|
61
|
+
conversation.should be_is_unread(entity1)
|
56
62
|
end
|
57
63
|
|
58
64
|
it "should be able to add a new participant" do
|
59
65
|
new_user = FactoryGirl.create(:user)
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
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
|
64
70
|
end
|
65
71
|
|
66
72
|
it "should deliver messages to new participants" do
|
67
73
|
new_user = FactoryGirl.create(:user)
|
68
|
-
|
74
|
+
conversation.add_participant(new_user)
|
69
75
|
expect{
|
70
|
-
receipt5 =
|
71
|
-
}.to change{
|
76
|
+
receipt5 = entity1.reply_to_all(receipt4,"Reply body 4")
|
77
|
+
}.to change{ conversation.receipts_for(new_user).count }.by 1
|
72
78
|
end
|
73
79
|
|
74
80
|
describe "scopes" do
|
75
81
|
let(:participant) { FactoryGirl.create(:user) }
|
76
|
-
let!(:inbox_conversation) {
|
77
|
-
let!(:sentbox_conversation) { participant.send_message(
|
82
|
+
let!(:inbox_conversation) { entity1.send_message(participant, "Body", "Subject").notification.conversation }
|
83
|
+
let!(:sentbox_conversation) { participant.send_message(entity1, "Body", "Subject").notification.conversation }
|
78
84
|
|
79
85
|
|
80
86
|
describe ".participant" do
|
81
87
|
it "finds conversations with receipts for participant" do
|
82
|
-
Conversation.participant(participant).should == [sentbox_conversation, inbox_conversation]
|
88
|
+
Mailboxer::Conversation.participant(participant).should == [sentbox_conversation, inbox_conversation]
|
83
89
|
end
|
84
90
|
end
|
85
91
|
|
86
92
|
describe ".inbox" do
|
87
93
|
it "finds inbox conversations with receipts for participant" do
|
88
|
-
Conversation.inbox(participant).should == [inbox_conversation]
|
94
|
+
Mailboxer::Conversation.inbox(participant).should == [inbox_conversation]
|
89
95
|
end
|
90
96
|
end
|
91
97
|
|
92
98
|
describe ".sentbox" do
|
93
99
|
it "finds sentbox conversations with receipts for participant" do
|
94
|
-
Conversation.sentbox(participant).should == [sentbox_conversation]
|
100
|
+
Mailboxer::Conversation.sentbox(participant).should == [sentbox_conversation]
|
95
101
|
end
|
96
102
|
end
|
97
103
|
|
98
104
|
describe ".trash" do
|
99
105
|
it "finds trash conversations with receipts for participant" do
|
100
|
-
trashed_conversation =
|
106
|
+
trashed_conversation = entity1.send_message(participant, "Body", "Subject").notification.conversation
|
101
107
|
trashed_conversation.move_to_trash(participant)
|
102
108
|
|
103
|
-
Conversation.trash(participant).should == [trashed_conversation]
|
109
|
+
Mailboxer::Conversation.trash(participant).should == [trashed_conversation]
|
104
110
|
end
|
105
111
|
end
|
106
112
|
|
107
113
|
describe ".unread" do
|
108
114
|
it "finds unread conversations with receipts for participant" do
|
109
115
|
[sentbox_conversation, inbox_conversation].each {|c| c.mark_as_read(participant) }
|
110
|
-
unread_conversation =
|
116
|
+
unread_conversation = entity1.send_message(participant, "Body", "Subject").notification.conversation
|
111
117
|
|
112
|
-
Conversation.unread(participant).should == [unread_conversation]
|
118
|
+
Mailboxer::Conversation.unread(participant).should == [unread_conversation]
|
113
119
|
end
|
114
120
|
end
|
115
121
|
end
|
116
122
|
|
117
123
|
describe "#is_completely_trashed?" do
|
118
124
|
it "returns true if all receipts in conversation are trashed for participant" do
|
119
|
-
|
120
|
-
|
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
|
+
|
155
|
+
describe "#opt_out" do
|
156
|
+
context 'participant still opt in' do
|
157
|
+
let(:opt_out) { conversation.opt_outs.first }
|
158
|
+
|
159
|
+
it "creates an opt_out object" do
|
160
|
+
expect{
|
161
|
+
conversation.opt_out(entity1)
|
162
|
+
}.to change{ conversation.opt_outs.count}.by 1
|
163
|
+
end
|
164
|
+
|
165
|
+
it "creates opt out object linked to the proper conversation and participant" do
|
166
|
+
conversation.opt_out(entity1)
|
167
|
+
expect(opt_out.conversation).to eq conversation
|
168
|
+
expect(opt_out.unsubscriber).to eq entity1
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
context 'participant already opted out' do
|
173
|
+
before do
|
174
|
+
conversation.opt_out(entity1)
|
175
|
+
end
|
176
|
+
it 'does nothing' do
|
177
|
+
expect{
|
178
|
+
conversation.opt_out(entity1)
|
179
|
+
}.to_not change{ conversation.opt_outs.count}
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
describe "#opt_out" do
|
185
|
+
context 'participant already opt in' do
|
186
|
+
it "does nothing" do
|
187
|
+
expect{
|
188
|
+
conversation.opt_in(entity1)
|
189
|
+
}.to_not change{ conversation.opt_outs.count }
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
context 'participant opted out' do
|
194
|
+
before do
|
195
|
+
conversation.opt_out(entity1)
|
196
|
+
end
|
197
|
+
it 'destroys the opt out object' do
|
198
|
+
expect{
|
199
|
+
conversation.opt_in(entity1)
|
200
|
+
}.to change{ conversation.opt_outs.count}.by -1
|
201
|
+
end
|
121
202
|
end
|
122
203
|
end
|
204
|
+
|
205
|
+
describe "#subscriber?" do
|
206
|
+
let(:action) { conversation.has_subscriber?(entity1) }
|
207
|
+
|
208
|
+
context 'participant opted in' do
|
209
|
+
it "returns true" do
|
210
|
+
expect(action).to be_true
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
context 'participant opted out' do
|
215
|
+
before do
|
216
|
+
conversation.opt_out(entity1)
|
217
|
+
end
|
218
|
+
it 'returns false' do
|
219
|
+
expect(action).to be_false
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
123
224
|
end
|
data/spec/models/mailbox_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe Mailbox do
|
4
|
-
|
3
|
+
describe Mailboxer::Mailbox do
|
4
|
+
|
5
5
|
before do
|
6
6
|
@entity1 = FactoryGirl.create(:user)
|
7
7
|
@entity2 = FactoryGirl.create(:user)
|
@@ -12,60 +12,60 @@ describe Mailbox do
|
|
12
12
|
@message1 = @receipt1.notification
|
13
13
|
@message4 = @receipt4.notification
|
14
14
|
@conversation = @message1.conversation
|
15
|
-
end
|
16
|
-
|
15
|
+
end
|
16
|
+
|
17
17
|
it "should return all conversations" do
|
18
18
|
@conv2 = @entity1.send_message(@entity2,"Body","Subject").conversation
|
19
19
|
@conv3 = @entity2.send_message(@entity1,"Body","Subject").conversation
|
20
20
|
@conv4 = @entity1.send_message(@entity2,"Body","Subject").conversation
|
21
|
-
|
21
|
+
|
22
22
|
assert @entity1.mailbox.conversations
|
23
|
-
|
23
|
+
|
24
24
|
@entity1.mailbox.conversations.to_a.count.should==4
|
25
25
|
@entity1.mailbox.conversations.to_a.count(@conversation).should==1
|
26
26
|
@entity1.mailbox.conversations.to_a.count(@conv2).should==1
|
27
27
|
@entity1.mailbox.conversations.to_a.count(@conv3).should==1
|
28
|
-
@entity1.mailbox.conversations.to_a.count(@conv4).should==1
|
28
|
+
@entity1.mailbox.conversations.to_a.count(@conv4).should==1
|
29
29
|
end
|
30
|
-
|
31
|
-
it "should return all mail" do
|
30
|
+
|
31
|
+
it "should return all mail" do
|
32
32
|
assert @entity1.mailbox.receipts
|
33
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
|
-
|
34
|
+
@entity1.mailbox.receipts[0].should==Mailboxer::Receipt.recipient(@entity1).conversation(@conversation)[0]
|
35
|
+
@entity1.mailbox.receipts[1].should==Mailboxer::Receipt.recipient(@entity1).conversation(@conversation)[1]
|
36
|
+
@entity1.mailbox.receipts[2].should==Mailboxer::Receipt.recipient(@entity1).conversation(@conversation)[2]
|
37
|
+
@entity1.mailbox.receipts[3].should==Mailboxer::Receipt.recipient(@entity1).conversation(@conversation)[3]
|
38
|
+
|
39
39
|
assert @entity2.mailbox.receipts
|
40
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]
|
41
|
+
@entity2.mailbox.receipts[0].should==Mailboxer::Receipt.recipient(@entity2).conversation(@conversation)[0]
|
42
|
+
@entity2.mailbox.receipts[1].should==Mailboxer::Receipt.recipient(@entity2).conversation(@conversation)[1]
|
43
|
+
@entity2.mailbox.receipts[2].should==Mailboxer::Receipt.recipient(@entity2).conversation(@conversation)[2]
|
44
|
+
@entity2.mailbox.receipts[3].should==Mailboxer::Receipt.recipient(@entity2).conversation(@conversation)[3]
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
it "should return sentbox" do
|
48
48
|
assert @entity1.mailbox.receipts.inbox
|
49
49
|
@entity1.mailbox.receipts.sentbox.count.should==2
|
50
50
|
@entity1.mailbox.receipts.sentbox[0].should==@receipt1
|
51
51
|
@entity1.mailbox.receipts.sentbox[1].should==@receipt3
|
52
|
-
|
52
|
+
|
53
53
|
assert @entity2.mailbox.receipts.inbox
|
54
54
|
@entity2.mailbox.receipts.sentbox.count.should==2
|
55
55
|
@entity2.mailbox.receipts.sentbox[0].should==@receipt2
|
56
56
|
@entity2.mailbox.receipts.sentbox[1].should==@receipt4
|
57
57
|
end
|
58
|
-
|
58
|
+
|
59
59
|
it "should return inbox" do
|
60
60
|
assert @entity1.mailbox.receipts.inbox
|
61
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
|
-
|
62
|
+
@entity1.mailbox.receipts.inbox[0].should==Mailboxer::Receipt.recipient(@entity1).inbox.conversation(@conversation)[0]
|
63
|
+
@entity1.mailbox.receipts.inbox[1].should==Mailboxer::Receipt.recipient(@entity1).inbox.conversation(@conversation)[1]
|
64
|
+
|
65
65
|
assert @entity2.mailbox.receipts.inbox
|
66
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]
|
67
|
+
@entity2.mailbox.receipts.inbox[0].should==Mailboxer::Receipt.recipient(@entity2).inbox.conversation(@conversation)[0]
|
68
|
+
@entity2.mailbox.receipts.inbox[1].should==Mailboxer::Receipt.recipient(@entity2).inbox.conversation(@conversation)[1]
|
69
69
|
end
|
70
70
|
|
71
71
|
it "should understand the read option" do
|
@@ -73,41 +73,41 @@ describe Mailbox do
|
|
73
73
|
@conversation.mark_as_read(@entity1)
|
74
74
|
@entity1.mailbox.inbox({:read => false}).count.should == 0
|
75
75
|
end
|
76
|
-
|
77
|
-
it "should return trashed mails" do
|
76
|
+
|
77
|
+
it "should return trashed mails" do
|
78
78
|
@entity1.mailbox.receipts.move_to_trash
|
79
|
-
|
79
|
+
|
80
80
|
assert @entity1.mailbox.receipts.trash
|
81
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
|
-
|
82
|
+
@entity1.mailbox.receipts.trash[0].should==Mailboxer::Receipt.recipient(@entity1).conversation(@conversation)[0]
|
83
|
+
@entity1.mailbox.receipts.trash[1].should==Mailboxer::Receipt.recipient(@entity1).conversation(@conversation)[1]
|
84
|
+
@entity1.mailbox.receipts.trash[2].should==Mailboxer::Receipt.recipient(@entity1).conversation(@conversation)[2]
|
85
|
+
@entity1.mailbox.receipts.trash[3].should==Mailboxer::Receipt.recipient(@entity1).conversation(@conversation)[3]
|
86
|
+
|
87
87
|
assert @entity2.mailbox.receipts.trash
|
88
|
-
@entity2.mailbox.receipts.trash.count.should==0
|
88
|
+
@entity2.mailbox.receipts.trash.count.should==0
|
89
89
|
end
|
90
|
-
|
91
|
-
it "should delete trashed mails (TODO)" do
|
90
|
+
|
91
|
+
it "should delete trashed mails (TODO)" do
|
92
92
|
@entity1.mailbox.receipts.move_to_trash
|
93
93
|
#TODO
|
94
94
|
#@entity1.mailbox.empty_trash
|
95
|
-
|
95
|
+
|
96
96
|
assert @entity1.mailbox.receipts.trash
|
97
|
-
#@entity1.mailbox.receipts.trash.count.should==0
|
98
|
-
|
97
|
+
#@entity1.mailbox.receipts.trash.count.should==0
|
98
|
+
|
99
99
|
assert @entity2.mailbox.receipts
|
100
100
|
@entity2.mailbox.receipts.count.should==4
|
101
|
-
|
101
|
+
|
102
102
|
assert @entity2.mailbox.receipts.trash
|
103
|
-
@entity2.mailbox.receipts.trash.count.should==0
|
103
|
+
@entity2.mailbox.receipts.trash.count.should==0
|
104
104
|
end
|
105
105
|
|
106
106
|
it "should deleted messages are not shown in inbox" do
|
107
107
|
assert @entity1.mailbox.receipts.inbox
|
108
|
-
@entity1.mailbox.inbox.count.should==
|
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]
|
108
|
+
@entity1.mailbox.inbox.count.should==1
|
109
|
+
@entity1.mailbox.receipts.inbox[0].should==Mailboxer::Receipt.recipient(@entity1).inbox.conversation(@conversation)[0]
|
110
|
+
@entity1.mailbox.receipts.inbox[1].should==Mailboxer::Receipt.recipient(@entity1).inbox.conversation(@conversation)[1]
|
111
111
|
|
112
112
|
assert @entity1.mailbox.receipts.inbox.mark_as_deleted
|
113
113
|
@entity1.mailbox.inbox.count.should==0
|
@@ -125,9 +125,9 @@ describe Mailbox do
|
|
125
125
|
|
126
126
|
it "should reply for deleted messages return to inbox" do
|
127
127
|
assert @entity1.mailbox.receipts.inbox
|
128
|
-
@entity1.mailbox.inbox.count.should==
|
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]
|
128
|
+
@entity1.mailbox.inbox.count.should==1
|
129
|
+
@entity1.mailbox.receipts.inbox[0].should==Mailboxer::Receipt.recipient(@entity1).inbox.conversation(@conversation)[0]
|
130
|
+
@entity1.mailbox.receipts.inbox[1].should==Mailboxer::Receipt.recipient(@entity1).inbox.conversation(@conversation)[1]
|
131
131
|
|
132
132
|
assert @entity1.mailbox.receipts.inbox.mark_as_deleted
|
133
133
|
@entity1.mailbox.inbox.count.should==0
|
@@ -136,7 +136,7 @@ describe Mailbox do
|
|
136
136
|
@entity1.mailbox.inbox.count.should==1
|
137
137
|
|
138
138
|
@entity2.reply_to_all(@receipt3,"Reply body 3")
|
139
|
-
@entity1.mailbox.inbox.count.should==
|
139
|
+
@entity1.mailbox.inbox.count.should==1
|
140
140
|
end
|
141
141
|
|
142
142
|
context "STI models" do
|
@@ -156,5 +156,5 @@ describe Mailbox do
|
|
156
156
|
@sti_entity2.mailbox.inbox.should include(@sti_mail.conversation)
|
157
157
|
end
|
158
158
|
end
|
159
|
-
|
159
|
+
|
160
160
|
end
|