Commit 8e635082886e481c2a27287b4a1e53c88161b6f9
1 parent
ceaa8050
Exists in
article_hit_count
Count only once for unlogged users
Signed-off-by: Luciano Prestes Cavalcanti <lucianopcbr@gmail.com> Signed-off-by: Pedro de Lyra <pedrodelyra@gmail.com> Signed-off-by: Simiao Carvalho <simiaosimis@gmail.com>
Showing
2 changed files
with
25 additions
and
4 deletions
Show diff stats
app/controllers/public/content_viewer_controller.rb
... | ... | @@ -276,12 +276,19 @@ class ContentViewerController < ApplicationController |
276 | 276 | private |
277 | 277 | |
278 | 278 | def already_visited? |
279 | - return true if current_user.nil? | |
280 | - | |
281 | - if cookies[:visited].to_i == current_user.id | |
279 | + #-1 = -1 | |
280 | + if current_user.nil? | |
281 | + # For non logged in users, a cookie with id -1 is set | |
282 | + if cookies.permanent.signed[:visited] == -1 | |
283 | + return true | |
284 | + else | |
285 | + cookies.permanent.signed[:visited] = -1 | |
286 | + return false | |
287 | + end | |
288 | + elsif cookies[:visited].to_i == current_user.id | |
282 | 289 | return true |
283 | 290 | else |
284 | - cookies[:visited] = { value: current_user.id, expires: 7.days.from_now } | |
291 | + cookies.permanent.signed[:visited] = current_user.id | |
285 | 292 | return false; |
286 | 293 | end |
287 | 294 | end | ... | ... |
test/functional/content_viewer_controller_test.rb
... | ... | @@ -1587,4 +1587,18 @@ class ContentViewerControllerTest < ActionController::TestCase |
1587 | 1587 | assert_tag :tag => 'div', :attributes => { :class => 'article-compact-image' } |
1588 | 1588 | assert_tag :tag => 'div', :attributes => { :class => 'article-compact-abstract-with-image' } |
1589 | 1589 | end |
1590 | + | |
1591 | + should 'not count a visit twice for the same user' do | |
1592 | + profile = create_user('someone').person | |
1593 | + page = profile.articles.build(:name => 'myarticle', :body => 'the body of the text') | |
1594 | + page.save! | |
1595 | + | |
1596 | + get :view_page, :profile => page.identifier | |
1597 | + assert_equal 1, page.hits | |
1598 | + | |
1599 | + end | |
1600 | + | |
1601 | + should 'not count a visit twice for unlogged users' do | |
1602 | + assert true | |
1603 | + end | |
1590 | 1604 | end | ... | ... |