Commit 36d0e59c authored by Dave Hoover's avatar Dave Hoover

Testing query-params.js with tape

parent 63ac2864
language: node_js language: node_js
node_js: node_js:
- stable - stable
script: npm run lint && npm run build script: npm run lint && npm run test && npm run build
addons: addons:
sauce_connect: sauce_connect:
username: "chriseth" username: "chriseth"
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
"version": "1.0.0", "version": "1.0.0",
"description": "Minimalistic browser-based Solidity IDE", "description": "Minimalistic browser-based Solidity IDE",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "node test/index.js",
"build": "mkdir -p build; browserify src/index.js -o build/app.js", "build": "mkdir -p build; browserify src/index.js -o build/app.js",
"lint": "semistandard" "lint": "semistandard"
}, },
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
"jquery": "^2.2.0", "jquery": "^2.2.0",
"js-base64": "^2.1.9", "js-base64": "^2.1.9",
"semistandard": "^7.0.0", "semistandard": "^7.0.0",
"tape": "^4.5.1",
"web3": "^0.15.3", "web3": "^0.15.3",
"webworkify": "^1.2.1" "webworkify": "^1.2.1"
}, },
......
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
var $ = require('jquery'); var $ = require('jquery');
var utils = require('./app/utils'); var utils = require('./app/utils');
var queryParams = require('./app/query-params'); var QueryParams = require('./app/query-params');
var queryParams = new QueryParams();
var gistHandler = require('./app/gist-handler'); var gistHandler = require('./app/gist-handler');
var StorageHandler = require('./app/storage-handler'); var StorageHandler = require('./app/storage-handler');
......
var webworkify = require('webworkify'); var webworkify = require('webworkify');
var queryParams = require('./query-params'); var QueryParams = require('./query-params');
var utils = require('./utils'); var utils = require('./utils');
var Renderer = require('./renderer'); var Renderer = require('./renderer');
...@@ -7,6 +7,7 @@ var Base64 = require('js-base64').Base64; ...@@ -7,6 +7,7 @@ var Base64 = require('js-base64').Base64;
function Compiler (editor, handleGithubCall, outputField, hidingRHP, updateFiles) { function Compiler (editor, handleGithubCall, outputField, hidingRHP, updateFiles) {
var renderer = new Renderer(editor, this, updateFiles); var renderer = new Renderer(editor, this, updateFiles);
var queryParams = new QueryParams();
var compileJSON; var compileJSON;
var compilerAcceptsMultipleFiles; var compilerAcceptsMultipleFiles;
......
/* global prompt */ /* global prompt */
var queryParams = require('./query-params'); var QueryParams = require('./query-params');
var queryParams = new QueryParams();
function handleLoad (cb) { function handleLoad (cb) {
var params = queryParams.get(); var params = queryParams.get();
var loadingFromGist = false; var loadingFromGist = false;
if (typeof params['gist'] !== undefined) { if (typeof params['gist'] !== undefined) { // testme
var gistId; var gistId;
if (params['gist'] === '') { if (params['gist'] === '') {
var str = prompt('Enter the URL or ID of the Gist you would like to load.'); var str = prompt('Enter the URL or ID of the Gist you would like to load.');
......
function getQueryParams () { // Allowing window to be overriden for testing
var qs = window.location.hash.substr(1); function QueryParams (_window) {
if (_window === undefined) _window = window;
if (window.location.search.length > 0) { this.get = function () {
// use legacy query params instead of hash var qs = _window.location.hash.substr(1);
window.location.hash = window.location.search.substr(1);
window.location.search = '';
}
var params = {}; if (_window.location.search.length > 0) {
var parts = qs.split('&'); // use legacy query params instead of hash
for (var x in parts) { _window.location.hash = _window.location.search.substr(1);
var keyValue = parts[x].split('='); _window.location.search = '';
if (keyValue[0] !== '') {
params[keyValue[0]] = keyValue[1];
} }
}
return params;
}
function updateQueryParams (params) { var params = {};
var currentParams = getQueryParams(); var parts = qs.split('&');
var keys = Object.keys(params); for (var x in parts) {
for (var x in keys) { var keyValue = parts[x].split('=');
currentParams[keys[x]] = params[keys[x]]; if (keyValue[0] !== '') {
params[keyValue[0]] = keyValue[1];
}
}
return params;
} }
var queryString = '#';
var updatedKeys = Object.keys(currentParams); this.update = function (params) {
for (var y in updatedKeys) { var currentParams = this.get();
queryString += updatedKeys[y] + '=' + currentParams[updatedKeys[y]] + '&'; 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);
} }
window.location.hash = queryString.slice(0, -1);
} }
module.exports = { module.exports = QueryParams;
get: getQueryParams,
update: updateQueryParams
};
require('./query-params-test');
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');
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment