content_viewer_controller_test.rb 1.61 KB
require 'test_helper'
require 'content_viewer_controller'

class ContentViewerControllerTest < ActionController::TestCase

  def setup
    @controller = ContentViewerController.new
    @request    = ActionController::TestRequest.new
    @response   = ActionController::TestResponse.new

    @environment = Environment.default
    @environment.enabled_plugins += ['AnalyticsPlugin']
    @environment.save!

    @user = create_user('testinguser').person
    login_as @user.identifier

    @community = build Community, identifier: 'testcomm', name: 'test'
    @community.analytics_settings.enabled = true
    @community.analytics_settings.anonymous = false
    @community.save!
    @community.add_member @user
  end

  should 'register page view correctly' do
    @request.env['HTTP_REFERER'] = 'http://google.com'
    first_url = 'http://test.host'
    get :view_page, profile: @community.identifier, page: []
    assert_equal 1, @community.page_views.count
    assert_equal 1, @community.visits.count

    first_page_view = @community.page_views.order(:id).first
    assert_equal @request.referer, first_page_view.referer_url

    @request.env['HTTP_REFERER'] = first_url
    get :view_page, profile: @community.identifier, page: @community.articles.last.path.split('/')
    assert_equal 2, @community.page_views.count
    assert_equal 1, @community.visits.count

    second_page_view = @community.page_views.order(:id).last
    assert_equal first_page_view, second_page_view.referer_page_view

    assert_equal @user, second_page_view.user

    assert second_page_view.request_duration > 0 and second_page_view.request_duration < 1
  end

end