diff options
| -rw-r--r-- | app/models/discussion.rb | 1 | ||||
| -rw-r--r-- | app/models/message.rb | 9 | ||||
| -rw-r--r-- | spec/inboxes/message_spec.rb | 13 | 
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 | 
