update dependencies

This commit is contained in:
Radek Stepan 2018-04-21 12:47:51 -04:00
parent 01ce8bc396
commit b539c4d53d
24 changed files with 29276 additions and 10908 deletions

2
.nvmrc
View File

@ -1 +1 @@
v0.12.9 v8.11.1

View File

@ -7,7 +7,7 @@ CLEANCSS = ./node_modules/.bin/cleancss
MOCHA = ./node_modules/.bin/mocha MOCHA = ./node_modules/.bin/mocha
BIN = ./bin/burnchart.js BIN = ./bin/burnchart.js
MOCHA-OPTS = --compilers js:babel-register --ui exports --timeout 5000 --bail MOCHA-OPTS = --require babel-register --ui exports --timeout 5000 --bail
start: start:
${BIN} ${BIN}
@ -28,7 +28,7 @@ build-js:
${BROWSERIFY} -e -s burnchart ./src/js/index.jsx -t babelify > public/js/bundle.js ${BROWSERIFY} -e -s burnchart ./src/js/index.jsx -t babelify > public/js/bundle.js
build-css: build-css:
${LESS} src/less/burnchart.less > public/css/bundle.css ${LESS} --js src/less/burnchart.less > public/css/bundle.css
build: build-js build-css build: build-js build-css

5955
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "burnchart", "name": "burnchart",
"version": "3.2.4", "version": "3.3.0",
"description": "GitHub Burndown Chart as a Service", "description": "GitHub Burndown Chart as a Service",
"author": "Radek Stepan <dev@radekstepan.com> (http://radekstepan.com)", "author": "Radek Stepan <dev@radekstepan.com> (http://radekstepan.com)",
"license": "AGPL-3.0", "license": "AGPL-3.0",
@ -11,51 +11,55 @@
"start": "make start", "start": "make start",
"test": "make test" "test": "make test"
}, },
"engines": {
"node": "~8.11.0",
"npm": "~5.8.0"
},
"dependencies": { "dependencies": {
"argparse": "^1.0.4", "argparse": "1.0.10",
"colors": "^1.1.2", "colors": "1.2.1",
"node-static": "^0.7.7" "node-static": "0.7.10"
}, },
"devDependencies": { "devDependencies": {
"async": "^1.5.2", "async": "2.6.0",
"babel": "^6.3.26", "babel": "6.23.0",
"babel-preset-es2015": "^6.3.13", "babel-preset-es2015": "6.24.1",
"babel-preset-react": "^6.3.13", "babel-preset-react": "6.24.1",
"babel-preset-stage-0": "^6.5.0", "babel-preset-stage-0": "6.24.1",
"babel-register": "^6.4.3", "babel-register": "6.26.0",
"babelify": "^7.2.0", "babelify": "8.0.0",
"browserify": "^13.0.0", "browserify": "13.0.0",
"chai": "^3.4.1", "chai": "4.1.2",
"classnames": "^2.2.3", "classnames": "2.2.5",
"clean-css": "^3.4.9", "clean-css": "3.4.9",
"d3": "^3.5.12", "d3": "3.5.12",
"d3-tip": "^0.6.7", "d3-tip": "0.6.7",
"deep-diff": "^0.3.3", "deep-diff": "1.0.0",
"firebase": "^3.4.1", "firebase": "3.4.1",
"less": "^2.5.3", "less": "3.0.1",
"lesshat": "^3.0.2", "lesshat": "4.1.0",
"lodash": "^3.10.1", "lodash": "4.17.5",
"lscache": "^1.0.5", "lscache": "1.0.5",
"marked": "^0.3.5", "marked": "0.3.19",
"mocha": "^2.3.4", "mocha": "5.1.1",
"moment": "^2.11.1", "moment": "2.22.1",
"normalize.less": "^1.0.0", "normalize.less": "1.0.0",
"object-assign": "^4.0.1", "object-assign": "4.1.1",
"object-path": "^0.9.2", "object-path": "0.11.4",
"proxyquire": "^1.7.3", "proxyquire": "2.0.1",
"qs": "^6.2.0", "qs": "6.5.1",
"react": "^0.14.6", "react": "0.14.7",
"react-addons-css-transition-group": "^0.14.6", "react-addons-css-transition-group": "0.14.6",
"react-autosuggest": "^3.3.5", "react-autosuggest": "3.3.5",
"react-dom": "^0.14.7", "react-dom": "0.14.7",
"react-mini-router": "^2.0.0", "react-mini-router": "2.0.0",
"semver": "^5.1.0", "semver": "5.5.0",
"sortedindex-compare": "0.0.1", "sortedindex-compare": "0.0.1",
"superagent": "^1.6.1", "superagent": "3.8.2",
"uglify-js": "^2.6.1", "uglify-js": "3.3.22",
"watch": "^0.17.1", "watch": "1.0.2",
"watch-less": "0.0.4", "watch-less": "0.0.4",
"watchify": "^3.7.0" "watchify": "3.11.0"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

View File

@ -398,7 +398,9 @@ lesshat-selector {
@-webkit-keyframes spin{ from { -webkit-transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); }} @-webkit-keyframes spin{ from { -webkit-transform: rotate(0deg); } to { -webkit-transform: rotate(360deg); }}
@-moz-keyframes spin{ from { -moz-transform: rotate(0deg); } to { -moz-transform: rotate(360deg); }} @-moz-keyframes spin{ from { -moz-transform: rotate(0deg); } to { -moz-transform: rotate(360deg); }}
@-o-keyframes spin{ from { -o-transform: rotate(0deg); } to { -o-transform: rotate(360deg); }} @-o-keyframes spin{ from { -o-transform: rotate(0deg); } to { -o-transform: rotate(360deg); }}
@keyframes spin{ from {-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-ms-transform: rotate(0deg);transform: rotate(0deg); } to {-webkit-transform: rotate(360deg);-moz-transform: rotate(360deg);-ms-transform: rotate(360deg);transform: rotate(360deg); }; @keyframes spin{ from {-webkit-transform: rotate(0deg);-moz-transform: rotate(0deg);-ms-transform: rotate(0deg);transform: rotate(0deg); } to {-webkit-transform: rotate(360deg);-moz-transform: rotate(360deg);-ms-transform: rotate(360deg);transform: rotate(360deg); }}
[not-existing] {
zoom: 1;
} }
#chart { #chart {
height: 300px; height: 300px;
@ -590,8 +592,8 @@ ul li {
width: 500px; width: 500px;
-webkit-transform: translateX(-50%) translateY(-50%); -webkit-transform: translateX(-50%) translateY(-50%);
-moz-transform: translateX(-50%) translateY(-50%); -moz-transform: translateX(-50%) translateY(-50%);
-o-transform: translateX(-50%) translateY(-50%);
-ms-transform: translateX(-50%) translateY(-50%); -ms-transform: translateX(-50%) translateY(-50%);
-o-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%); transform: translateX(-50%) translateY(-50%);
} }
#notify.system p { #notify.system p {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -33,7 +33,7 @@ let find = ({ to, params, query }) => {
let re = /:[^\/]+/g; let re = /:[^\/]+/g;
// Skip empty objects. // Skip empty objects.
[ params, query ] = [ _.isObject(params) ? params : {}, query ].map(o => _.pick(o, _.identity)); [ params, query ] = [ _.isObject(params) ? params : {}, query ].map(o => _.pick(o, _.keys(o)));
// Find among the routes. // Find among the routes.
_.find(routes, (name, url) => { _.find(routes, (name, url) => {

View File

@ -154,7 +154,9 @@ export default class Chart extends React.Component {
.attr("cx", ({ date }) => x(new Date(date))) .attr("cx", ({ date }) => x(new Date(date)))
.attr("cy", ({ points }) => y(points)) .attr("cy", ({ points }) => y(points))
.attr("r", ({ radius }) => 5) .attr("r", ({ radius }) => 5)
.on('mouseover', tooltip.show) .on('mouseover', function(d, i) {
tooltip.show(d, this);
})
.on('mouseout', tooltip.hide); .on('mouseout', tooltip.hide);
} }

View File

@ -12,7 +12,7 @@ export default class Footer extends React.Component {
return ( return (
<div id="footer"> <div id="footer">
<div className="wrap"> <div className="wrap">
&copy; 2012-2016 <a href="https:/radekstepan.com" target="_blank">Radek Stepan</a> &copy; 2012-2018 <a href="https:/radekstepan.com" target="_blank">Radek Stepan</a>
</div> </div>
</div> </div>
); );

View File

@ -33,13 +33,14 @@ export default class MilestonePage extends Page {
'open': { 'list': [], 'size': 0 } 'open': { 'list': [], 'size': 0 }
}; };
// Merge all the milestone issues together. // Merge all the milestone issues together.
_(obj.milestones).filter((m) => !m.stats.isEmpty).each((m) => { _(obj.milestones).filter((m) => !m.stats.isEmpty).map(m => {
if (m.created_at < created_at) created_at = m.created_at; if (m.created_at < created_at) created_at = m.created_at;
if (m.due_on > due_on) due_on = m.due_on; if (m.due_on > due_on) due_on = m.due_on;
_.each([ 'closed', 'open' ], (k) => { _.each([ 'closed', 'open' ], (k) => {
issues[k].list = issues[k].list.concat(m.issues[k].list); issues[k].list = issues[k].list.concat(m.issues[k].list);
issues[k].size += m.issues[k].size; issues[k].size += m.issues[k].size;
}); });
return m;
}).value(); }).value();
issues.closed.list = _.sortBy(issues.closed.list, 'closed_at'); issues.closed.list = _.sortBy(issues.closed.list, 'closed_at');

View File

@ -89,7 +89,7 @@ class ProjectsStore extends Store {
} }
} else { } else {
// For all projects. // For all projects.
_.each(projects, _.partial(this.getProject, user), this); _.each(projects, project => this.getProject(user, project));
} }
})); }));
} }

View File

@ -2,7 +2,7 @@
@import "node_modules/normalize.less/normalize.less"; @import "node_modules/normalize.less/normalize.less";
// LESS Mixins. // LESS Mixins.
@import "node_modules/lesshat/build/lesshat.less"; @import "node_modules/lesshat/lesshat.less";
// Now our app. // Now our app.
@import "fonts.less"; @import "fonts.less";

View File

@ -2,9 +2,8 @@ import { assert } from 'chai';
import EventEmitter from '../src/js/lib/EventEmitter.js'; import EventEmitter from '../src/js/lib/EventEmitter.js';
export default { describe('EventEmitter', () => {
EventEmitter: { it('on', done => {
on(done) {
let m = new EventEmitter(); let m = new EventEmitter();
let i = 0; let i = 0;
@ -31,9 +30,9 @@ export default {
assert.equal(5, i); assert.equal(5, i);
done(); done();
}, });
onAny(done) { it('onAny', done => {
let m = new EventEmitter(); let m = new EventEmitter();
let i = 0; let i = 0;
@ -47,9 +46,9 @@ export default {
assert.equal(3, i); assert.equal(3, i);
done(); done();
}, });
off(done) { it('off', done => {
let m = new EventEmitter(); let m = new EventEmitter();
let map = { A: 0, B: 0 }; let map = { A: 0, B: 0 };
@ -67,9 +66,9 @@ export default {
assert.deepEqual({ A: 1, B: 1 }, map); assert.deepEqual({ A: 1, B: 1 }, map);
done(); done();
}, });
offAny(done) { it('offAny', done => {
let m = new EventEmitter(); let m = new EventEmitter();
let map = { A: 0, B: 0 }; let map = { A: 0, B: 0 };
@ -87,6 +86,5 @@ export default {
assert.deepEqual({ A: 1, B: 0 }, map); assert.deepEqual({ A: 1, B: 0 }, map);
done(); done();
} });
} });
};

View File

@ -3,8 +3,8 @@ import { assert } from 'chai';
import Store from '../src/js/lib/Store.js'; import Store from '../src/js/lib/Store.js';
import actions from '../src/js/actions/appActions.js'; import actions from '../src/js/actions/appActions.js';
export default { describe('Store', () => {
'store - set': (done) => { it('set', done => {
let s = new Store(); let s = new Store();
s.set('A.B', 1); // key as a string s.set('A.B', 1); // key as a string
@ -13,9 +13,9 @@ export default {
assert.deepEqual({ A: { B: 1, C: 2 }}, s.get()); assert.deepEqual({ A: { B: 1, C: 2 }}, s.get());
done(); done();
}, });
'store - push': (done) => { it('push', done => {
let s = new Store({ 'list': [ 'A' ] }); let s = new Store({ 'list': [ 'A' ] });
s.push('list', 'B'); // key as a string s.push('list', 'B'); // key as a string
@ -24,9 +24,9 @@ export default {
assert.deepEqual({ 'list': [ 'A', 'B', 'C' ] }, s.get()); assert.deepEqual({ 'list': [ 'A', 'B', 'C' ] }, s.get());
done(); done();
}, });
'store - push with init': (done) => { it('push with init', done => {
let s = new Store(); let s = new Store();
s.push('list', 'A'); s.push('list', 'A');
@ -34,18 +34,18 @@ export default {
assert.deepEqual({ 'list': [ 'A' ] }, s.get()); assert.deepEqual({ 'list': [ 'A' ] }, s.get());
done(); done();
}, });
'store - get': (done) => { it('get', done => {
let s = new Store({ 'A': [ 1, 2 ], 'B': { 'C': 3 } }); let s = new Store({ 'A': [ 1, 2 ], 'B': { 'C': 3 } });
assert.equal(2, s.get('A.1')); // key as a string assert.equal(2, s.get('A.1')); // key as a string
assert.equal(3, s.get([ 'B', 'C' ])); // key as an array assert.equal(3, s.get([ 'B', 'C' ])); // key as an array
done(); done();
}, });
'store - get with callback': (done) => { it('get with callback', done => {
let s = new Store({ 'A': 1 }); let s = new Store({ 'A': 1 });
let vals = []; let vals = [];
@ -58,9 +58,9 @@ export default {
assert.deepEqual([ 1, 2 ], vals); assert.deepEqual([ 1, 2 ], vals);
done(); done();
}, });
'store - setSilent': (done) => { it('setSilent', done => {
let s = new Store(); let s = new Store();
let val; let val;
@ -74,9 +74,9 @@ export default {
assert.equal(1, val); assert.equal(1, val);
done(); done();
}, });
'store - assign': (done) => { it('assign', done => {
let s = new Store({ A: 1 }); let s = new Store({ A: 1 });
s.set({ B: 1 }); s.set({ B: 1 });
@ -84,9 +84,9 @@ export default {
assert.deepEqual({ A: 1, B: 1 }, s.get()); assert.deepEqual({ A: 1, B: 1 }, s.get());
done(); done();
}, });
'store - changes': (done) => { it('changes', done => {
let s = new Store({ A: { B: { C: 1 } } }); let s = new Store({ A: { B: { C: 1 } } });
let key; let key;
@ -98,9 +98,9 @@ export default {
assert.equal('A.B.C', key); assert.equal('A.B.C', key);
done(); done();
}, });
'store - cb called': (done) => { it('cb called', done => {
let s = new Store(); let s = new Store();
let events = []; let events = [];
@ -115,9 +115,9 @@ export default {
assert.deepEqual([ true, false ], events); assert.deepEqual([ true, false ], events);
done(); done();
}, });
'store - cb cancelled': (done) => { it('cb cancelled', done => {
let s = new Store(); let s = new Store();
let events = []; let events = [];
@ -135,5 +135,5 @@ export default {
assert.deepEqual([ true, false ], events); assert.deepEqual([ true, false ], events);
done(); done();
}, 20); }, 20);
} });
}; });

View File

@ -15,15 +15,15 @@ let repo = {
'milestone': 1 'milestone': 1
}; };
export default { describe('issues', () => {
'issues - time format': (done) => { it('time format', done => {
// ISO 8601 dates are in UTC timezone. // ISO 8601 dates are in UTC timezone.
let utc = moment(json[0].created_at).toDate().toUTCString(); let utc = moment(json[0].created_at).toDate().toUTCString();
assert(utc, 'Fri, 22 Apr 2011 13:33:48 GMT'); assert(utc, 'Fri, 22 Apr 2011 13:33:48 GMT');
done(); done();
}, });
'issues - all empty': (done) => { it('all empty', done => {
let called = 0; let called = 0;
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
called += 1; called += 1;
@ -39,9 +39,9 @@ export default {
assert.strictEqual(closed.size, 0); assert.strictEqual(closed.size, 0);
done(); done();
}); });
}, });
'issues - open empty': (done) => { it('open empty', done => {
let called = 0; let called = 0;
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
called += 1; called += 1;
@ -59,9 +59,9 @@ export default {
assert(closed.list.length, 1); assert(closed.list.length, 1);
done(); done();
}); });
}, });
'issues - closed empty': (done) => { it('closed empty', done => {
let called = 0; let called = 0;
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
called += 1; called += 1;
@ -77,9 +77,9 @@ export default {
assert.strictEqual(closed.size, 0); assert.strictEqual(closed.size, 0);
done(); done();
}); });
}, });
'issues - both not empty': (done) => { it('both not empty', done => {
let called = 0; let called = 0;
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
called += 1; called += 1;
@ -95,9 +95,9 @@ export default {
assert(closed.size, 1); assert(closed.size, 1);
done(); done();
}); });
}, });
'issues - 99 results on a page': (done) => { it('99 results on a page', done => {
let called = 0; let called = 0;
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
called += 1; called += 1;
@ -113,9 +113,9 @@ export default {
assert(closed.size, 99); assert(closed.size, 99);
done(); done();
}); });
}, });
'issues - 100 results on a page': (done) => { it('100 results on a page', done => {
let called = 0; let called = 0;
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
called += 1; called += 1;
@ -138,9 +138,9 @@ export default {
assert(closed.size, 100); assert(closed.size, 100);
done(); done();
}); });
}, });
'issues - 101 total results': (done) => { it('101 total results', done => {
let called = 0; let called = 0;
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
called += 1; called += 1;
@ -165,9 +165,9 @@ export default {
assert.deepEqual(closed.list[100], { 'number': 100, 'size': 1 }); assert.deepEqual(closed.list[100], { 'number': 100, 'size': 1 });
done(); done();
}); });
}, });
'issues - 201 total results': (done) => { it('201 total results', done => {
let called = 0; let called = 0;
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
called += 1; called += 1;
@ -197,9 +197,9 @@ export default {
}); });
done(); done();
}); });
}, });
'issues - get all when not found': (done) => { it('get all when not found', done => {
let called = 0; let called = 0;
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
called += 1; called += 1;
@ -213,9 +213,9 @@ export default {
assert(called, 1); assert(called, 1);
done(); done();
}); });
}, });
'issues - size based on a label': (done) => { it('size based on a label', done => {
opa.set(config, 'chart.points', 'LABELS'); opa.set(config, 'chart.points', 'LABELS');
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
@ -232,9 +232,9 @@ export default {
assert(open.list[0].size, 2); assert(open.list[0].size, 2);
done(); done();
}); });
}, });
'issues - filter when no labels': (done) => { it('filter when no labels', done => {
opa.set(config, 'chart.points', 'LABELS'); opa.set(config, 'chart.points', 'LABELS');
request.allIssues = (user, repo, opts, cb) => cb(null, [{}]); request.allIssues = (user, repo, opts, cb) => cb(null, [{}]);
@ -244,9 +244,9 @@ export default {
assert.strictEqual(open.size, 0); assert.strictEqual(open.size, 0);
done(); done();
}); });
}, });
'issues - filter when empty labels': (done) => { it('filter when empty labels', done => {
opa.set(config, 'chart.points', 'LABELS'); opa.set(config, 'chart.points', 'LABELS');
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
@ -258,9 +258,9 @@ export default {
assert.strictEqual(open.size, 0); assert.strictEqual(open.size, 0);
done(); done();
}); });
}, });
'issues - filter when not matching regex': (done) => { it('filter when not matching regex', done => {
opa.set(config, 'chart.points', 'LABELS'); opa.set(config, 'chart.points', 'LABELS');
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
@ -272,9 +272,9 @@ export default {
assert.strictEqual(open.size, 0); assert.strictEqual(open.size, 0);
done(); done();
}); });
}, });
'issues - filter when multiple match the regex': (done) => { it('filter when multiple match the regex', done => {
opa.set(config, 'chart.points', 'LABELS'); opa.set(config, 'chart.points', 'LABELS');
request.allIssues = (user, repo, opts, cb) => { request.allIssues = (user, repo, opts, cb) => {
@ -292,5 +292,5 @@ export default {
assert(b.size, 4); assert(b.size, 4);
done(); done();
}); });
} });
}; });

View File

@ -4,8 +4,8 @@ import _ from 'lodash';
import lines from '../src/js/modules/chart/lines.js'; import lines from '../src/js/modules/chart/lines.js';
export default { describe('lines', () => {
'lines - actual': (done) => { it('actual', done => {
let issues = [ let issues = [
{ 'size': 3, 'date': 2 }, { 'size': 3, 'date': 2 },
{ 'size': 2, 'date': 3 }, { 'size': 2, 'date': 3 },
@ -17,9 +17,9 @@ export default {
assert.deepEqual(points, [6, 3, 1, 0]); assert.deepEqual(points, [6, 3, 1, 0]);
done(); done();
}, });
'lines - ideal': (done) => { it('ideal', done => {
let a = '2011-04-01T00:00:00Z'; let a = '2011-04-01T00:00:00Z';
let b = '2011-04-03T00:00:00Z'; let b = '2011-04-03T00:00:00Z';
@ -32,9 +32,9 @@ export default {
]); ]);
done(); done();
}, });
'lines - trend': (done) => { it('trend', done => {
let issues = [ let issues = [
{ 'date': '2011-04-02T00:00:00.000Z', 'points': 4 }, { 'date': '2011-04-02T00:00:00.000Z', 'points': 4 },
{ 'date': '2011-04-03T00:00:00.000Z', 'points': 1 }, { 'date': '2011-04-03T00:00:00.000Z', 'points': 1 },
@ -52,5 +52,5 @@ export default {
assert.deepEqual(line, [2, 1]); assert.deepEqual(line, [2, 1]);
done(); done();
} });
}; });

View File

@ -3,11 +3,11 @@ import moment from 'moment';
import json from './fixtures/milestones.json'; import json from './fixtures/milestones.json';
export default { describe('milestones', () => {
'milestones - time format': (done) => { it('time format', done => {
// ISO 8601 dates are in UTC timezone. // ISO 8601 dates are in UTC timezone.
let utc = moment(json[0].created_at).toDate().toUTCString(); let utc = moment(json[0].created_at).toDate().toUTCString();
assert(utc, 'Sun, 10 Apr 2011 20:09:31 GMT'); assert(utc, 'Sun, 10 Apr 2011 20:09:31 GMT');
done(); done();
} });
}; });

View File

@ -16,13 +16,13 @@ let projects = proxy(lib, {
lscache, '../modules/github/request.js': request lscache, '../modules/github/request.js': request
}).default; }).default;
export default { describe('projects', () => {
'projects - initializes empty': (done) => { it('initializes empty', done => {
assert.deepEqual(projects.get('list'), []); assert.deepEqual(projects.get('list'), []);
done(); done();
}, });
'projects - sorts on new milestones': (done) => { it('sorts on new milestones', done => {
projects.set({ 'list': [], 'index': [] }); projects.set({ 'list': [], 'index': [] });
let project = { let project = {
@ -40,9 +40,9 @@ export default {
assert.deepEqual(projects.get('index'), [[0, 0]]); assert.deepEqual(projects.get('index'), [[0, 0]]);
done(); done();
}, });
'projects - sort by progress': (done) => { it('sort by progress', done => {
projects.set({ 'list': [], 'index': [], 'sortBy': 'progress' }); projects.set({ 'list': [], 'index': [], 'sortBy': 'progress' });
let project = { let project = {
@ -73,9 +73,9 @@ export default {
assert.deepEqual(projects.get('index'), [[0, 1], [0, 0]]); assert.deepEqual(projects.get('index'), [[0, 1], [0, 0]]);
done(); done();
}, });
'projects - sort by priority': (done) => { it('sort by priority', done => {
projects.set({ 'list': [], 'index': [], 'sortBy': 'priority' }); projects.set({ 'list': [], 'index': [], 'sortBy': 'priority' });
let project = { let project = {
@ -121,9 +121,9 @@ export default {
assert.deepEqual(projects.get('index'), [[0, 2], [0, 0], [0, 1]]); assert.deepEqual(projects.get('index'), [[0, 2], [0, 0], [0, 1]]);
done(); done();
}, });
'projects - sort by priority defaults': (done) => { it('sort by priority defaults', done => {
projects.set({ 'list': [], 'index': [], 'sortBy': 'priority' }); projects.set({ 'list': [], 'index': [], 'sortBy': 'priority' });
let project = { let project = {
@ -163,9 +163,9 @@ export default {
assert.deepEqual(projects.get('index'), [[0, 2], [0, 1], [0, 0]]); assert.deepEqual(projects.get('index'), [[0, 2], [0, 1], [0, 0]]);
done(); done();
}, });
'projects - sort by name': (done) => { it('sort by name', done => {
projects.set({ 'list': [], 'index': [], 'sortBy': 'name' }); projects.set({ 'list': [], 'index': [], 'sortBy': 'name' });
let project = { let project = {
@ -188,9 +188,9 @@ export default {
assert.deepEqual(projects.get('index'), [[0, 1], [0, 0]]); assert.deepEqual(projects.get('index'), [[0, 1], [0, 0]]);
done(); done();
}, });
'projects - sort by name semver': (done) => { it('sort by name semver', done => {
projects.set({ 'list': [], 'index': [], 'sortBy': 'name' }); projects.set({ 'list': [], 'index': [], 'sortBy': 'name' });
let project = { let project = {
@ -218,9 +218,9 @@ export default {
assert.deepEqual(projects.get('index'), [[0, 2], [0, 1], [0, 0]]); assert.deepEqual(projects.get('index'), [[0, 2], [0, 1], [0, 0]]);
done(); done();
}, });
'projects - search': (done) => { it('search', done => {
projects.set({ 'list': [ projects.set({ 'list': [
{ 'owner': 'radek', 'name': 'A' } { 'owner': 'radek', 'name': 'A' }
], 'index': [], 'sortBy': 'name', 'user': null }); ], 'index': [], 'sortBy': 'name', 'user': null });
@ -249,9 +249,9 @@ export default {
assert.deepEqual(projects.get('suggestions'), [ 'radek/aA' ]); assert.deepEqual(projects.get('suggestions'), [ 'radek/aA' ]);
done(); done();
}, });
'projects - delete': (done) => { it('delete', done => {
let a = { 'owner': 'company', 'name': 'netflix', 'milestones': [ { 'title': 'A', 'stats': {} } ] }; let a = { 'owner': 'company', 'name': 'netflix', 'milestones': [ { 'title': 'A', 'stats': {} } ] };
let b = { 'owner': 'company', 'name': 'space-x' }; let b = { 'owner': 'company', 'name': 'space-x' };
let c = { 'owner': 'company', 'name': 'tesla-m', 'milestones': [ { 'title': 'C', 'stats': {} } ] }; let c = { 'owner': 'company', 'name': 'tesla-m', 'milestones': [ { 'title': 'C', 'stats': {} } ] };
@ -269,10 +269,10 @@ export default {
assert.deepEqual(projects.get('index'), [ [ 0, 0 ], [ 1, 0 ] ]); assert.deepEqual(projects.get('index'), [ [ 0, 0 ], [ 1, 0 ] ]);
done(); done();
}, });
// Issue #116. // Issue #116.
'projects - add milestone (project behind the scenes)': (done) => { it('add milestone (project behind the scenes)', done => {
projects.set({ 'list': [], 'index': [], 'sortBy': 'progress' }); projects.set({ 'list': [], 'index': [], 'sortBy': 'progress' });
let p = { 'name': 'zcash', 'owner': 'zcash' }; let p = { 'name': 'zcash', 'owner': 'zcash' };
@ -288,5 +288,5 @@ export default {
]); ]);
done(); done();
} });
}; });

View File

@ -36,8 +36,8 @@ let superagent = new Sa();
let lib = path.resolve(__dirname, '../src/js/modules/github/request.js'); let lib = path.resolve(__dirname, '../src/js/modules/github/request.js');
let request = proxy(lib, { superagent }).default; let request = proxy(lib, { superagent }).default;
export default { describe('request', () => {
'request - all milestones (ok)': (done) => { it('all milestones (ok)', done => {
superagent.response = { superagent.response = {
'statusType': 2, 'statusType': 2,
'error': false, 'error': false,
@ -57,9 +57,9 @@ export default {
assert.deepEqual(data, [null]); assert.deepEqual(data, [null]);
done(); done();
}); });
}, });
'request - all milestones (403)': (done) => { it('all milestones (403)', done => {
superagent.response = { superagent.response = {
'statusType': 4, 'statusType': 4,
'error': false, 'error': false,
@ -76,9 +76,9 @@ export default {
assert(err, 'Error'); assert(err, 'Error');
done(); done();
}); });
}, });
'request - one milestone (ok)': (done) => { it('one milestone (ok)', done => {
superagent.response = { superagent.response = {
'statusType': 2, 'statusType': 2,
'error': false, 'error': false,
@ -99,9 +99,9 @@ export default {
assert.deepEqual(data, [null]); assert.deepEqual(data, [null]);
done(); done();
}); });
}, });
'request - one milestone (404)': (done) => { it('one milestone (404)', done => {
superagent.response = { superagent.response = {
'statusType': 4, 'statusType': 4,
'error': Error("cannot GET undefined (404)"), 'error': Error("cannot GET undefined (404)"),
@ -119,9 +119,9 @@ export default {
assert(err, 'Not Found'); assert(err, 'Not Found');
done(); done();
}); });
}, });
'request - one milestone (500)': (done) => { it('one milestone (500)', done => {
superagent.response = { superagent.response = {
'statusType': 5, 'statusType': 5,
'error': Error("Error"), 'error': Error("Error"),
@ -136,9 +136,9 @@ export default {
assert(err, 'Error'); assert(err, 'Error');
done(); done();
}); });
}, });
'request - all issues (ok)': (done) => { it('all issues (ok)', done => {
superagent.response = { superagent.response = {
'statusType': 2, 'statusType': 2,
'error': false, 'error': false,
@ -159,9 +159,9 @@ export default {
assert.deepEqual(data, [ null ]); assert.deepEqual(data, [ null ]);
done(); done();
}); });
}, });
'request - timeout': (done) => { it('timeout', done => {
opa.set(config, 'request.timeout', 10); opa.set(config, 'request.timeout', 10);
superagent.timeout = 20; superagent.timeout = 20;
@ -179,9 +179,9 @@ export default {
assert(err, 'Request has timed out'); assert(err, 'Request has timed out');
done(); done();
}); });
}, });
'request - use tokens': (done) => { it('use tokens', done => {
superagent.response = {}; superagent.response = {};
let user = { 'credential': { 'accessToken': 'ABC' }}; let user = { 'credential': { 'accessToken': 'ABC' }};
@ -192,5 +192,5 @@ export default {
assert(superagent.params.Authorization, 'token ABC'); assert(superagent.params.Authorization, 'token ABC');
done(); done();
}); });
} });
}; });