diff --git a/app/models/forum_topic.rb b/app/models/forum_topic.rb index 4a4acf150..db0451fca 100644 --- a/app/models/forum_topic.rb +++ b/app/models/forum_topic.rb @@ -144,6 +144,8 @@ class ForumTopic < ActiveRecord::Base topic = query.first if topic CurrentUser.user.update_attribute(:last_forum_read_at, topic.updated_at) + else + CurrentUser.user.update_attribute(:last_forum_read_at, Time.now) end end diff --git a/test/unit/forum_topic_test.rb b/test/unit/forum_topic_test.rb index d549f1928..ea7a278da 100644 --- a/test/unit/forum_topic_test.rb +++ b/test/unit/forum_topic_test.rb @@ -38,6 +38,20 @@ class ForumTopicTest < ActiveSupport::TestCase @user.reload assert_equal(@topics[1].updated_at.to_i, @user.last_forum_read_at.to_i) end + + context "when all topics have been read" do + setup do + @read_forum_topic_ids = ForumTopic.all.map(&:id) + @timestamp = Time.now + Time.stubs(:now).returns(@timestamp) + end + + should "return the current time" do + @topic.update_last_forum_read_at(@read_forum_topic_ids) + @user.reload + assert_equal(@timestamp.to_i, @user.last_forum_read_at.to_i) + end + end end context "when the user's last_forum_read_at is 2 days from now" do