message_train 0.6.17 → 0.7.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.
- 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 [] }
|