Decoupling gist-handler from query-params; Testing gist-handler

pull/1/head
Dave Hoover 9 years ago
parent ff54cb4bd8
commit e8d34daacf
  1. 5
      src/app.js
  2. 21
      src/app/gist-handler.js
  3. 69
      test/gist-handler-test.js
  4. 1
      test/index.js

@ -5,7 +5,8 @@ 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 queryParams = new QueryParams();
var gistHandler = require('./app/gist-handler'); var GistHandler = require('./app/gist-handler');
var gistHandler = new GistHandler();
var StorageHandler = require('./app/storage-handler'); var StorageHandler = require('./app/storage-handler');
var Editor = require('./app/editor'); var Editor = require('./app/editor');
@ -62,7 +63,7 @@ var run = function () {
// ------------------ gist load ---------------- // ------------------ gist load ----------------
var loadingFromGist = gistHandler.handleLoad(function (gistId) { var loadingFromGist = gistHandler.handleLoad(queryParams.get(), function (gistId) {
$.ajax({ $.ajax({
url: 'https://api.github.com/gists/' + gistId, url: 'https://api.github.com/gists/' + gistId,
jsonp: 'callback', jsonp: 'callback',

@ -1,15 +1,12 @@
/* global prompt */ // Allowing window to be overriden for testing
function GistHandler (_window) {
if (_window === undefined) _window = window;
var QueryParams = require('./query-params'); this.handleLoad = function (params, cb) {
var queryParams = new QueryParams();
function handleLoad (cb) {
var params = queryParams.get();
var loadingFromGist = false; var loadingFromGist = false;
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 = _window.prompt('Enter the URL or ID of the Gist you would like to load.');
if (str !== '') { if (str !== '') {
gistId = getGistId(str); gistId = getGistId(str);
loadingFromGist = !!gistId; loadingFromGist = !!gistId;
@ -21,16 +18,14 @@ function handleLoad (cb) {
if (loadingFromGist) { if (loadingFromGist) {
cb(gistId); cb(gistId);
} }
}
return loadingFromGist; return loadingFromGist;
} };
function getGistId (str) { function getGistId (str) {
var idr = /[0-9A-Fa-f]{8,}/; var idr = /[0-9A-Fa-f]{8,}/;
var match = idr.exec(str); var match = idr.exec(str);
return match ? match[0] : null; return match ? match[0] : null;
} }
}
module.exports = { module.exports = GistHandler;
handleLoad: handleLoad
};

@ -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);
});

@ -1 +1,2 @@
require('./gist-handler-test');
require('./query-params-test'); require('./query-params-test');

Loading…
Cancel
Save