From 4f6a48d77331d66cc00731cef68fe03b3eb8ada6 Mon Sep 17 00:00:00 2001 From: r888888888 Date: Wed, 19 Mar 2014 13:08:26 -0700 Subject: [PATCH] #1469: add condition for when all forum topics are read --- app/models/forum_topic.rb | 2 ++ test/unit/forum_topic_test.rb | 14 ++++++++++++++ 2 files changed, 16 insertions(+) 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