Unit Testing a scroll Tracker

Testing out my scrollTracker obj

by Steven Senkus

HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="results"></ul>

CSS

ul {
    list-style-type: none;
    padding: 0;
}

JavaScript

// Setup code
//==========================================================
var $window = window;
$window.console = {
    log: function () {
        $('#results').append('<li>' + JSON.stringify(arguments[2]) + '</li>')
    }
}
$window.ga = function (cmd, data) {
    console.log('GA request:', cmd, JSON.stringify(data));
}

var ACTIONS = {
    LIST_PAGE: "LIST PAGE"
};
var CATEGORIES = {
    SEARCH: "SEARCH"
};

function sendEvent(category, action, label, value) {
    var fieldsObj = {
        'hitType': 'event',
    }

    if (category && action) {
        fieldsObj.eventCategory = category;
        fieldsObj.eventAction = action;
    } else {
        return;
    }
    if (label) {
        fieldsObj.eventLabel = label;
    }
    if (value) {
        fieldsObj.eventValue = value;
    }
    $window.ga('send', fieldsObj);
}

function appendAssetType() {
    return 'CATEGORY'
}
//===========================================================
// Object under test
//===========================================================
var scrollTracker = (function () {
    var _counts = null,
        _countsMaster = {
            pageCount: 0,
            exact: 0,
            similar: 0,
            searchId: null
        };

    function _roundPageCount(val) {
        var pageSize = 50; // this should be passed in as a parameter somewhere...
        return Math.ceil(val / pageSize);
    }

    function _isCurrentSearch(oldId, newId) {
        return oldId === newId;
    }

    function _reset() {
        _counts = angular.copy(_countsMaster);
        _counts.searchId = searchContext.getCurrentSearch().id;
    }

    function _updatePageCounts(assetType, data) {
        var exactCount, similarCount, totalCount, labelString;
        _counts.pageCount++;
        if (_counts.pageCount > 1) { // avoid initial response data (100 items)
            _counts.exact += data.exact.length;
            _counts.similar += data.similar.length;
            exactCount =...