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 =...