diff options
| author | Kir | 2012-02-09 20:27:11 +0200 |
|---|---|---|
| committer | Kir | 2012-02-09 20:27:11 +0200 |
| commit | 90d8da2777e6c2a93a03fa3c16833c2156c46553 (patch) | |
| tree | 1600e3564f1e187647b138ed258d9457e0e0991a | |
| parent | eff8cfa7d24b83be0d541f956e2173211679bd21 (diff) | |
| download | inboxes-90d8da2777e6c2a93a03fa3c16833c2156c46553.tar.bz2 | |
Adding unread_for? to message with tests
| -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 |
