Only Update page_views When They Are Valid (ie created) (#5195) [deploy]

This commit is contained in:
Molly Struve 2019-12-26 11:28:18 -06:00 committed by GitHub
parent 0ca803ec4a
commit faa4325c1f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 5 deletions

View file

@ -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

View file

@ -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