Merge pull request #3047 from evazion/fix-forum-topic-visits

Don't record forum topic visits for API requests.
This commit is contained in:
Albert Yi
2017-05-15 16:10:26 -07:00
committed by GitHub
3 changed files with 13 additions and 3 deletions

View File

@@ -39,7 +39,7 @@ class ForumTopicsController < ApplicationController
end
def show
unless CurrentUser.user.is_anonymous?
if request.format == Mime::HTML
@forum_topic.mark_as_read!(CurrentUser.user)
end
@forum_posts = ForumPost.search(:topic_id => @forum_topic.id).order("forum_posts.id").paginate(params[:page])

View File

@@ -103,8 +103,8 @@ class ForumTopic < ActiveRecord::Base
ForumTopicVisit.where("user_id = ? and forum_topic_id = ? and last_read_at >= ?", user.id, id, updated_at).exists?
end
def mark_as_read!(user = nil)
user ||= CurrentUser.user
def mark_as_read!(user = CurrentUser.user)
return if user.is_anonymous?
match = ForumTopicVisit.where(:user_id => user.id, :forum_topic_id => id).first
if match

View File

@@ -57,6 +57,16 @@ class ForumTopicsControllerTest < ActionController::TestCase
assert_response :success
end
should "record a topic visit for html requests" do
get :show, {id: @forum_topic.id}, {user_id: @user.id}
assert_not_nil(@user.reload.last_forum_read_at)
end
should "not record a topic visit for non-html requests" do
get :show, {id: @forum_topic.id, format: :json}, {user_id: @user.id}
assert_nil(@user.reload.last_forum_read_at)
end
should "render for atom feed" do
get :show, {:id => @forum_topic.id, :format => :atom}
assert_response :success