aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/models/discussion.rb1
-rw-r--r--app/models/message.rb9
-rw-r--r--spec/inboxes/message_spec.rb13
3 files changed, 17 insertions, 6 deletions
diff --git a/app/models/discussion.rb b/app/models/discussion.rb
index c52dac0..14395b9 100644
--- a/app/models/discussion.rb
+++ b/app/models/discussion.rb
@@ -92,7 +92,6 @@ class Discussion < ActiveRecord::Base
def mark_as_read_for(user)
speaker = Speaker.find_or_create_by_user_id_and_discussion_id(user.id, self.id)
- # flag.update_attributes(:updat => Time.zone.now)
speaker.touch
end
diff --git a/app/models/message.rb b/app/models/message.rb
index 436775b..b57cca8 100644
--- a/app/models/message.rb
+++ b/app/models/message.rb
@@ -12,6 +12,15 @@ class Message < ActiveRecord::Base
def visible_for? user
self.created_at.to_i >= self.discussion.user_invited_at(user).to_i
end
+
+ def unread_for? user
+ speaker = self.discussion.find_speaker_by_user(user)
+ if speaker
+ self.created_at.to_i >= speaker.updated_at.to_i
+ else
+ true
+ end
+ end
private
diff --git a/spec/inboxes/message_spec.rb b/spec/inboxes/message_spec.rb
index c498b04..0613738 100644
--- a/spec/inboxes/message_spec.rb
+++ b/spec/inboxes/message_spec.rb
@@ -6,9 +6,7 @@ describe Message do
old_user = Factory(:user)
discussion.add_speaker(old_user)
message = Message.create!(:discussion => discussion, :user => old_user, :body => Factory.next(:string))
-
sleep 2
-
new_user = Factory(:user)
discussion.add_speaker(new_user)
message.visible_for?(new_user).should be_false
@@ -19,9 +17,14 @@ describe Message do
user = Factory(:user)
discussion.add_speaker(user)
message = Message.create!(:discussion => discussion, :user => user, :body => Factory.next(:string))
-
- sleep 5
-
+ sleep 2
message.visible_for?(user).should be_true
end
+
+ it "new model should be unread for user" do
+ discussion = Factory(:discussion)
+ message = Message.create!(:user => discussion.users.first, :body => Factory.next(:string), :discussion => discussion)
+ sleep 2
+ message.unread_for?(discussion.users.last).should be true
+ end
end