message_train 0.6.17 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +16 -13
- data/.rubocop_todo.yml +12 -0
- data/.ruby-version +1 -1
- data/.travis.yml +1 -1
- data/Gemfile +28 -30
- data/README.md +284 -0
- data/Rakefile +6 -7
- data/VERSION +1 -1
- data/app/assets/javascripts/ckeditor/{config.js.coffee → config.js} +7 -6
- data/app/assets/stylesheets/message_train.scss +0 -8
- data/app/controllers/concerns/message_train_authorization.rb +37 -0
- data/app/controllers/concerns/message_train_support.rb +41 -69
- data/app/controllers/message_train/application_controller.rb +1 -0
- data/app/controllers/message_train/boxes_controller.rb +5 -4
- data/app/controllers/message_train/conversations_controller.rb +7 -5
- data/app/controllers/message_train/messages_controller.rb +43 -27
- data/app/controllers/message_train/participants_controller.rb +14 -25
- data/app/controllers/message_train/unsubscribes_controller.rb +96 -61
- data/app/helpers/message_train/application_helper.rb +13 -7
- data/app/helpers/message_train/attachments_helper.rb +4 -12
- data/app/helpers/message_train/boxes_helper.rb +4 -14
- data/app/helpers/message_train/collectives_helper.rb +23 -29
- data/app/helpers/message_train/conversations_helper.rb +52 -30
- data/app/helpers/message_train/messages_helper.rb +33 -20
- data/app/mailers/message_train/receipt_mailer.rb +22 -12
- data/app/models/message_train/attachment.rb +2 -2
- data/app/models/message_train/box.rb +182 -228
- data/app/models/message_train/conversation.rb +100 -103
- data/app/models/message_train/ignore.rb +83 -4
- data/app/models/message_train/message.rb +66 -117
- data/app/models/message_train/receipt.rb +73 -49
- data/app/views/message_train/boxes/show.html.haml +11 -7
- data/config/locales/en.yml +1 -0
- data/config/routes.rb +6 -12
- data/lib/message_train.rb +3 -1
- data/lib/message_train/class_methods.rb +51 -0
- data/lib/message_train/configuration.rb +28 -3
- data/lib/message_train/instance_methods.rb +209 -0
- data/lib/message_train/mixin.rb +25 -320
- data/message_train.gemspec +83 -83
- data/spec/controllers/message_train/boxes_controller_spec.rb +37 -19
- data/spec/controllers/message_train/concerns_spec.rb +21 -3
- data/spec/controllers/message_train/conversations_controller_spec.rb +41 -18
- data/spec/controllers/message_train/messages_controller_spec.rb +112 -31
- data/spec/controllers/message_train/participants_controller_spec.rb +33 -7
- data/spec/controllers/message_train/unsubscribes_controller_spec.rb +10 -8
- data/spec/dummy/app/assets/stylesheets/{application.css.scss → application.scss} +2 -1
- data/spec/dummy/app/assets/stylesheets/bootstrap-everything.scss +54 -0
- data/spec/dummy/app/models/group.rb +1 -1
- data/spec/dummy/app/views/layouts/application.html.haml +9 -8
- data/spec/dummy/bin/setup +8 -8
- data/spec/dummy/config/application.rb +0 -3
- data/spec/dummy/config/environments/test.rb +4 -2
- data/spec/dummy/db/schema.rb +94 -103
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/factories/attachment.rb +3 -1
- data/spec/factories/message.rb +2 -3
- data/spec/features/boxes_spec.rb +0 -3
- data/spec/helpers/message_train/application_helper_spec.rb +3 -2
- data/spec/helpers/message_train/attachment_helper_spec.rb +4 -0
- data/spec/helpers/message_train/boxes_helper_spec.rb +1 -0
- data/spec/helpers/message_train/collectives_helper_spec.rb +1 -0
- data/spec/helpers/message_train/conversations_helper_spec.rb +3 -2
- data/spec/helpers/message_train/messages_helper_spec.rb +2 -1
- data/spec/models/group_spec.rb +6 -4
- data/spec/models/message_train/box_spec.rb +0 -88
- data/spec/models/message_train/ignore_spec.rb +65 -0
- data/spec/models/message_train/message_spec.rb +6 -5
- data/spec/models/message_train/receipt_spec.rb +6 -8
- data/spec/models/role_spec.rb +2 -2
- data/spec/models/user_spec.rb +29 -101
- data/spec/rails_helper.rb +16 -30
- data/spec/support/feature_behaviors.rb +2 -1
- data/spec/support/shared_connection.rb +5 -0
- data/spec/support/utilities.rb +7 -8
- metadata +145 -120
- data/README.rdoc +0 -175
- data/spec/dummy/app/models/.keep +0 -0
- data/spec/dummy/log/.keep +0 -0
data/spec/dummy/db/test.sqlite3
CHANGED
Binary file
|
@@ -3,7 +3,9 @@ FactoryGirl.define do
|
|
3
3
|
message { MessageTrain::Message.order('RANDOM()').first }
|
4
4
|
attachment do
|
5
5
|
File.open(
|
6
|
-
Dir[
|
6
|
+
Dir[
|
7
|
+
Rails.root.join 'app/assets/files/message_train/attachments/*'
|
8
|
+
].sample
|
7
9
|
)
|
8
10
|
end
|
9
11
|
end
|
data/spec/factories/message.rb
CHANGED
@@ -26,10 +26,9 @@ FactoryGirl.define do
|
|
26
26
|
generate_ignore? { [*1..100].sample >= 80 }
|
27
27
|
end
|
28
28
|
|
29
|
-
# the after(:create) yields two values; the
|
29
|
+
# the after(:create) yields two values; the message instance itself and the
|
30
30
|
# evaluator, which stores all values from the factory, including transient
|
31
|
-
# attributes
|
32
|
-
# to create and we make sure the user is associated properly to the post
|
31
|
+
# attributes
|
33
32
|
after(:create) do |message, evaluator|
|
34
33
|
if evaluator.generate_attachment?
|
35
34
|
FactoryGirl.create(:attachment, message: message)
|
data/spec/features/boxes_spec.rb
CHANGED
@@ -70,9 +70,6 @@ RSpec.feature 'Boxes' do
|
|
70
70
|
before do
|
71
71
|
visit '/box/in'
|
72
72
|
click_link 'Last'
|
73
|
-
find(
|
74
|
-
"#message_train_conversation_#{unread_conversation.id}"
|
75
|
-
).hover
|
76
73
|
within "#message_train_conversation_#{unread_conversation.id}" do
|
77
74
|
accept_confirm do
|
78
75
|
find('.trash-toggle').click
|
@@ -3,10 +3,11 @@ require 'rails_helper'
|
|
3
3
|
describe MessageTrain::ApplicationHelper do
|
4
4
|
include_context 'loaded site'
|
5
5
|
include ControllerMacros
|
6
|
-
helper MessageTrain::BoxesHelper
|
7
|
-
helper MessageTrain::CollectivesHelper
|
8
6
|
|
9
7
|
before do
|
8
|
+
view.extend MessageTrain::BoxesHelper
|
9
|
+
view.extend MessageTrain::CollectivesHelper
|
10
|
+
view.extend BootstrapLeatherHelper
|
10
11
|
login_user first_user
|
11
12
|
end
|
12
13
|
|
@@ -3,6 +3,10 @@ require 'rails_helper'
|
|
3
3
|
describe MessageTrain::AttachmentsHelper do
|
4
4
|
include_context 'loaded site'
|
5
5
|
|
6
|
+
before do
|
7
|
+
view.extend BootstrapLeatherHelper
|
8
|
+
end
|
9
|
+
|
6
10
|
describe '#attachment_icon' do
|
7
11
|
context 'when attachment is an image' do
|
8
12
|
subject { helper.attachment_icon(image_attachment) }
|
@@ -3,9 +3,10 @@ require 'rails_helper'
|
|
3
3
|
describe MessageTrain::ConversationsHelper do
|
4
4
|
include_context 'loaded site'
|
5
5
|
include ControllerMacros
|
6
|
-
helper MessageTrain::BoxesHelper
|
7
6
|
|
8
7
|
before do
|
8
|
+
view.extend MessageTrain::BoxesHelper
|
9
|
+
view.extend BootstrapLeatherHelper
|
9
10
|
login_user first_user
|
10
11
|
assign(:box_user, first_user)
|
11
12
|
end
|
@@ -17,7 +18,7 @@ describe MessageTrain::ConversationsHelper do
|
|
17
18
|
end
|
18
19
|
context 'when there is more than one sender' do
|
19
20
|
subject { helper.conversation_senders(long_conversation) }
|
20
|
-
it { should eq '
|
21
|
+
it { should eq 'Second User and First User' }
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
@@ -3,9 +3,10 @@ require 'rails_helper'
|
|
3
3
|
describe MessageTrain::MessagesHelper do
|
4
4
|
include_context 'loaded site'
|
5
5
|
include ControllerMacros
|
6
|
-
helper MessageTrain::BoxesHelper
|
7
6
|
|
8
7
|
before do
|
8
|
+
view.extend MessageTrain::BoxesHelper
|
9
|
+
view.extend BootstrapLeatherHelper
|
9
10
|
login_user first_user
|
10
11
|
assign(:box_user, first_user)
|
11
12
|
end
|
data/spec/models/group_spec.rb
CHANGED
@@ -11,8 +11,8 @@ RSpec.describe Group do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
describe 'Scopes and Methods from Message Train' do
|
14
|
-
describe '#
|
15
|
-
subject { membered_group.
|
14
|
+
describe '#message_train_slug' do
|
15
|
+
subject { membered_group.message_train_slug }
|
16
16
|
it { should eq 'membered-group' }
|
17
17
|
end
|
18
18
|
|
@@ -68,8 +68,10 @@ RSpec.describe Group do
|
|
68
68
|
|
69
69
|
describe '#conversations' do
|
70
70
|
subject { membered_group.conversations(:in, first_user) }
|
71
|
-
|
72
|
-
|
71
|
+
it { should include membered_group_read_conversation }
|
72
|
+
it { should include membered_group_conversation }
|
73
|
+
it { should_not include membered_group_deleted_conversation }
|
74
|
+
it { should_not include membered_group_draft }
|
73
75
|
end
|
74
76
|
|
75
77
|
describe '#boxes_for_participant' do
|
@@ -89,26 +89,6 @@ module MessageTrain
|
|
89
89
|
it { should eq unread_message }
|
90
90
|
end
|
91
91
|
|
92
|
-
describe '#new_message' do
|
93
|
-
context 'when conversation is set' do
|
94
|
-
let(:expected_recipients) { { 'users' => 'second-user' } }
|
95
|
-
subject do
|
96
|
-
user_in_box.new_message(
|
97
|
-
message_train_conversation_id: unread_conversation.id
|
98
|
-
)
|
99
|
-
end
|
100
|
-
it { should be_a_new MessageTrain::Message }
|
101
|
-
its(:subject) { should eq 'Re: Unread Conversation' }
|
102
|
-
its(:recipients_to_save) { should eq expected_recipients }
|
103
|
-
end
|
104
|
-
context 'when conversation is not set' do
|
105
|
-
subject { user_in_box.new_message }
|
106
|
-
it { should be_a_new MessageTrain::Message }
|
107
|
-
its(:subject) { should eq nil }
|
108
|
-
its(:recipients_to_save) { should be_empty }
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
92
|
describe '#send_message' do
|
113
93
|
describe 'to a singular recipient' do
|
114
94
|
let(:message) do
|
@@ -243,74 +223,6 @@ module MessageTrain
|
|
243
223
|
end
|
244
224
|
end
|
245
225
|
|
246
|
-
describe '#ignore' do
|
247
|
-
context 'when not present' do
|
248
|
-
it 'raises an ActiveRecord::RecordNotFound error' do
|
249
|
-
expect do
|
250
|
-
last_user.box.ignore(99_999_999)
|
251
|
-
end.to raise_error(
|
252
|
-
ActiveRecord::RecordNotFound,
|
253
|
-
/Couldn't find MessageTrain::Conversation with 'id'=99999999/
|
254
|
-
)
|
255
|
-
end
|
256
|
-
end
|
257
|
-
context 'when bad type' do
|
258
|
-
before do
|
259
|
-
last_user.box.ignore(first_user)
|
260
|
-
end
|
261
|
-
subject { last_user.box.errors.all.first[:message] }
|
262
|
-
it { should match(/Cannot ignore User/) }
|
263
|
-
end
|
264
|
-
context 'when not authorized' do
|
265
|
-
before do
|
266
|
-
last_user.box.ignore(read_conversation)
|
267
|
-
end
|
268
|
-
subject { last_user.box.errors.all.first[:message] }
|
269
|
-
it { should match(/Access to Conversation ([0-9]+) denied/) }
|
270
|
-
end
|
271
|
-
context 'when authorized' do
|
272
|
-
before do
|
273
|
-
user_in_box.ignore(read_conversation)
|
274
|
-
end
|
275
|
-
subject { read_conversation.participant_ignored?(first_user) }
|
276
|
-
it { should be true }
|
277
|
-
end
|
278
|
-
end
|
279
|
-
|
280
|
-
describe '#unignore' do
|
281
|
-
context 'when not present' do
|
282
|
-
it 'raises an ActiveRecord::RecordNotFound error' do
|
283
|
-
expect do
|
284
|
-
last_user.box.unignore(99_999_999)
|
285
|
-
end.to raise_error(
|
286
|
-
ActiveRecord::RecordNotFound,
|
287
|
-
/Couldn't find MessageTrain::Conversation with 'id'=99999999/
|
288
|
-
)
|
289
|
-
end
|
290
|
-
end
|
291
|
-
context 'when bad type' do
|
292
|
-
before do
|
293
|
-
last_user.box.unignore(first_user)
|
294
|
-
end
|
295
|
-
subject { last_user.box.errors.all.first[:message] }
|
296
|
-
it { should match(/Cannot unignore User/) }
|
297
|
-
end
|
298
|
-
context 'when not authorized' do
|
299
|
-
before do
|
300
|
-
last_user.box.unignore(read_conversation)
|
301
|
-
end
|
302
|
-
subject { last_user.box.errors.all.first[:message] }
|
303
|
-
it { should match(/Access to Conversation ([0-9]+) denied/) }
|
304
|
-
end
|
305
|
-
context 'when authorized' do
|
306
|
-
before do
|
307
|
-
user_in_box.unignore(ignored_conversation)
|
308
|
-
end
|
309
|
-
subject { ignored_conversation.participant_ignored?(first_user) }
|
310
|
-
it { should be false }
|
311
|
-
end
|
312
|
-
end
|
313
|
-
|
314
226
|
describe '#title' do
|
315
227
|
context 'with division set to :in' do
|
316
228
|
subject { user_in_box.title }
|
@@ -2,6 +2,7 @@ require 'rails_helper'
|
|
2
2
|
|
3
3
|
module MessageTrain
|
4
4
|
RSpec.describe Ignore do
|
5
|
+
let(:user_in_box) { first_user.box(:in) }
|
5
6
|
describe 'Model' do
|
6
7
|
it { should belong_to :conversation }
|
7
8
|
it { should belong_to :participant }
|
@@ -20,6 +21,70 @@ module MessageTrain
|
|
20
21
|
subject { MessageTrain::Ignore.conversations }
|
21
22
|
it { should include ignored_conversation }
|
22
23
|
end
|
24
|
+
describe '.ignore' do
|
25
|
+
context 'when not present' do
|
26
|
+
it 'raises an ActiveRecord::RecordNotFound error' do
|
27
|
+
expect { MessageTrain::Ignore.ignore(99_999_999, last_user.box) }
|
28
|
+
.to raise_error(
|
29
|
+
ActiveRecord::RecordNotFound,
|
30
|
+
/Couldn't find MessageTrain::Conversation with 'id'=99999999/
|
31
|
+
)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
context 'when bad type' do
|
35
|
+
before do
|
36
|
+
MessageTrain::Ignore.ignore(first_user, last_user.box)
|
37
|
+
end
|
38
|
+
subject { last_user.box.errors.all.first[:message] }
|
39
|
+
it { should match(/Cannot ignore User/) }
|
40
|
+
end
|
41
|
+
context 'when not authorized' do
|
42
|
+
before do
|
43
|
+
MessageTrain::Ignore.ignore(read_conversation, last_user.box)
|
44
|
+
end
|
45
|
+
subject { last_user.box.errors.all.first[:message] }
|
46
|
+
it { should match(/Access to Conversation ([0-9]+) denied/) }
|
47
|
+
end
|
48
|
+
context 'when authorized' do
|
49
|
+
before do
|
50
|
+
MessageTrain::Ignore.ignore(read_conversation, user_in_box)
|
51
|
+
end
|
52
|
+
subject { read_conversation.participant_ignored?(first_user) }
|
53
|
+
it { should be true }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
describe '.unignore' do
|
57
|
+
context 'when not present' do
|
58
|
+
it 'raises an ActiveRecord::RecordNotFound error' do
|
59
|
+
expect { MessageTrain::Ignore.unignore(99_999_999, last_user.box) }
|
60
|
+
.to raise_error(
|
61
|
+
ActiveRecord::RecordNotFound,
|
62
|
+
/Couldn't find MessageTrain::Conversation with 'id'=99999999/
|
63
|
+
)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
context 'when bad type' do
|
67
|
+
before do
|
68
|
+
MessageTrain::Ignore.unignore(first_user, last_user.box)
|
69
|
+
end
|
70
|
+
subject { last_user.box.errors.all.first[:message] }
|
71
|
+
it { should match(/Cannot unignore User/) }
|
72
|
+
end
|
73
|
+
context 'when not authorized' do
|
74
|
+
before do
|
75
|
+
MessageTrain::Ignore.unignore(read_conversation, last_user.box)
|
76
|
+
end
|
77
|
+
subject { last_user.box.errors.all.first[:message] }
|
78
|
+
it { should match(/Access to Conversation ([0-9]+) denied/) }
|
79
|
+
end
|
80
|
+
context 'when authorized' do
|
81
|
+
before do
|
82
|
+
MessageTrain::Ignore.unignore(ignored_conversation, user_in_box)
|
83
|
+
end
|
84
|
+
subject { ignored_conversation.participant_ignored?(first_user) }
|
85
|
+
it { should be false }
|
86
|
+
end
|
87
|
+
end
|
23
88
|
end
|
24
89
|
end
|
25
90
|
end
|
@@ -3,6 +3,7 @@ require 'rails_helper'
|
|
3
3
|
module MessageTrain
|
4
4
|
RSpec.describe Message do
|
5
5
|
include_context 'loaded site'
|
6
|
+
let(:user_in_box) { first_user.box(:in) }
|
6
7
|
describe 'Model' do
|
7
8
|
# Relationships
|
8
9
|
it { should belong_to :conversation }
|
@@ -31,7 +32,7 @@ module MessageTrain
|
|
31
32
|
end
|
32
33
|
context 'generates error when recipient_to_save does not exist' do
|
33
34
|
let(:message) do
|
34
|
-
|
35
|
+
user_in_box.send_message(
|
35
36
|
subject: 'Message with missing recipient',
|
36
37
|
recipients_to_save: { 'users' => 'missing-user' },
|
37
38
|
body: 'Foo.'
|
@@ -48,7 +49,7 @@ module MessageTrain
|
|
48
49
|
it { should_not include draft_conversation }
|
49
50
|
end
|
50
51
|
context '.drafts' do
|
51
|
-
subject { MessageTrain::Message.drafts.
|
52
|
+
subject { MessageTrain::Message.drafts.last.conversation }
|
52
53
|
it { should eq draft_conversation }
|
53
54
|
end
|
54
55
|
context '.by' do
|
@@ -57,7 +58,7 @@ module MessageTrain
|
|
57
58
|
it { should include draft_message }
|
58
59
|
end
|
59
60
|
context '.drafts_by' do
|
60
|
-
subject { MessageTrain::Message.drafts_by(first_user).
|
61
|
+
subject { MessageTrain::Message.drafts_by(first_user).last }
|
61
62
|
it { should eq draft_message }
|
62
63
|
end
|
63
64
|
context '.find_by_subject' do
|
@@ -72,11 +73,11 @@ module MessageTrain
|
|
72
73
|
end
|
73
74
|
end
|
74
75
|
context '.with_receipts_by' do
|
75
|
-
subject { MessageTrain::Message.with_receipts_by(first_user).
|
76
|
+
subject { MessageTrain::Message.with_receipts_by(first_user).first }
|
76
77
|
it { should eq sent_message }
|
77
78
|
end
|
78
79
|
context '.with_receipts_to' do
|
79
|
-
subject { MessageTrain::Message.with_receipts_to(first_user).
|
80
|
+
subject { MessageTrain::Message.with_receipts_to(first_user).first }
|
80
81
|
it { should eq unread_message }
|
81
82
|
end
|
82
83
|
context '.with_trashed_to and #is_trashed_to?' do
|
@@ -43,10 +43,9 @@ module MessageTrain
|
|
43
43
|
end
|
44
44
|
describe '.trashed_to' do
|
45
45
|
subject do
|
46
|
-
MessageTrain::Receipt.trashed_to(first_user)
|
47
|
-
.first.message.conversation
|
46
|
+
MessageTrain::Receipt.trashed_to(first_user).conversations
|
48
47
|
end
|
49
|
-
|
48
|
+
it { should include membered_group_trashed_conversation }
|
50
49
|
end
|
51
50
|
describe '.untrashed_to' do
|
52
51
|
subject do
|
@@ -56,16 +55,15 @@ module MessageTrain
|
|
56
55
|
end
|
57
56
|
describe '.read_to' do
|
58
57
|
subject do
|
59
|
-
MessageTrain::Receipt.read_to(first_user).
|
58
|
+
MessageTrain::Receipt.read_to(first_user).conversations
|
60
59
|
end
|
61
|
-
|
60
|
+
it { should include membered_group_read_conversation }
|
62
61
|
end
|
63
62
|
describe '.deleted_to' do
|
64
63
|
subject do
|
65
|
-
MessageTrain::Receipt.deleted_to(first_user)
|
66
|
-
.first.message.conversation
|
64
|
+
MessageTrain::Receipt.deleted_to(first_user).conversations
|
67
65
|
end
|
68
|
-
|
66
|
+
it { should include membered_group_deleted_conversation }
|
69
67
|
end
|
70
68
|
describe '.undeleted_to' do
|
71
69
|
subject { MessageTrain::Receipt.undeleted_to(first_user).first }
|
data/spec/models/role_spec.rb
CHANGED
@@ -9,8 +9,8 @@ RSpec.describe Role do
|
|
9
9
|
describe 'Scopes and Methods from Message Train' do
|
10
10
|
include_context 'loaded site'
|
11
11
|
|
12
|
-
describe '#
|
13
|
-
subject { superadmin_role.
|
12
|
+
describe '#message_train_slug' do
|
13
|
+
subject { superadmin_role.message_train_slug }
|
14
14
|
it { should eq 'superadmin' }
|
15
15
|
end
|
16
16
|
|
data/spec/models/user_spec.rb
CHANGED
@@ -14,25 +14,11 @@ RSpec.describe User do
|
|
14
14
|
|
15
15
|
describe 'Scopes and Methods' do
|
16
16
|
describe '#box' do
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
its(:participant) { should be first_user }
|
23
|
-
end
|
24
|
-
describe 'with invalid number of arguments' do
|
25
|
-
it 'should raise' do
|
26
|
-
expect do
|
27
|
-
first_user.box(:in, first_user, 'extra argument')
|
28
|
-
end.to(
|
29
|
-
raise_error(
|
30
|
-
RuntimeError,
|
31
|
-
'Wrong number of arguments for User (expected 0..2, got 3)'
|
32
|
-
)
|
33
|
-
)
|
34
|
-
end
|
35
|
-
end
|
17
|
+
subject { first_user.box }
|
18
|
+
it { should be_a MessageTrain::Box }
|
19
|
+
its(:division) { should be :in }
|
20
|
+
its(:parent) { should be first_user }
|
21
|
+
its(:participant) { should be first_user }
|
36
22
|
end
|
37
23
|
|
38
24
|
describe '#collective_boxes' do
|
@@ -50,18 +36,6 @@ RSpec.describe User do
|
|
50
36
|
it { should include membered_group }
|
51
37
|
it { should include first_group }
|
52
38
|
end
|
53
|
-
describe 'with 3 arguments' do
|
54
|
-
it 'should raise' do
|
55
|
-
expect do
|
56
|
-
first_user.collective_boxes(:in, first_user, 'extra argument')
|
57
|
-
end.to(
|
58
|
-
raise_error(
|
59
|
-
RuntimeError,
|
60
|
-
'Wrong number of arguments for User (expected 0..2, got 3)'
|
61
|
-
)
|
62
|
-
)
|
63
|
-
end
|
64
|
-
end
|
65
39
|
end
|
66
40
|
|
67
41
|
describe '#all_boxes' do
|
@@ -79,18 +53,6 @@ RSpec.describe User do
|
|
79
53
|
its(:count) { should be 6 }
|
80
54
|
end
|
81
55
|
end
|
82
|
-
describe 'with 2 arguments' do
|
83
|
-
it 'should raise' do
|
84
|
-
expect do
|
85
|
-
first_user.all_boxes(first_user, 'extra argument')
|
86
|
-
end.to(
|
87
|
-
raise_error(
|
88
|
-
RuntimeError,
|
89
|
-
'Wrong number of arguments for User (expected 0..1, got 2)'
|
90
|
-
)
|
91
|
-
)
|
92
|
-
end
|
93
|
-
end
|
94
56
|
end
|
95
57
|
|
96
58
|
describe '#conversations' do
|
@@ -120,18 +82,6 @@ RSpec.describe User do
|
|
120
82
|
end
|
121
83
|
it { should be true }
|
122
84
|
end
|
123
|
-
describe 'with 23 arguments' do
|
124
|
-
it 'should raise' do
|
125
|
-
expect do
|
126
|
-
first_user.conversations(:in, first_user, 'extra argument')
|
127
|
-
end.to(
|
128
|
-
raise_error(
|
129
|
-
RuntimeError,
|
130
|
-
'Wrong number of arguments for User (expected 0..2, got 3)'
|
131
|
-
)
|
132
|
-
)
|
133
|
-
end
|
134
|
-
end
|
135
85
|
context 'with impossible division' do
|
136
86
|
subject { first_user.conversations(:impossible).nil? }
|
137
87
|
it { should be true }
|
@@ -139,42 +89,30 @@ RSpec.describe User do
|
|
139
89
|
end
|
140
90
|
|
141
91
|
describe '#all_conversations' do
|
92
|
+
let(:required_conversations) do
|
93
|
+
[
|
94
|
+
sent_conversation,
|
95
|
+
unread_conversation,
|
96
|
+
read_conversation,
|
97
|
+
ignored_conversation,
|
98
|
+
trashed_conversation,
|
99
|
+
deleted_conversation
|
100
|
+
]
|
101
|
+
end
|
142
102
|
describe 'with no arguments' do
|
143
103
|
context 'returns all conversations with any receipt' do
|
144
104
|
subject { first_user.all_conversations }
|
145
|
-
it { should include
|
146
|
-
it { should include unread_conversation }
|
147
|
-
it { should include read_conversation }
|
148
|
-
it { should include ignored_conversation }
|
149
|
-
it { should include trashed_conversation }
|
150
|
-
it { should include deleted_conversation }
|
105
|
+
it { should include(*required_conversations) }
|
151
106
|
it { should_not include someone_elses_conversation }
|
152
107
|
end
|
153
108
|
end
|
154
109
|
describe 'with 1 argument' do
|
155
110
|
context 'returns all conversations with any receipt' do
|
156
111
|
subject { first_user.all_conversations(first_user) }
|
157
|
-
it { should include
|
158
|
-
it { should include unread_conversation }
|
159
|
-
it { should include read_conversation }
|
160
|
-
it { should include ignored_conversation }
|
161
|
-
it { should include trashed_conversation }
|
162
|
-
it { should include deleted_conversation }
|
112
|
+
it { should include(*required_conversations) }
|
163
113
|
it { should_not include someone_elses_conversation }
|
164
114
|
end
|
165
115
|
end
|
166
|
-
describe 'with 2 arguments' do
|
167
|
-
it 'should raise' do
|
168
|
-
expect do
|
169
|
-
first_user.all_conversations(first_user, 'extra argument')
|
170
|
-
end.to(
|
171
|
-
raise_error(
|
172
|
-
RuntimeError,
|
173
|
-
'Wrong number of arguments for User (expected 0..1, got 2)'
|
174
|
-
)
|
175
|
-
)
|
176
|
-
end
|
177
|
-
end
|
178
116
|
context 'when empty' do
|
179
117
|
subject { silent_user.all_conversations }
|
180
118
|
it { should eq [] }
|
@@ -182,40 +120,30 @@ RSpec.describe User do
|
|
182
120
|
end
|
183
121
|
|
184
122
|
describe '#all_messages' do
|
123
|
+
let(:required_messages) do
|
124
|
+
[
|
125
|
+
sent_message,
|
126
|
+
unread_message,
|
127
|
+
read_message,
|
128
|
+
ignored_message,
|
129
|
+
trashed_message,
|
130
|
+
deleted_message
|
131
|
+
]
|
132
|
+
end
|
185
133
|
describe 'with no arguments' do
|
186
134
|
context 'returns all messages with any receipt' do
|
187
135
|
subject { first_user.all_messages }
|
188
|
-
it { should include
|
189
|
-
it { should include unread_message }
|
190
|
-
it { should include read_message }
|
191
|
-
it { should include ignored_message }
|
192
|
-
it { should include trashed_message }
|
193
|
-
it { should include deleted_message }
|
136
|
+
it { should include(*required_messages) }
|
194
137
|
it { should_not include someone_elses_message }
|
195
138
|
end
|
196
139
|
end
|
197
140
|
describe 'with 1 argument' do
|
198
141
|
context 'returns all messages with any receipt' do
|
199
142
|
subject { first_user.all_messages(first_user) }
|
200
|
-
it { should include
|
201
|
-
it { should include unread_message }
|
202
|
-
it { should include read_message }
|
203
|
-
it { should include ignored_message }
|
204
|
-
it { should include trashed_message }
|
205
|
-
it { should include deleted_message }
|
143
|
+
it { should include(*required_messages) }
|
206
144
|
it { should_not include someone_elses_message }
|
207
145
|
end
|
208
146
|
end
|
209
|
-
describe 'with 2 arguments' do
|
210
|
-
it 'should raise' do
|
211
|
-
expect { first_user.all_messages(first_user, 'extra argument') }.to(
|
212
|
-
raise_error(
|
213
|
-
RuntimeError,
|
214
|
-
'Wrong number of arguments for User (expected 0..1, got 2)'
|
215
|
-
)
|
216
|
-
)
|
217
|
-
end
|
218
|
-
end
|
219
147
|
context 'when empty' do
|
220
148
|
subject { silent_user.all_messages }
|
221
149
|
it { should eq [] }
|