Merge pull request #74 from redsquirrel/unit-testing
Instrumenting project for unit testingpull/1/head
commit
aa54d3d8b0
@ -1,38 +1,40 @@ |
||||
function getQueryParams () { |
||||
var qs = window.location.hash.substr(1); |
||||
// Allowing window to be overriden for testing
|
||||
function QueryParams (_window) { |
||||
if (_window === undefined) _window = window; |
||||
|
||||
if (window.location.search.length > 0) { |
||||
// use legacy query params instead of hash
|
||||
window.location.hash = window.location.search.substr(1); |
||||
window.location.search = ''; |
||||
} |
||||
this.get = function () { |
||||
var qs = _window.location.hash.substr(1); |
||||
|
||||
var params = {}; |
||||
var parts = qs.split('&'); |
||||
for (var x in parts) { |
||||
var keyValue = parts[x].split('='); |
||||
if (keyValue[0] !== '') { |
||||
params[keyValue[0]] = keyValue[1]; |
||||
if (_window.location.search.length > 0) { |
||||
// use legacy query params instead of hash
|
||||
_window.location.hash = _window.location.search.substr(1); |
||||
_window.location.search = ''; |
||||
} |
||||
} |
||||
return params; |
||||
} |
||||
|
||||
function updateQueryParams (params) { |
||||
var currentParams = getQueryParams(); |
||||
var keys = Object.keys(params); |
||||
for (var x in keys) { |
||||
currentParams[keys[x]] = params[keys[x]]; |
||||
} |
||||
var queryString = '#'; |
||||
var updatedKeys = Object.keys(currentParams); |
||||
for (var y in updatedKeys) { |
||||
queryString += updatedKeys[y] + '=' + currentParams[updatedKeys[y]] + '&'; |
||||
} |
||||
window.location.hash = queryString.slice(0, -1); |
||||
var params = {}; |
||||
var parts = qs.split('&'); |
||||
for (var x in parts) { |
||||
var keyValue = parts[x].split('='); |
||||
if (keyValue[0] !== '') { |
||||
params[keyValue[0]] = keyValue[1]; |
||||
} |
||||
} |
||||
return params; |
||||
}; |
||||
|
||||
this.update = function (params) { |
||||
var currentParams = this.get(); |
||||
var keys = Object.keys(params); |
||||
for (var x in keys) { |
||||
currentParams[keys[x]] = params[keys[x]]; |
||||
} |
||||
var queryString = '#'; |
||||
var updatedKeys = Object.keys(currentParams); |
||||
for (var y in updatedKeys) { |
||||
queryString += updatedKeys[y] + '=' + currentParams[updatedKeys[y]] + '&'; |
||||
} |
||||
_window.location.hash = queryString.slice(0, -1); |
||||
}; |
||||
} |
||||
|
||||
module.exports = { |
||||
get: getQueryParams, |
||||
update: updateQueryParams |
||||
}; |
||||
module.exports = QueryParams; |
||||
|
@ -0,0 +1,17 @@ |
||||
var test = require('tape'); |
||||
|
||||
var Compiler = require('../src/app/compiler'); |
||||
|
||||
test('compiler.compile smoke', function (t) { |
||||
t.plan(1); |
||||
|
||||
var noop = function () {}; |
||||
var getCacheFile = function () { return 'fakeCacheFile'; }; |
||||
var fakeEditor = {onChangeSetup: noop, clearAnnotations: noop, getValue: noop, setCacheFileContent: noop, getCacheFile: getCacheFile}; |
||||
var fakeOutputField = {empty: noop}; |
||||
var fakeQueryParams = {get: function () { return {}; }}; |
||||
var compiler = new Compiler(fakeEditor, null, fakeQueryParams, null, fakeOutputField); |
||||
compiler.setCompileJSON(noop); |
||||
compiler.compile(); |
||||
t.ok(compiler); |
||||
}); |
@ -0,0 +1,69 @@ |
||||
var test = require('tape'); |
||||
|
||||
var GistHandler = require('../src/app/gist-handler'); |
||||
|
||||
test('gistHandler.handleLoad with no gist param', function (t) { |
||||
t.plan(1); |
||||
|
||||
var gistHandler = new GistHandler({}); |
||||
|
||||
var params = {}; |
||||
var result = gistHandler.handleLoad(params, null); |
||||
|
||||
t.equal(result, false); |
||||
}); |
||||
|
||||
test('gistHandler.handleLoad with blank gist param, and invalid user input', function (t) { |
||||
t.plan(3); |
||||
|
||||
var fakeWindow = {prompt: function (message) { |
||||
t.ok(message); |
||||
t.ok(message.match(/gist/i)); |
||||
return 'invalid'; |
||||
}}; |
||||
|
||||
var gistHandler = new GistHandler(fakeWindow); |
||||
|
||||
var params = {'gist': ''}; |
||||
var result = gistHandler.handleLoad(params, null); |
||||
|
||||
t.equal(result, false); |
||||
}); |
||||
|
||||
test('gistHandler.handleLoad with blank gist param, and valid user input', function (t) { |
||||
t.plan(4); |
||||
|
||||
var fakeWindow = {prompt: function (message) { |
||||
t.ok(message); |
||||
t.ok(message.match(/gist/i)); |
||||
return 'Beef1234'; |
||||
}}; |
||||
|
||||
var cb = function (gistId) { |
||||
t.equal(gistId, 'Beef1234'); |
||||
}; |
||||
|
||||
var gistHandler = new GistHandler(fakeWindow); |
||||
|
||||
var params = {'gist': ''}; |
||||
var result = gistHandler.handleLoad(params, cb); |
||||
|
||||
t.equal(result, true); |
||||
}); |
||||
|
||||
test('gistHandler.handleLoad with gist param', function (t) { |
||||
t.plan(2); |
||||
|
||||
var gistHandler = new GistHandler({}); |
||||
|
||||
var params = {'gist': 'abc'}; |
||||
|
||||
var cb = function (gistId) { |
||||
t.equal(gistId, 'abc'); |
||||
}; |
||||
|
||||
var result = gistHandler.handleLoad(params, cb); |
||||
|
||||
t.equal(result, true); |
||||
}); |
||||
|
@ -0,0 +1,3 @@ |
||||
require('./compiler-test'); |
||||
require('./gist-handler-test'); |
||||
require('./query-params-test'); |
@ -0,0 +1,21 @@ |
||||
var test = require('tape'); |
||||
|
||||
var QueryParams = require('../src/app/query-params'); |
||||
|
||||
test('queryParams.get', function (t) { |
||||
t.plan(2); |
||||
|
||||
var fakeWindow = {location: {hash: '#wat=sup&foo=bar', search: ''}}; |
||||
var params = new QueryParams(fakeWindow).get(); |
||||
t.equal(params.wat, 'sup'); |
||||
t.equal(params.foo, 'bar'); |
||||
}); |
||||
|
||||
test('queryParams.update', function (t) { |
||||
t.plan(1); |
||||
|
||||
var fakeWindow = {location: {hash: '#wat=sup', search: ''}}; |
||||
var qp = new QueryParams(fakeWindow); |
||||
qp.update({foo: 'bar'}); |
||||
t.equal(fakeWindow.location.hash, '#wat=sup&foo=bar'); |
||||
}); |
Loading…
Reference in new issue