rails-alerter 0.0.5

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 (89) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +36 -0
  3. data/.rspec +2 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/Appraisals +11 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE +22 -0
  9. data/LICENSE.txt +22 -0
  10. data/README.md +111 -0
  11. data/Rakefile +10 -0
  12. data/alerter.gemspec +60 -0
  13. data/app/builders/alerter/base_builder.rb +26 -0
  14. data/app/builders/alerter/message_builder.rb +16 -0
  15. data/app/builders/alerter/receipt_builder.rb +13 -0
  16. data/app/mailers/alerter/base_mailer.rb +15 -0
  17. data/app/mailers/alerter/message_mailer.rb +12 -0
  18. data/app/models/alerter/mailbox.rb +74 -0
  19. data/app/models/alerter/message.rb +171 -0
  20. data/app/models/alerter/notification_type.rb +20 -0
  21. data/app/models/alerter/preference.rb +19 -0
  22. data/app/models/alerter/receipt.rb +89 -0
  23. data/app/views/alerter/message_mailer/new_message_email.html.erb +20 -0
  24. data/app/views/alerter/message_mailer/new_message_email.text.erb +10 -0
  25. data/db/migrate/20150821000000_create_alerter.rb +65 -0
  26. data/lib/alerter/cleaner.rb +9 -0
  27. data/lib/alerter/engine.rb +31 -0
  28. data/lib/alerter/message_dispatcher.rb +62 -0
  29. data/lib/alerter/models/notifiable.rb +174 -0
  30. data/lib/alerter/version.rb +3 -0
  31. data/lib/generators/alerter/install_generator.rb +37 -0
  32. data/lib/generators/alerter/namespacing_compatibility_generator.rb +24 -0
  33. data/lib/generators/alerter/templates/initializer.rb +29 -0
  34. data/lib/generators/alerter/views_generator.rb +11 -0
  35. data/lib/rails-alerter.rb +71 -0
  36. data/spec/alerter/message_dispatcher_spec.rb +101 -0
  37. data/spec/alerter_spec.rb +8 -0
  38. data/spec/dummy/.gitignore +5 -0
  39. data/spec/dummy/Rakefile +7 -0
  40. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  41. data/spec/dummy/app/controllers/home_controller.rb +4 -0
  42. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  43. data/spec/dummy/app/mailers/.gitkeep +0 -0
  44. data/spec/dummy/app/models/.gitkeep +0 -0
  45. data/spec/dummy/app/models/cylon.rb +4 -0
  46. data/spec/dummy/app/models/duck.rb +3 -0
  47. data/spec/dummy/app/models/user.rb +3 -0
  48. data/spec/dummy/app/views/home/index.html.haml +7 -0
  49. data/spec/dummy/app/views/layouts/application.html.haml +11 -0
  50. data/spec/dummy/config.ru +4 -0
  51. data/spec/dummy/config/application.rb +47 -0
  52. data/spec/dummy/config/boot.rb +10 -0
  53. data/spec/dummy/config/database.yml +24 -0
  54. data/spec/dummy/config/environment.rb +5 -0
  55. data/spec/dummy/config/environments/development.rb +29 -0
  56. data/spec/dummy/config/environments/production.rb +51 -0
  57. data/spec/dummy/config/environments/test.rb +37 -0
  58. data/spec/dummy/config/initializers/alerter.rb +26 -0
  59. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  60. data/spec/dummy/config/initializers/inflections.rb +10 -0
  61. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  62. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  63. data/spec/dummy/config/initializers/session_store.rb +8 -0
  64. data/spec/dummy/config/locales/en.yml +5 -0
  65. data/spec/dummy/config/routes.rb +58 -0
  66. data/spec/dummy/config/sunspot.yml +17 -0
  67. data/spec/dummy/db/migrate/20110228120600_create_users.rb +14 -0
  68. data/spec/dummy/db/migrate/20110306002940_create_ducks.rb +14 -0
  69. data/spec/dummy/db/migrate/20110306015107_create_cylons.rb +14 -0
  70. data/spec/dummy/db/schema.rb +77 -0
  71. data/spec/dummy/public/404.html +26 -0
  72. data/spec/dummy/public/422.html +26 -0
  73. data/spec/dummy/public/500.html +26 -0
  74. data/spec/dummy/public/favicon.ico +0 -0
  75. data/spec/dummy/public/index.html +239 -0
  76. data/spec/dummy/public/robots.txt +5 -0
  77. data/spec/dummy/public/uploads/testfile.txt +1 -0
  78. data/spec/dummy/script/rails +6 -0
  79. data/spec/factories/general.rb +37 -0
  80. data/spec/integration/message_and_receipt_spec.rb +42 -0
  81. data/spec/integration/navigation_spec.rb +8 -0
  82. data/spec/mailers/message_mailer_spec.rb +44 -0
  83. data/spec/models/alerter_models_messageable_spec.rb +311 -0
  84. data/spec/models/mailbox_spec.rb +55 -0
  85. data/spec/models/message_spec.rb +51 -0
  86. data/spec/models/preference_spec.rb +35 -0
  87. data/spec/models/receipt_spec.rb +61 -0
  88. data/spec/spec_helper.rb +54 -0
  89. metadata +330 -0
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
@@ -0,0 +1 @@
1
+ this is a dummy file to test file uploads
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,37 @@
1
+ FactoryGirl.define do
2
+ factory :user do
3
+ sequence(:name) { |n| "User #{ n }" }
4
+ sequence(:email) { |n| "user#{ n }@user.com" }
5
+ factory :user_with_email_pref do
6
+ after(:create) do |user|
7
+ create_list(:email_prefs, 1, notifiable: user)
8
+ end
9
+ end
10
+ end
11
+
12
+ factory :cylon, class: User do
13
+ sequence(:name) { |n| "Cylon #{ n }" }
14
+ sequence(:email) { |n| "cylon#{ n }@cylon.com" }
15
+ end
16
+
17
+ factory :duck, class: User do
18
+ sequence(:name) { |n| "Duck #{ n }" }
19
+ sequence(:email) { |n| "duck#{ n }@duck.com" }
20
+ end
21
+
22
+ factory :email_prefs, class: Alerter::Preference do
23
+ alert_methods %w(email)
24
+ association :notification_type
25
+ end
26
+
27
+ factory :notification_type, class: Alerter::NotificationType do
28
+ name 'info'
29
+ initialize_with { Alerter::NotificationType.find_or_create_by(name: name)}
30
+ end
31
+
32
+ factory :message, class: Alerter::Message do
33
+ short_msg 'short message'
34
+ long_msg 'long message'
35
+ association :notification_type
36
+ end
37
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Messages And Alerter::Receipts", type: :integration do
4
+
5
+ describe "two equal entities" do
6
+ before do
7
+ @entity1 = FactoryGirl.create :user
8
+ @entity2 = FactoryGirl.create :user
9
+ end
10
+
11
+ describe "message sending" do
12
+
13
+ before do
14
+ @receipts = Alerter::Message.message_all([@entity1,@entity2],"short", "long", "normal")
15
+ @message1 = @receipts.first.message
16
+ end
17
+
18
+ it "should create proper message" do
19
+ assert @message1.short_msg.eql?"short"
20
+ assert @message1.long_msg.eql?"long"
21
+ end
22
+
23
+ it "should create proper mails" do
24
+ #Receiver
25
+ mail = Alerter::Receipt.recipient(@entity1).where(message: @message1).first
26
+ assert mail
27
+ if mail
28
+ expect(mail.is_read).to be false
29
+ expect(mail.mailbox_type).to eq "inbox"
30
+ end
31
+ end
32
+
33
+ it "should have the correct recipients" do
34
+ recipients = @message1.recipients
35
+ expect(recipients.count).to eq 2
36
+ expect(recipients.count(@entity1)).to eq 1
37
+ expect(recipients.count(@entity2)).to eq 1
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Navigation" do
4
+
5
+ it "should be a valid app" do
6
+ expect(::Rails.application).to be_a(Dummy::Application)
7
+ end
8
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe Alerter::MessageMailer do
4
+ before do
5
+ @entity1 = FactoryGirl.create :user_with_email_pref
6
+ @entity2 = FactoryGirl.create :user_with_email_pref
7
+ @entity3 = FactoryGirl.create :user
8
+ @receipt1 = Alerter::Message.message_all([@entity1,@entity2,@entity3],"short", "long", "info")
9
+ end
10
+
11
+ it "should send emails when should_email? is true (2 out of 3)" do
12
+ expect(ActionMailer::Base.deliveries.size).to eq 2
13
+ end
14
+
15
+ it "should send an email to user entity" do
16
+ temp = false
17
+ ActionMailer::Base.deliveries.each do |email|
18
+ if email.to.first.to_s.eql? @entity1.email
19
+ temp = true
20
+ end
21
+ end
22
+ expect(temp).to be true
23
+ end
24
+
25
+ it "should send an email to second user entity" do
26
+ temp = false
27
+ ActionMailer::Base.deliveries.each do |email|
28
+ if email.to.first.to_s.eql? @entity2.email
29
+ temp = true
30
+ end
31
+ end
32
+ expect(temp).to be true
33
+ end
34
+
35
+ it "shouldn't send an email to last entity due to prefs" do
36
+ temp = false
37
+ ActionMailer::Base.deliveries.each do |email|
38
+ if email.to.first.to_s.eql? @entity3.email
39
+ temp = true
40
+ end
41
+ end
42
+ expect(temp).to be false
43
+ end
44
+ end
@@ -0,0 +1,311 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Alerter::Models::Messageable through User" do
4
+
5
+ before do
6
+ @entity1 = FactoryGirl.create(:user)
7
+ @entity2 = FactoryGirl.create(:user)
8
+ end
9
+
10
+ it "should have a mailbox" do
11
+ assert @entity1.mailbox
12
+ end
13
+
14
+ it 'should return the inbox count' do
15
+ expect(@entity1.unread_inbox_count).to eq 0
16
+ @entity1.send_message("short", "long", "normal")
17
+ @entity1.send_message("short", "long", "normal")
18
+ expect(@entity1.unread_inbox_count).to eq 2
19
+ @entity1.receipts.first.mark_as_read
20
+ expect(@entity1.unread_inbox_count).to eq 1
21
+ @entity1.send_message("short", "long", "normal")
22
+ @entity1.send_message("short", "long", "normal")
23
+ expect(@entity1.unread_inbox_count).to eq 3
24
+ end
25
+
26
+ it "should be able to send a message" do
27
+ assert @entity1.send_message("short", "long", "normal")
28
+ end
29
+
30
+ describe 'receipts' do
31
+ context 'single message' do
32
+ it "should be able to unread an owned Alerter::Receipt (mark as unread)" do
33
+ @receipt = @entity1.send_message("short", "long", "normal")
34
+ expect(@receipt.is_unread?).to eq true
35
+ @entity1.mark_as_read(@receipt)
36
+ @entity1.mark_as_unread(@receipt)
37
+ expect(@receipt.is_unread?).to eq true
38
+ end
39
+
40
+ it "should be able to read an owned Alerter::Receipt (mark as read)" do
41
+ @receipt = @entity1.send_message("short", "long", "normal")
42
+ expect(@receipt.is_unread?).to eq true
43
+ @entity1.mark_as_read(@receipt)
44
+ expect(@receipt.is_read?).to eq true
45
+ end
46
+
47
+ it "should be able to undelete an owned Alerter::Receipt (mark as not deleted)" do
48
+ @receipt = @entity1.send_message("short", "long", "normal")
49
+ expect(@receipt.deleted?).to eq false
50
+ @entity1.mark_as_deleted(@receipt)
51
+ @entity1.mark_as_not_deleted(@receipt)
52
+ expect(@receipt.deleted?).to eq false
53
+ end
54
+
55
+ it "should be able to delete an owned Alerter::Receipt (mark as deleted)" do
56
+ @receipt = @entity1.send_message("short", "long", "normal")
57
+ expect(@receipt.deleted?).to eq false
58
+ @entity1.mark_as_deleted(@receipt)
59
+ expect(@receipt.deleted?).to eq true
60
+ end
61
+
62
+ it "should not be able to unread a not owned Alerter::Receipt (mark as unread)" do
63
+ @receipt = @entity1.send_message("short", "long", "normal")
64
+ @entity1.mark_as_read(@receipt)
65
+ expect(@receipt.is_read?).to eq true
66
+ @entity2.mark_as_unread(@receipt) #Should not change
67
+ expect(@receipt.is_read?).to eq true
68
+ end
69
+
70
+ it "should not be able to read a not owned Alerter::Receipt (mark as read)" do
71
+ @receipt = @entity1.send_message("short", "long", "normal")
72
+ expect(@receipt.is_unread?).to eq true
73
+ @entity2.mark_as_read(@receipt) #Should not change
74
+ expect(@receipt.is_unread?).to eq true
75
+ end
76
+
77
+ it "should not be able to delete a not owned Alerter::Receipt (mark as deleted)" do
78
+ @receipt = @entity1.send_message("short", "long", "normal")
79
+ expect(@receipt.deleted?).to eq false
80
+ @entity2.mark_as_deleted(@receipt) #Should not change
81
+ expect(@receipt.deleted?).to eq false
82
+ end
83
+
84
+ it "should not be able to undelete a not owned Alerter::Receipt (mark as not deleted)" do
85
+ @receipt = @entity1.send_message("short", "long", "normal")
86
+ expect(@receipt.deleted?).to eq false
87
+ @entity2.mark_as_deleted(@receipt)
88
+ @entity2.mark_as_not_deleted(@receipt) #Should not change
89
+ expect(@receipt.deleted?).to eq false
90
+ end
91
+ end
92
+
93
+ context 'multiple' do
94
+ it "should be able to unread multiple owned Alerter::Receipts (mark as unread)" do
95
+ @receipts = [@entity1.send_message("short", "long", "normal"),
96
+ @entity1.send_message("short", "long", "normal"),
97
+ @entity2.send_message("short", "long", "normal")]
98
+
99
+ expect(@receipts.first.is_unread?).to eq true
100
+ expect(@receipts.second.is_unread?).to eq true
101
+ expect(@receipts.third.is_unread?).to eq true
102
+ @entity1.mark_as_read(@receipts)
103
+ @entity2.mark_as_read(@receipts)
104
+ expect(@receipts.first.is_read?).to eq true
105
+ expect(@receipts.second.is_read?).to eq true
106
+ expect(@receipts.third.is_read?).to eq true
107
+ @entity1.mark_as_unread(@receipts)
108
+ expect(@receipts.first.is_unread?).to eq true
109
+ expect(@receipts.second.is_unread?).to eq true
110
+ expect(@receipts.third.is_unread?).to eq false
111
+ end
112
+
113
+
114
+ it "should be able to read multiple owned Alerter::Receipts (mark as read)" do
115
+ @receipts = [@entity1.send_message("short", "long", "normal"),
116
+ @entity1.send_message("short", "long", "normal"),
117
+ @entity2.send_message("short", "long", "normal")]
118
+
119
+ expect(@receipts.first.is_unread?).to eq true
120
+ expect(@receipts.second.is_unread?).to eq true
121
+ expect(@receipts.third.is_unread?).to eq true
122
+ @entity1.mark_as_read(@receipts)
123
+ expect(@receipts.first.is_read?).to eq true
124
+ expect(@receipts.second.is_read?).to eq true
125
+ expect(@receipts.third.is_read?).to eq false
126
+ end
127
+
128
+
129
+ it "should be able to undelete multiple owned Alerter::Receipts (mark as not deleted)" do
130
+ @receipts = [@entity1.send_message("short", "long", "normal"),
131
+ @entity1.send_message("short", "long", "normal"),
132
+ @entity2.send_message("short", "long", "normal")]
133
+
134
+ expect(@receipts.first.deleted?).to eq false
135
+ expect(@receipts.second.deleted?).to eq false
136
+ expect(@receipts.third.deleted?).to eq false
137
+ @entity1.mark_as_deleted(@receipts)
138
+ @entity2.mark_as_deleted(@receipts)
139
+ expect(@receipts.first.deleted?).to eq true
140
+ expect(@receipts.second.deleted?).to eq true
141
+ expect(@receipts.third.deleted?).to eq true
142
+ @entity1.mark_as_not_deleted(@receipts)
143
+ expect(@receipts.first.deleted?).to eq false
144
+ expect(@receipts.second.deleted?).to eq false
145
+ expect(@receipts.third.deleted?).to eq true
146
+ end
147
+
148
+
149
+ it "should be able to delete multiple owned Alerter::Receipts (mark as deleted)" do
150
+ @receipts = [@entity1.send_message("short", "long", "normal"),
151
+ @entity1.send_message("short", "long", "normal"),
152
+ @entity2.send_message("short", "long", "normal")]
153
+
154
+ expect(@receipts.first.deleted?).to eq false
155
+ expect(@receipts.second.deleted?).to eq false
156
+ expect(@receipts.third.deleted?).to eq false
157
+ @entity1.mark_as_deleted(@receipts)
158
+ expect(@receipts.first.deleted?).to eq true
159
+ expect(@receipts.second.deleted?).to eq true
160
+ expect(@receipts.third.deleted?).to eq false
161
+ end
162
+ end
163
+ end
164
+
165
+ describe 'messages' do
166
+ context 'single' do
167
+ it "should be able to unread an owned Message (mark as unread)" do
168
+ @receipt = @entity1.send_message("short", "long", "normal")
169
+ @entity1.mark_as_read(@receipt)
170
+ @message = @receipt.message
171
+ expect(@receipt.is_read?).to eq true
172
+ @entity1.mark_as_unread(@message)
173
+ expect(@message.receipts_for(@entity1).first.is_read?).to eq false
174
+ end
175
+
176
+ it "should be able to read an owned Message (mark as read)" do
177
+ @receipt = @entity1.send_message("short", "long", "normal")
178
+ @message = @receipt.message
179
+ expect(@receipt.is_unread?).to eq true
180
+ @entity1.mark_as_read(@message)
181
+ expect(@message.receipt_for(@entity1).first.is_read?).to eq true
182
+ end
183
+
184
+ it "should be able to delete an owned Message (mark as deleted)" do
185
+ @receipt = @entity1.send_message("short", "long", "normal")
186
+ @message = @receipt.message
187
+ expect(@receipt.deleted?).to eq false
188
+ @entity1.mark_as_deleted(@message)
189
+ expect(@message.receipt_for(@entity1).first.deleted?).to eq true
190
+ end
191
+
192
+ it "should be able to undelete an owned Message (mark as not deleted)" do
193
+ @receipt = @entity1.send_message("short", "long", "normal")
194
+ @message = @receipt.message
195
+ expect(@receipt.deleted?).to eq false
196
+ @entity1.mark_as_deleted(@message)
197
+ expect(@message.receipt_for(@entity1).first.deleted?).to eq true
198
+ @entity1.mark_as_not_deleted(@message)
199
+ expect(@message.receipt_for(@entity1).first.deleted?).to eq false
200
+ end
201
+
202
+ it "should not be able to unread a not owned Message (mark as unread)" do
203
+ @receipt = @entity1.send_message("short", "long", "normal")
204
+ @entity1.mark_as_read(@receipt)
205
+ @message = @receipt.message
206
+ expect(@receipt.is_read?).to eq true
207
+ @entity2.mark_as_unread(@message)
208
+ expect(@message.receipt_for(@entity1).first.is_read?).to eq true
209
+ end
210
+
211
+ it "should not be able to read a not owned Message (mark as read)" do
212
+ @receipt = @entity1.send_message("short", "long", "normal")
213
+ @message = @receipt.message
214
+ expect(@receipt.is_unread?).to eq true
215
+ @entity2.mark_as_read(@message)
216
+ expect(@message.receipt_for(@entity1).first.is_read?).to eq false
217
+ end
218
+
219
+ it "should not be able to delete a not owned Message (mark as deleted)" do
220
+ @receipt = @entity1.send_message("short", "long", "normal")
221
+ @message = @receipt.message
222
+ expect(@receipt.deleted?).to eq false
223
+ @entity2.mark_as_deleted(@message)
224
+ expect(@message.receipt_for(@entity1).first.deleted?).to eq false
225
+ end
226
+
227
+ it "should not be able to undelete a not owned Message (mark as not deleted)" do
228
+ @receipt = @entity1.send_message("short", "long", "normal")
229
+ @message = @receipt.message
230
+ expect(@receipt.deleted?).to eq false
231
+ @entity1.mark_as_deleted(@message)
232
+ expect(@message.receipt_for(@entity1).first.deleted?).to eq true
233
+ @entity2.mark_as_not_deleted(@message)
234
+ expect(@message.receipt_for(@entity1).first.deleted?).to eq true
235
+ end
236
+ end
237
+
238
+ context 'multiple' do
239
+ it "should be able to unread multiple owned Messages (mark as unread)" do
240
+ @receipts = [@entity1.send_message("short", "long", "normal"),
241
+ @entity1.send_message("short", "long", "normal"),
242
+ @entity2.send_message("short", "long", "normal")]
243
+ @messages = @receipts.map { |r| r.message}
244
+
245
+ expect(@receipts.first.is_unread?).to eq true
246
+ expect(@receipts.second.is_unread?).to eq true
247
+ expect(@receipts.third.is_unread?).to eq true
248
+ @entity1.mark_as_read(@messages)
249
+ @entity2.mark_as_read(@messages)
250
+ expect(@messages.first.receipt_for(@entity1).first.is_read?).to eq true
251
+ expect(@messages.second.receipt_for(@entity1).first.is_read?).to eq true
252
+ expect(@messages.third.receipt_for(@entity2).first.is_read?).to eq true
253
+ @entity1.mark_as_unread(@messages)
254
+ expect(@messages.first.receipt_for(@entity1).first.is_unread?).to eq true
255
+ expect(@messages.second.receipt_for(@entity1).first.is_unread?).to eq true
256
+ expect(@messages.third.receipt_for(@entity2).first.is_unread?).to eq false
257
+ end
258
+
259
+
260
+ it "should be able to read multiple owned Messages (mark as read)" do
261
+ @receipts = [@entity1.send_message("short", "long", "normal"),
262
+ @entity1.send_message("short", "long", "normal"),
263
+ @entity2.send_message("short", "long", "normal")]
264
+ @messages = @receipts.map { |r| r.message}
265
+
266
+ expect(@receipts.first.is_unread?).to eq true
267
+ expect(@receipts.second.is_unread?).to eq true
268
+ expect(@receipts.third.is_unread?).to eq true
269
+ @entity1.mark_as_read(@messages)
270
+ expect(@messages.first.receipt_for(@entity1).first.is_read?).to eq true
271
+ expect(@messages.second.receipt_for(@entity1).first.is_read?).to eq true
272
+ expect(@messages.third.receipt_for(@entity2).first.is_read?).to eq false
273
+ end
274
+
275
+ it "should be able to undelete multiple owned Messages (mark as not deleted)" do
276
+ @receipts = [@entity1.send_message("short", "long", "normal"),
277
+ @entity1.send_message("short", "long", "normal"),
278
+ @entity2.send_message("short", "long", "normal")]
279
+ @messages = @receipts.map { |r| r.message}
280
+
281
+ expect(@receipts.first.deleted?).to eq false
282
+ expect(@receipts.second.deleted?).to eq false
283
+ expect(@receipts.third.deleted?).to eq false
284
+ @entity1.mark_as_deleted(@messages)
285
+ @entity2.mark_as_deleted(@messages)
286
+ expect(@messages.first.receipt_for(@entity1).first.deleted?).to eq true
287
+ expect(@messages.second.receipt_for(@entity1).first.deleted?).to eq true
288
+ expect(@messages.third.receipt_for(@entity2).first.deleted?).to eq true
289
+ @entity1.mark_as_not_deleted(@messages)
290
+ expect(@messages.first.receipt_for(@entity1).first.deleted?).to eq false
291
+ expect(@messages.second.receipt_for(@entity1).first.deleted?).to eq false
292
+ expect(@messages.third.receipt_for(@entity2).first.deleted?).to eq true
293
+ end
294
+
295
+ it "should be able to delete multiple owned Messages (mark as deleted)" do
296
+ @receipts = [@entity1.send_message("short", "long", "normal"),
297
+ @entity1.send_message("short", "long", "normal"),
298
+ @entity2.send_message("short", "long", "normal")]
299
+ @messages = @receipts.map { |r| r.message}
300
+
301
+ expect(@receipts.first.deleted?).to eq false
302
+ expect(@receipts.second.deleted?).to eq false
303
+ expect(@receipts.third.deleted?).to eq false
304
+ @entity1.mark_as_deleted(@messages)
305
+ expect(@messages.first.receipt_for(@entity1).first.deleted?).to eq true
306
+ expect(@messages.second.receipt_for(@entity1).first.deleted?).to eq true
307
+ expect(@messages.third.receipt_for(@entity2).first.deleted?).to eq false
308
+ end
309
+ end
310
+ end
311
+ end