From faa4325c1f38885f08ec4f33313dfaf968559e63 Mon Sep 17 00:00:00 2001 From: Molly Struve Date: Thu, 26 Dec 2019 11:28:18 -0600 Subject: [PATCH] Only Update page_views When They Are Valid (ie created) (#5195) [deploy] --- app/controllers/page_views_controller.rb | 6 ++++-- spec/requests/page_views_spec.rb | 9 ++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/app/controllers/page_views_controller.rb b/app/controllers/page_views_controller.rb index 7acd2ac96..9f9185f35 100644 --- a/app/controllers/page_views_controller.rb +++ b/app/controllers/page_views_controller.rb @@ -18,8 +18,10 @@ class PageViewsController < ApplicationMetalController def update if session_current_user_id - page_view = PageView.find_or_create_by(article_id: params[:id], user_id: session_current_user_id) - page_view.update_column(:time_tracked_in_seconds, page_view.time_tracked_in_seconds + 15) + page_view = PageView.order("created_at DESC").find_or_create_by(article_id: params[:id], user_id: session_current_user_id) + unless page_view.new_record? + page_view.update_column(:time_tracked_in_seconds, page_view.time_tracked_in_seconds + 15) + end end head :ok diff --git a/spec/requests/page_views_spec.rb b/spec/requests/page_views_spec.rb index c98e62e79..15441db20 100644 --- a/spec/requests/page_views_spec.rb +++ b/spec/requests/page_views_spec.rb @@ -91,12 +91,15 @@ RSpec.describe "PageViews", type: :request do end it "updates a new page view time on page by 15" do - post "/page_views", params: { - article_id: article.id - } + post "/page_views", params: { article_id: article.id } put "/page_views/" + article.id.to_s expect(PageView.last.time_tracked_in_seconds).to eq(30) end + + it "does not update an invalid page view" do + invalid_id = article.id + 100 + expect { put "/page_views/" + invalid_id.to_s }.not_to raise_error + end end context "when user is not signed in" do