has_messages_huacnlee 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,140 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ class UserByDefaultTest < ActiveSupport::TestCase
4
+ def setup
5
+ @user = create_user
6
+ end
7
+
8
+ def test_should_not_have_any_messages
9
+ assert @user.messages.empty?
10
+ end
11
+
12
+ def test_should_not_have_any_unsent_messages
13
+ assert @user.unsent_messages.empty?
14
+ end
15
+
16
+ def test_should_not_have_any_sent_messages
17
+ assert @user.sent_messages.empty?
18
+ end
19
+
20
+ def test_should_not_have_any_received_messages
21
+ assert @user.received_messages.empty?
22
+ end
23
+ end
24
+
25
+ class UserTest < ActiveSupport::TestCase
26
+ def setup
27
+ @user = create_user
28
+ end
29
+
30
+ def test_should_be_able_to_create_new_messages
31
+ message = @user.messages.build
32
+ assert_instance_of Message, message
33
+ assert_equal @user, message.sender
34
+ end
35
+
36
+ def test_should_be_able_to_send_new_messages
37
+ message = @user.messages.build
38
+ message.to create_user(:login => 'John')
39
+ assert message.deliver
40
+ end
41
+ end
42
+
43
+ class UserWithUnsentMessages < ActiveSupport::TestCase
44
+ def setup
45
+ @user = create_user
46
+ @sent_message = create_message(:sender => @user, :to => create_user(:login => 'you'))
47
+ @sent_message.deliver
48
+ @first_draft = create_message(:sender => @user)
49
+ @second_draft = create_message(:sender => @user)
50
+ end
51
+
52
+ def test_should_have_unsent_messages
53
+ assert_equal [@second_draft, @first_draft], @user.unsent_messages
54
+ end
55
+
56
+ def test_should_include_unsent_messages_in_messages
57
+ assert_equal [@second_draft, @first_draft, @sent_message], @user.messages
58
+ end
59
+ end
60
+
61
+ class UserWithSentMessages < ActiveSupport::TestCase
62
+ def setup
63
+ @user = create_user
64
+ @to = create_user(:login => 'you')
65
+ @draft = create_message(:sender => @user)
66
+ @draft.save!
67
+
68
+ @first_sent_message = create_message(:sender => @user, :to => @to)
69
+ @first_sent_message.deliver
70
+
71
+ @second_sent_message = create_message(:sender => @user, :to => @to)
72
+ @second_sent_message.deliver
73
+ end
74
+
75
+ def test_should_have_sent_messages
76
+ assert_equal [@second_sent_message, @first_sent_message], @user.sent_messages
77
+ end
78
+
79
+ def test_should_include_sent_messages_in_messages
80
+ assert_equal [@second_sent_message, @first_sent_message, @draft], @user.messages
81
+ end
82
+ end
83
+
84
+ class UserWithReceivedMessages < ActiveSupport::TestCase
85
+ def setup
86
+ @sender = create_user
87
+ @user = create_user(:login => 'me')
88
+
89
+ @unsent_message = create_message(:sender => @sender, :to => @user)
90
+
91
+ @first_sent_message = create_message(:sender => @sender, :to => @user)
92
+ @first_sent_message.deliver
93
+
94
+ @second_sent_message = create_message(:sender => @sender, :to => @user)
95
+ @second_sent_message.deliver
96
+ end
97
+
98
+ def test_should_have_received_messages
99
+ assert_equal [@second_sent_message, @first_sent_message], @user.received_messages.map(&:message)
100
+ end
101
+ end
102
+
103
+ class UserWithHiddenMessagesTest < ActiveSupport::TestCase
104
+ def setup
105
+ @user = create_user
106
+ @friend = create_user(:login => 'you')
107
+
108
+ hidden_unsent_message = create_message(:sender => @user)
109
+ hidden_unsent_message.hide
110
+ @unsent_message = create_message(:sender => @user)
111
+
112
+ hidden_sent_message = create_message(:sender => @user, :to => @friend)
113
+ hidden_sent_message.deliver
114
+ hidden_sent_message.hide
115
+ @sent_message = create_message(:sender => @user, :to => @friend)
116
+ @sent_message.deliver
117
+
118
+ hidden_received_message = create_message(:sender => @friend, :to => @user)
119
+ hidden_received_message.deliver
120
+ hidden_received_message.recipients.first.hide
121
+ @received_message = create_message(:sender => @friend, :to => @user)
122
+ @received_message.deliver
123
+ end
124
+
125
+ def test_should_not_include_hidden_messages_in_messages
126
+ assert_equal [@sent_message, @unsent_message], @user.messages
127
+ end
128
+
129
+ def test_should_not_include_hidden_messages_in_unsent_messages
130
+ assert_equal [@unsent_message], @user.unsent_messages
131
+ end
132
+
133
+ def test_should_not_include_hidden_messages_in_sent_messages
134
+ assert_equal [@sent_message], @user.sent_messages
135
+ end
136
+
137
+ def test_should_not_include_hidden_messages_in_received_messages
138
+ assert_equal [@received_message], @user.received_messages.map(&:message)
139
+ end
140
+ end
@@ -0,0 +1,13 @@
1
+ # Load the plugin testing framework
2
+ $:.unshift("#{File.dirname(__FILE__)}/../../plugin_test_helper/lib")
3
+ require 'rubygems'
4
+ require 'plugin_test_helper'
5
+
6
+ # Run the migrations
7
+ ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate")
8
+
9
+ # Mixin the factory helper
10
+ require File.expand_path("#{File.dirname(__FILE__)}/factory")
11
+ Test::Unit::TestCase.class_eval do
12
+ include Factory
13
+ end
@@ -0,0 +1,449 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
+
3
+ class MessageRecipientByDefaultTest < ActiveSupport::TestCase
4
+ def setup
5
+ @recipient = MessageRecipient.new
6
+ end
7
+
8
+ def test_should_not_have_a_message
9
+ assert_nil @recipient.message_id
10
+ end
11
+
12
+ def test_should_not_have_a_receiver_id
13
+ assert_nil @recipient.receiver_id
14
+ end
15
+
16
+ def test_should_not_have_a_receiver_type
17
+ assert @recipient.receiver_type.blank?
18
+ end
19
+
20
+ def test_should_not_have_a_kind
21
+ assert @recipient.kind.blank?
22
+ end
23
+
24
+ def test_should_not_have_a_position
25
+ assert_nil @recipient.position
26
+ end
27
+
28
+ def test_should_be_in_the_unread_state
29
+ assert_equal 'unread', @recipient.state
30
+ end
31
+
32
+ def test_should_not_be_hidden
33
+ assert_nil @recipient.hidden_at
34
+ assert !@recipient.hidden?
35
+ end
36
+ end
37
+
38
+ class MesageRecipientTest < ActiveSupport::TestCase
39
+ def test_should_be_valid_with_a_set_of_valid_attributes
40
+ recipient = new_message_recipient
41
+ assert recipient.valid?
42
+ end
43
+
44
+ def test_should_require_a_message
45
+ recipient = new_message_recipient(:message => nil)
46
+ assert !recipient.valid?
47
+ assert recipient.errors.invalid?(:message_id)
48
+ end
49
+
50
+ def test_should_require_a_kind
51
+ recipient = new_message_recipient(:kind => nil)
52
+ assert !recipient.valid?
53
+ assert recipient.errors.invalid?(:kind)
54
+ end
55
+
56
+ def test_should_require_a_state
57
+ recipient = new_message_recipient(:state => nil)
58
+ assert !recipient.valid?
59
+ assert recipient.errors.invalid?(:state)
60
+ end
61
+
62
+ def test_should_require_a_receiver_id
63
+ recipient = new_message_recipient(:receiver => nil)
64
+ assert !recipient.valid?
65
+ assert recipient.errors.invalid?(:receiver_id)
66
+ end
67
+
68
+ def test_should_require_a_receiver_type
69
+ recipient = new_message_recipient(:receiver => nil)
70
+ assert !recipient.valid?
71
+ assert recipient.errors.invalid?(:receiver_type)
72
+ end
73
+
74
+ def test_should_not_require_a_position
75
+ recipient = new_message_recipient(:position => nil)
76
+ assert recipient.valid?
77
+ end
78
+
79
+ def test_should_protect_attributes_from_mass_assignment
80
+ recipient = MessageRecipient.new(
81
+ :id => 1,
82
+ :message_id => 1,
83
+ :receiver_id => 1,
84
+ :receiver_type => 'User',
85
+ :kind => 'bcc',
86
+ :position => 10,
87
+ :state => 'read',
88
+ :hidden_at => Time.now
89
+ )
90
+
91
+ assert_nil recipient.id
92
+ assert_equal 1, recipient.message_id
93
+ assert_equal 1, recipient.receiver_id
94
+ assert_equal 'User', recipient.receiver_type
95
+ assert_equal 'bcc', recipient.kind
96
+ assert_nil recipient.position
97
+ assert_equal 'unread', recipient.state
98
+ assert_nil recipient.hidden_at
99
+ end
100
+ end
101
+
102
+ class MessageRecipientAfterBeingCreatedTest < ActiveSupport::TestCase
103
+ def setup
104
+ @admin = create_user(:login => 'admin')
105
+ @erich = create_user(:login => 'Erich')
106
+ @richard = create_user(:login => 'Richard')
107
+ @ralph = create_user(:login => 'Ralph')
108
+
109
+ message = create_message(
110
+ :subject => 'Hello',
111
+ :body => 'How are you?',
112
+ :sender => @admin,
113
+ :cc => @richard,
114
+ :bcc => @ralph
115
+ )
116
+ @recipient = create_message_recipient(
117
+ :message => message,
118
+ :receiver => @erich,
119
+ :kind => 'to'
120
+ )
121
+ end
122
+
123
+ def test_should_not_be_hidden
124
+ assert !@recipient.hidden?
125
+ end
126
+
127
+ def test_should_delegate_sender_to_message
128
+ assert_equal @admin, @recipient.sender
129
+ end
130
+
131
+ def test_should_delegate_subject_to_message
132
+ assert_equal 'Hello', @recipient.subject
133
+ end
134
+
135
+ def test_should_delegate_body_to_message
136
+ assert_equal 'How are you?', @recipient.body
137
+ end
138
+
139
+ def test_should_delegate_recipients_to_message
140
+ assert_equal [@erich, @richard, @ralph], @recipient.recipients.map(&:receiver)
141
+ end
142
+
143
+ def test_should_delegate_to_receivers_to_message
144
+ assert_equal [@erich], @recipient.to
145
+ end
146
+
147
+ def test_should_delegate_cc_receivers_to_message
148
+ assert_equal [@richard], @recipient.cc
149
+ end
150
+
151
+ def test_should_delegate_bcc_receivers_to_message
152
+ assert_equal [@ralph], @recipient.bcc
153
+ end
154
+
155
+ def test_should_delegate_created_at_to_message
156
+ assert_not_nil @recipient.created_at
157
+ end
158
+ end
159
+
160
+ class MessageRecipientOfMultipleTest < ActiveSupport::TestCase
161
+ def setup
162
+ @erich = create_user(:login => 'Erich')
163
+ @richard = create_user(:login => 'Richard')
164
+ @ralph = create_user(:login => 'Ralph')
165
+
166
+ message = create_message(:to => [@erich, @richard])
167
+ @recipient = create_message_recipient(
168
+ :message => message,
169
+ :receiver => @ralph,
170
+ :kind => 'to'
171
+ )
172
+ end
173
+
174
+ def test_should_use_position_based_on_position_of_last_recipient
175
+ assert_equal 3, @recipient.position
176
+ end
177
+ end
178
+
179
+ class MessageRecipientUnreadWithUnsentMessageTest < ActiveSupport::TestCase
180
+ def setup
181
+ @recipient = create_message_recipient
182
+ end
183
+
184
+ def test_should_be_in_the_unread_state
185
+ assert_equal 'unread', @recipient.state
186
+ end
187
+
188
+ def test_should_not_be_able_to_view
189
+ assert !@recipient.view
190
+ end
191
+ end
192
+
193
+ class MessageRecipientUnreadWithSentMessageTest < ActiveSupport::TestCase
194
+ def setup
195
+ @recipient = create_message_recipient
196
+ @recipient.message.deliver
197
+ end
198
+
199
+ def test_should_be_in_the_unread_state
200
+ assert_equal 'unread', @recipient.state
201
+ end
202
+
203
+ def test_should_be_able_to_view
204
+ assert @recipient.view
205
+ end
206
+ end
207
+
208
+ class MessageRecipientReadTest < ActiveSupport::TestCase
209
+ def setup
210
+ @recipient = create_message_recipient
211
+ @recipient.message.deliver
212
+ @recipient.view
213
+ end
214
+
215
+ def test_should_be_in_the_read_state
216
+ assert_equal 'read', @recipient.state
217
+ end
218
+
219
+ def test_should_not_be_able_to_view
220
+ assert !@recipient.view
221
+ end
222
+ end
223
+
224
+ class MessageRecipientHiddenTest < ActiveSupport::TestCase
225
+ def setup
226
+ @recipient = create_message_recipient
227
+ @recipient.hide
228
+ end
229
+
230
+ def test_should_record_when_it_was_hidden
231
+ assert_not_nil @recipient.hidden_at
232
+ end
233
+
234
+ def test_should_be_hidden
235
+ assert @recipient.hidden?
236
+ end
237
+
238
+ def test_should_not_be_visible
239
+ assert !@recipient.visible?
240
+ end
241
+ end
242
+
243
+ class MessageRecipientUnhiddenTest < ActiveSupport::TestCase
244
+ def setup
245
+ @recipient = create_message_recipient
246
+ @recipient.hide
247
+ @recipient.unhide
248
+ end
249
+
250
+ def test_should_not_have_the_recorded_value_when_it_was_hidden
251
+ assert_nil @recipient.hidden_at
252
+ end
253
+
254
+ def test_should_not_be_hidden
255
+ assert !@recipient.hidden?
256
+ end
257
+
258
+ def test_should_be_visible
259
+ assert @recipient.visible?
260
+ end
261
+ end
262
+
263
+ class MessageRecipientForwardedTest < ActiveSupport::TestCase
264
+ def setup
265
+ @erich = create_user(:login => 'Erich')
266
+ original_message = create_message(
267
+ :subject => 'Hello',
268
+ :body => 'How are you?',
269
+ :cc => create_user(:login => 'Richard'),
270
+ :bcc => create_user(:login => 'Ralph')
271
+ )
272
+ @recipient = create_message_recipient(
273
+ :message => original_message,
274
+ :receiver => @erich
275
+ )
276
+ @message = @recipient.forward
277
+ end
278
+
279
+ def test_should_be_in_unsent_state
280
+ assert_equal 'unsent', @message.state
281
+ end
282
+
283
+ def test_should_not_be_hidden
284
+ assert !@message.hidden?
285
+ end
286
+
287
+ def test_should_have_original_subject
288
+ assert_equal 'Hello', @message.subject
289
+ end
290
+
291
+ def test_should_have_original_body
292
+ assert_equal 'How are you?', @message.body
293
+ end
294
+
295
+ def test_should_use_receiver_as_the_sender
296
+ assert_equal @erich, @message.sender
297
+ end
298
+
299
+ def test_should_not_include_to_recipients
300
+ assert @message.to.empty?
301
+ end
302
+
303
+ def test_should_not_include_cc_recipients
304
+ assert @message.cc.empty?
305
+ end
306
+
307
+ def test_should_not_include_bcc_recipients
308
+ assert @message.bcc.empty?
309
+ end
310
+ end
311
+
312
+ class MessageRecipientRepliedTest < ActiveSupport::TestCase
313
+ def setup
314
+ @erich = create_user(:login => 'Erich')
315
+ @john = create_user(:login => 'John')
316
+ original_message = create_message(
317
+ :subject => 'Hello',
318
+ :body => 'How are you?',
319
+ :to => @john,
320
+ :cc => create_user(:login => 'Richard'),
321
+ :bcc => create_user(:login => 'Ralph')
322
+ )
323
+ @recipient = create_message_recipient(
324
+ :message => original_message,
325
+ :receiver => @erich
326
+ )
327
+ @message = @recipient.reply
328
+ end
329
+
330
+ def test_should_be_in_unsent_state
331
+ assert_equal 'unsent', @message.state
332
+ end
333
+
334
+ def test_should_not_be_hidden
335
+ assert !@message.hidden?
336
+ end
337
+
338
+ def test_should_have_original_subject
339
+ assert_equal 'Hello', @message.subject
340
+ end
341
+
342
+ def test_should_have_original_body
343
+ assert_equal 'How are you?', @message.body
344
+ end
345
+
346
+ def test_should_use_receiver_as_the_sender
347
+ assert_equal @erich, @message.sender
348
+ end
349
+
350
+ def test_should_include_to_recipients
351
+ assert [@erich, @john], @message.to
352
+ end
353
+
354
+ def test_should_not_include_cc_recipients
355
+ assert @message.cc.empty?
356
+ end
357
+
358
+ def test_should_not_include_bcc_recipients
359
+ assert @message.bcc.empty?
360
+ end
361
+ end
362
+
363
+ class MessageRecipientRepliedToAllTest < ActiveSupport::TestCase
364
+ def setup
365
+ @erich = create_user(:login => 'Erich')
366
+ @john = create_user(:login => 'John')
367
+ @richard = create_user(:login => 'Richard')
368
+ @ralph = create_user(:login => 'Ralph')
369
+ original_message = create_message(
370
+ :subject => 'Hello',
371
+ :body => 'How are you?',
372
+ :to => @john,
373
+ :cc => @richard,
374
+ :bcc => @ralph
375
+ )
376
+ @recipient = create_message_recipient(
377
+ :message => original_message,
378
+ :receiver => @erich
379
+ )
380
+ @message = @recipient.reply_to_all
381
+ end
382
+
383
+ def test_should_be_in_unsent_state
384
+ assert_equal 'unsent', @message.state
385
+ end
386
+
387
+ def test_should_not_be_hidden
388
+ assert !@message.hidden?
389
+ end
390
+
391
+ def test_should_have_original_subject
392
+ assert_equal 'Hello', @message.subject
393
+ end
394
+
395
+ def test_should_have_original_body
396
+ assert_equal 'How are you?', @message.body
397
+ end
398
+
399
+ def test_should_use_receiver_as_the_sender
400
+ assert_equal @erich, @message.sender
401
+ end
402
+
403
+ def test_should_include_to_recipients
404
+ assert [@erich, @john], @message.to
405
+ end
406
+
407
+ def test_should_include_cc_recipients
408
+ assert_equal [@richard], @message.cc
409
+ end
410
+
411
+ def test_should_include_bcc_recipients
412
+ assert_equal [@ralph], @message.bcc
413
+ end
414
+ end
415
+
416
+ class MessageRecipientAfterBeingDestroyedTest < ActiveSupport::TestCase
417
+ def setup
418
+ message = create_message
419
+ @first_recipient = create_message_recipient(
420
+ :message => message,
421
+ :receiver => create_user(:login => 'Erich'),
422
+ :kind => 'to'
423
+ )
424
+ @last_recipient = create_message_recipient(
425
+ :message => message,
426
+ :receiver => create_user(:login => 'Richard'),
427
+ :kind => 'to'
428
+ )
429
+
430
+ assert @first_recipient.destroy
431
+ @last_recipient.reload
432
+ end
433
+
434
+ def test_should_reorder_positions_of_all_other_recipients
435
+ assert_equal 1, @last_recipient.position
436
+ end
437
+ end
438
+
439
+ class MessageRecipientAsAClassTest < ActiveSupport::TestCase
440
+ def setup
441
+ message = create_message
442
+ @hidden_recipient = create_message_recipient(:message => message, :receiver => create_user(:login => 'erich'), :hidden_at => Time.now)
443
+ @visible_recipient = create_message_recipient(:message => message, :receiver => create_user(:login => 'richard'))
444
+ end
445
+
446
+ def test_should_include_only_visible_messages_in_visible_scope
447
+ assert_equal [@visible_recipient], MessageRecipient.visible
448
+ end
449
+ end