update tests
This commit is contained in:
parent
bc49357334
commit
c5f19a0f64
|
@ -52,7 +52,7 @@ export default class AddRepoForm extends React.Component {
|
|||
if (!/^[^\s\/]+\/[^\s\/]+$/.test(val)) return;
|
||||
|
||||
const [ owner, name ] = val.split('/');
|
||||
actions.emit('repo.add', { owner, name });
|
||||
actions.emit('repos.add', { owner, name });
|
||||
// Redirect to the dashboard.
|
||||
App.navigate({ 'to': 'repos' });
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ export default class EditRepos extends React.Component {
|
|||
}
|
||||
|
||||
_onDelete(repo) {
|
||||
actions.emit('repo.delete', repo);
|
||||
actions.emit('repos.delete', repo);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
|
|
@ -95,7 +95,7 @@ class ReposStore extends Store {
|
|||
}
|
||||
|
||||
// Push to the stack unless it exists already.
|
||||
onRepoAdd(repo) {
|
||||
onReposAdd(repo) {
|
||||
if (!_.find(this.get('list'), repo)) {
|
||||
this.push('list', repo);
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ class ReposStore extends Store {
|
|||
}
|
||||
|
||||
// Search for repos.
|
||||
onRepoSearch(text) {
|
||||
onReposSearch(text) {
|
||||
if (!text || !text.length) return;
|
||||
|
||||
// Wait for the user to get resolved.
|
||||
|
@ -168,7 +168,7 @@ class ReposStore extends Store {
|
|||
}
|
||||
|
||||
// Delete a repo.
|
||||
onRepoDelete(repo) {
|
||||
onReposDelete(repo) {
|
||||
const i = this.findIndex(repo);
|
||||
// Delete the repo.
|
||||
this.del(`list.${i}`);
|
||||
|
|
|
@ -9,10 +9,12 @@ import config from '../src/config.js';
|
|||
|
||||
import json from './fixtures/issues.json';
|
||||
|
||||
let repo = {
|
||||
// TODO we are not fetching issues like this anymore
|
||||
|
||||
const repo = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart',
|
||||
'milestone': 1
|
||||
'project': 1
|
||||
};
|
||||
|
||||
describe('issues', () => {
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
import { assert } from 'chai';
|
||||
import moment from 'moment';
|
||||
|
||||
import json from './fixtures/milestones.json';
|
||||
|
||||
describe('milestones', () => {
|
||||
it('time format', done => {
|
||||
// ISO 8601 dates are in UTC timezone.
|
||||
let utc = moment(json[0].created_at).toDate().toUTCString();
|
||||
assert(utc, 'Sun, 10 Apr 2011 20:09:31 GMT');
|
||||
done();
|
||||
});
|
||||
});
|
291
test/projects.js
291
test/projects.js
|
@ -1,292 +1,15 @@
|
|||
import { assert } from 'chai';
|
||||
import path from 'path';
|
||||
import _ from 'lodash';
|
||||
import { noCallThru } from 'proxyquire'
|
||||
let proxy = noCallThru();
|
||||
import moment from 'moment';
|
||||
|
||||
let request = {};
|
||||
let lscache = {
|
||||
get: () => [],
|
||||
set: () => {}
|
||||
};
|
||||
// import json from './fixtures/milestones.json';
|
||||
|
||||
// Proxy the request module.
|
||||
let lib = path.resolve(__dirname, '../src/js/stores/projectsStore.js');
|
||||
let projects = proxy(lib, {
|
||||
lscache, '../modules/github/request.js': request
|
||||
}).default;
|
||||
// TODO expand on payload from GraphQL.
|
||||
|
||||
describe('projects', () => {
|
||||
it('initializes empty', done => {
|
||||
assert.deepEqual(projects.get('list'), []);
|
||||
done();
|
||||
});
|
||||
|
||||
it('sorts on new milestones', done => {
|
||||
projects.set({ 'list': [], 'index': [] });
|
||||
|
||||
let project = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart'
|
||||
};
|
||||
let milestone = {
|
||||
'title': '1.0.0',
|
||||
'stats': {}
|
||||
};
|
||||
|
||||
projects.push('list', project);
|
||||
projects.addMilestone(project, milestone);
|
||||
|
||||
assert.deepEqual(projects.get('index'), [[0, 0]]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('sort by progress', done => {
|
||||
projects.set({ 'list': [], 'index': [], 'sortBy': 'progress' });
|
||||
|
||||
let project = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart'
|
||||
};
|
||||
let milestone1 = {
|
||||
'title': '1.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 5
|
||||
}
|
||||
}
|
||||
};
|
||||
let milestone2 = {
|
||||
'title': '2.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 7
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
projects.push('list', project);
|
||||
projects.addMilestone(project, milestone1);
|
||||
projects.addMilestone(project, milestone2);
|
||||
|
||||
assert.deepEqual(projects.get('index'), [[0, 1], [0, 0]]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('sort by priority', done => {
|
||||
projects.set({ 'list': [], 'index': [], 'sortBy': 'priority' });
|
||||
|
||||
let project = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart'
|
||||
};
|
||||
let milestone1 = {
|
||||
'title': '1.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 2,
|
||||
'time': 1
|
||||
},
|
||||
'days': 2
|
||||
}
|
||||
};
|
||||
let milestone2 = {
|
||||
'title': '2.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 2,
|
||||
'time': 1
|
||||
},
|
||||
'days': 3
|
||||
}
|
||||
};
|
||||
let milestone3 = {
|
||||
'title': '3.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 1,
|
||||
'time': 2
|
||||
},
|
||||
'days': 4
|
||||
}
|
||||
};
|
||||
|
||||
projects.push('list', project);
|
||||
projects.addMilestone(project, milestone1);
|
||||
projects.addMilestone(project, milestone2);
|
||||
projects.addMilestone(project, milestone3);
|
||||
|
||||
assert.deepEqual(projects.get('index'), [[0, 2], [0, 0], [0, 1]]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('sort by priority defaults', done => {
|
||||
projects.set({ 'list': [], 'index': [], 'sortBy': 'priority' });
|
||||
|
||||
let project = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart'
|
||||
};
|
||||
let milestone1 = {
|
||||
'title': '1.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 3
|
||||
}
|
||||
}
|
||||
};
|
||||
let milestone2 = {
|
||||
'title': '2.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 2
|
||||
}
|
||||
}
|
||||
};
|
||||
let milestone3 = {
|
||||
'title': '3.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 1
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
projects.push('list', project);
|
||||
projects.addMilestone(project, milestone1);
|
||||
projects.addMilestone(project, milestone2);
|
||||
projects.addMilestone(project, milestone3);
|
||||
|
||||
assert.deepEqual(projects.get('index'), [[0, 2], [0, 1], [0, 0]]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('sort by name', done => {
|
||||
projects.set({ 'list': [], 'index': [], 'sortBy': 'name' });
|
||||
|
||||
let project = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart'
|
||||
};
|
||||
let milestone1 = {
|
||||
'title': 'B',
|
||||
'stats': {}
|
||||
};
|
||||
let milestone2 = {
|
||||
'title': 'A',
|
||||
'stats': {}
|
||||
};
|
||||
|
||||
projects.push('list', project);
|
||||
projects.addMilestone(project, milestone1);
|
||||
projects.addMilestone(project, milestone2);
|
||||
|
||||
assert.deepEqual(projects.get('index'), [[0, 1], [0, 0]]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('sort by name semver', done => {
|
||||
projects.set({ 'list': [], 'index': [], 'sortBy': 'name' });
|
||||
|
||||
let project = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart'
|
||||
};
|
||||
let milestone1 = {
|
||||
'title': '1.2.5',
|
||||
'stats': {}
|
||||
};
|
||||
let milestone2 = {
|
||||
'title': '1.1.x',
|
||||
'stats': {}
|
||||
};
|
||||
let milestone3 = {
|
||||
'title': '1.1.7',
|
||||
'stats': {}
|
||||
};
|
||||
|
||||
projects.push('list', project);
|
||||
projects.addMilestone(project, milestone1);
|
||||
projects.addMilestone(project, milestone2);
|
||||
projects.addMilestone(project, milestone3);
|
||||
|
||||
assert.deepEqual(projects.get('index'), [[0, 2], [0, 1], [0, 0]]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('search', done => {
|
||||
projects.set({ 'list': [
|
||||
{ 'owner': 'radek', 'name': 'A' }
|
||||
], 'index': [], 'sortBy': 'name', 'user': null });
|
||||
|
||||
// Skip search.
|
||||
request.repos = (user, owner, cb) => assert(false);
|
||||
projects.onProjectsSearch();
|
||||
|
||||
// Search on text.
|
||||
request.repos = (user, owner, cb) => assert(owner == undefined);
|
||||
projects.onProjectsSearch('radek');
|
||||
|
||||
// Search on owner.
|
||||
request.repos = (user, owner, cb) => assert(owner == 'radek');
|
||||
projects.onProjectsSearch('radek/project');
|
||||
|
||||
request.repos = (user, owner, cb) => {
|
||||
cb(null, [
|
||||
{ 'has_issues': true, 'owner': { 'login': 'Radek' }, 'name': 'A', 'full_name': 'Radek/A' }, // exists
|
||||
{ 'has_issues': true, 'owner': { 'login': 'radek' }, 'name': 'aA', 'full_name': 'radek/aA' }, // ok
|
||||
{ 'has_issues': true, 'owner': { 'login': 'a' }, 'name': 'A', 'full_name': 'a/A' }, // wrong owner
|
||||
{ 'has_issues': false, 'owner': { 'login': 'radek' }, 'name': 'aaa', 'full_name': 'radek/aaa' } // no issues
|
||||
]);
|
||||
};
|
||||
projects.onProjectsSearch('radek/a');
|
||||
assert.deepEqual(projects.get('suggestions'), [ 'radek/aA' ]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('delete', done => {
|
||||
let a = { 'owner': 'company', 'name': 'netflix', 'milestones': [ { 'title': 'A', 'stats': {} } ] };
|
||||
let b = { 'owner': 'company', 'name': 'space-x' };
|
||||
let c = { 'owner': 'company', 'name': 'tesla-m', 'milestones': [ { 'title': 'C', 'stats': {} } ] };
|
||||
|
||||
projects.set({
|
||||
'list': [ a, b, c ],
|
||||
'index': [ [ 0, 0 ], [ 1, 0 ], [ 2, 0 ] ],
|
||||
'sortBy': 'name',
|
||||
'user': null
|
||||
});
|
||||
|
||||
projects.onProjectsDelete(b);
|
||||
|
||||
assert.deepEqual(projects.get('list'), [ a, c ]);
|
||||
assert.deepEqual(projects.get('index'), [ [ 0, 0 ], [ 1, 0 ] ]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
// Issue #116.
|
||||
it('add milestone (project behind the scenes)', done => {
|
||||
projects.set({ 'list': [], 'index': [], 'sortBy': 'progress' });
|
||||
|
||||
let p = { 'name': 'zcash', 'owner': 'zcash' };
|
||||
let m = { 'issues': {
|
||||
'closed': { 'list': [], 'size': 0 },
|
||||
'open': { 'list': [], 'size': 0 }
|
||||
}};
|
||||
|
||||
projects.addMilestone(p, m);
|
||||
|
||||
assert.deepEqual(projects.get('list'), [
|
||||
_.extend(p, { 'milestones': [ m ] })
|
||||
]);
|
||||
|
||||
it('time format', done => {
|
||||
// ISO 8601 dates are in UTC timezone.
|
||||
const utc = moment(json[0].created_at).toDate().toUTCString();
|
||||
assert(utc, 'Sun, 10 Apr 2011 20:09:31 GMT');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
|
|
@ -0,0 +1,292 @@
|
|||
import { assert } from 'chai';
|
||||
import path from 'path';
|
||||
import _ from 'lodash';
|
||||
import { noCallThru } from 'proxyquire'
|
||||
let proxy = noCallThru();
|
||||
|
||||
let request = {};
|
||||
let lscache = {
|
||||
get: () => [],
|
||||
set: () => {}
|
||||
};
|
||||
|
||||
// Proxy the request module.
|
||||
let lib = path.resolve(__dirname, '../src/js/stores/projectsStore.js');
|
||||
const repos = proxy(lib, {
|
||||
lscache, '../modules/github/request.js': request
|
||||
}).default;
|
||||
|
||||
describe('repos', () => {
|
||||
it('initializes empty', done => {
|
||||
assert.deepEqual(repos.get('list'), []);
|
||||
done();
|
||||
});
|
||||
|
||||
it('sorts on new projects', done => {
|
||||
repos.set({ 'list': [], 'index': [] });
|
||||
|
||||
const repo = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart'
|
||||
};
|
||||
const project = {
|
||||
'title': '1.0.0',
|
||||
'stats': {}
|
||||
};
|
||||
|
||||
repos.push('list', repo);
|
||||
repos.addProject(repo, project);
|
||||
|
||||
assert.deepEqual(repos.get('index'), [[0, 0]]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('sort by progress', done => {
|
||||
repos.set({ 'list': [], 'index': [], 'sortBy': 'progress' });
|
||||
|
||||
const repo = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart'
|
||||
};
|
||||
const project1 = {
|
||||
'title': '1.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 5
|
||||
}
|
||||
}
|
||||
};
|
||||
const project2 = {
|
||||
'title': '2.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 7
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
repos.push('list', repo);
|
||||
repos.addProject(repo, project1);
|
||||
repos.addProject(repo, project2);
|
||||
|
||||
assert.deepEqual(repos.get('index'), [[0, 1], [0, 0]]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('sort by priority', done => {
|
||||
repos.set({ 'list': [], 'index': [], 'sortBy': 'priority' });
|
||||
|
||||
const repo = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart'
|
||||
};
|
||||
const project1 = {
|
||||
'title': '1.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 2,
|
||||
'time': 1
|
||||
},
|
||||
'days': 2
|
||||
}
|
||||
};
|
||||
const project2 = {
|
||||
'title': '2.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 2,
|
||||
'time': 1
|
||||
},
|
||||
'days': 3
|
||||
}
|
||||
};
|
||||
const project3 = {
|
||||
'title': '3.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 1,
|
||||
'time': 2
|
||||
},
|
||||
'days': 4
|
||||
}
|
||||
};
|
||||
|
||||
repos.push('list', repo);
|
||||
repos.addProject(repo, project1);
|
||||
repos.addProject(repo, project2);
|
||||
repos.addProject(repo, project3);
|
||||
|
||||
assert.deepEqual(repos.get('index'), [[0, 2], [0, 0], [0, 1]]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('sort by priority defaults', done => {
|
||||
repos.set({ 'list': [], 'index': [], 'sortBy': 'priority' });
|
||||
|
||||
const repo = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart'
|
||||
};
|
||||
const projet1 = {
|
||||
'title': '1.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 3
|
||||
}
|
||||
}
|
||||
};
|
||||
const project2 = {
|
||||
'title': '2.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 2
|
||||
}
|
||||
}
|
||||
};
|
||||
const project3 = {
|
||||
'title': '3.0.0',
|
||||
'stats': {
|
||||
'progress': {
|
||||
'points': 1
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
repos.push('list', repo);
|
||||
repos.addProject(repo, project1);
|
||||
repos.addProject(repo, project2);
|
||||
repos.addProject(repo, project3);
|
||||
|
||||
assert.deepEqual(repos.get('index'), [[0, 2], [0, 1], [0, 0]]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('sort by name', done => {
|
||||
repos.set({ 'list': [], 'index': [], 'sortBy': 'name' });
|
||||
|
||||
const repo = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart'
|
||||
};
|
||||
const project1 = {
|
||||
'title': 'B',
|
||||
'stats': {}
|
||||
};
|
||||
const project2 = {
|
||||
'title': 'A',
|
||||
'stats': {}
|
||||
};
|
||||
|
||||
repos.push('list', repo);
|
||||
repos.addProject(repo, project1);
|
||||
repos.addProject(repo, project2);
|
||||
|
||||
assert.deepEqual(repos.get('index'), [[0, 1], [0, 0]]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('sort by name semver', done => {
|
||||
repos.set({ 'list': [], 'index': [], 'sortBy': 'name' });
|
||||
|
||||
const repo = {
|
||||
'owner': 'radekstepan',
|
||||
'name': 'burnchart'
|
||||
};
|
||||
const project1 = {
|
||||
'title': '1.2.5',
|
||||
'stats': {}
|
||||
};
|
||||
const project2 = {
|
||||
'title': '1.1.x',
|
||||
'stats': {}
|
||||
};
|
||||
const project3 = {
|
||||
'title': '1.1.7',
|
||||
'stats': {}
|
||||
};
|
||||
|
||||
repos.push('list', repo);
|
||||
repos.addProject(repo, project1);
|
||||
repos.addProject(repo, project2);
|
||||
repos.addProject(repo, project3);
|
||||
|
||||
assert.deepEqual(repos.get('index'), [[0, 2], [0, 1], [0, 0]]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('search', done => {
|
||||
repos.set({ 'list': [
|
||||
{ 'owner': 'radek', 'name': 'A' }
|
||||
], 'index': [], 'sortBy': 'name', 'user': null });
|
||||
|
||||
// Skip search.
|
||||
request.repos = (user, owner, cb) => assert(false);
|
||||
repos.onReposSearch();
|
||||
|
||||
// Search on text.
|
||||
request.repos = (user, owner, cb) => assert(owner == undefined);
|
||||
repos.onReposSearch('radek');
|
||||
|
||||
// Search on owner.
|
||||
request.repos = (user, owner, cb) => assert(owner == 'radek');
|
||||
repos.onReposSearch('radek/project');
|
||||
|
||||
request.repos = (user, owner, cb) => {
|
||||
cb(null, [
|
||||
{ 'has_issues': true, 'owner': { 'login': 'Radek' }, 'name': 'A', 'full_name': 'Radek/A' }, // exists
|
||||
{ 'has_issues': true, 'owner': { 'login': 'radek' }, 'name': 'aA', 'full_name': 'radek/aA' }, // ok
|
||||
{ 'has_issues': true, 'owner': { 'login': 'a' }, 'name': 'A', 'full_name': 'a/A' }, // wrong owner
|
||||
{ 'has_issues': false, 'owner': { 'login': 'radek' }, 'name': 'aaa', 'full_name': 'radek/aaa' } // no issues
|
||||
]);
|
||||
};
|
||||
projects.onReposSearch('radek/a');
|
||||
assert.deepEqual(repos.get('suggestions'), [ 'radek/aA' ]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('delete', done => {
|
||||
let a = { 'owner': 'company', 'name': 'netflix', 'projects': [ { 'title': 'A', 'stats': {} } ] };
|
||||
let b = { 'owner': 'company', 'name': 'space-x' };
|
||||
let c = { 'owner': 'company', 'name': 'tesla-m', 'projects': [ { 'title': 'C', 'stats': {} } ] };
|
||||
|
||||
repos.set({
|
||||
'list': [ a, b, c ],
|
||||
'index': [ [ 0, 0 ], [ 1, 0 ], [ 2, 0 ] ],
|
||||
'sortBy': 'name',
|
||||
'user': null
|
||||
});
|
||||
|
||||
repos.onReposDelete(b);
|
||||
|
||||
assert.deepEqual(repos.get('list'), [ a, c ]);
|
||||
assert.deepEqual(repos.get('index'), [ [ 0, 0 ], [ 1, 0 ] ]);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
// Issue #116.
|
||||
it('add project (repo behind the scenes)', done => {
|
||||
repos.set({ 'list': [], 'index': [], 'sortBy': 'progress' });
|
||||
|
||||
let r = { 'name': 'zcash', 'owner': 'zcash' };
|
||||
let p = { 'issues': {
|
||||
'closed': { 'list': [], 'size': 0 },
|
||||
'open': { 'list': [], 'size': 0 }
|
||||
}};
|
||||
|
||||
repos.addProject(r, p);
|
||||
|
||||
assert.deepEqual(repos.get('list'), [
|
||||
_.extend(r, { 'projects': [ p ] })
|
||||
]);
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
144
test/request.js
144
test/request.js
|
@ -37,150 +37,6 @@ let lib = path.resolve(__dirname, '../src/js/modules/github/request.js');
|
|||
let request = proxy(lib, { superagent }).default;
|
||||
|
||||
describe('request', () => {
|
||||
it('all milestones (ok)', done => {
|
||||
superagent.response = {
|
||||
'statusType': 2,
|
||||
'error': false,
|
||||
'body': [ null ]
|
||||
};
|
||||
|
||||
let owner = 'radekstepan';
|
||||
let name = 'burnchart';
|
||||
|
||||
request.allMilestones({}, { owner, name }, (err, data) => {
|
||||
assert.isNull(err);
|
||||
assert.deepEqual(superagent.params, {
|
||||
'uri': 'https://api.github.com/repos/radekstepan/burnchart/milestones?state=open&sort=due_date&direction=asc',
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/vnd.github.v3'
|
||||
});
|
||||
assert.deepEqual(data, [null]);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('all milestones (403)', done => {
|
||||
superagent.response = {
|
||||
'statusType': 4,
|
||||
'error': false,
|
||||
'body': {
|
||||
'message': 'API rate limit exceeded'
|
||||
}
|
||||
};
|
||||
|
||||
let owner = 'radekstepan';
|
||||
let name = 'burnchart';
|
||||
let milestone = 0;
|
||||
|
||||
request.oneMilestone({}, { owner, name, milestone }, (err) => {
|
||||
assert(err, 'Error');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('one milestone (ok)', done => {
|
||||
superagent.response = {
|
||||
'statusType': 2,
|
||||
'error': false,
|
||||
'body': [ null ]
|
||||
};
|
||||
|
||||
let owner = 'radekstepan';
|
||||
let name = 'burnchart';
|
||||
let milestone = 1;
|
||||
|
||||
request.oneMilestone({}, { owner, name, milestone }, (err, data) => {
|
||||
assert.isNull(err);
|
||||
assert.deepEqual(superagent.params, {
|
||||
'uri': 'https://api.github.com/repos/radekstepan/burnchart/milestones/1?state=open&sort=due_date&direction=asc',
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/vnd.github.v3'
|
||||
});
|
||||
assert.deepEqual(data, [null]);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('one milestone (404)', done => {
|
||||
superagent.response = {
|
||||
'statusType': 4,
|
||||
'error': Error("cannot GET undefined (404)"),
|
||||
'body': {
|
||||
'documentation_url': "http://developer.github.com/v3",
|
||||
'message': "Not Found"
|
||||
}
|
||||
};
|
||||
|
||||
let owner = 'radekstepan';
|
||||
let name = 'burnchart';
|
||||
let milestone = 0;
|
||||
|
||||
request.oneMilestone({}, { owner, name, milestone }, (err) => {
|
||||
assert(err, 'Not Found');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('one milestone (500)', done => {
|
||||
superagent.response = {
|
||||
'statusType': 5,
|
||||
'error': Error("Error"),
|
||||
'body': null
|
||||
};
|
||||
|
||||
let owner = 'radekstepan';
|
||||
let name = 'burnchart';
|
||||
let milestone = 0;
|
||||
|
||||
request.oneMilestone({}, { owner, name, milestone }, (err) => {
|
||||
assert(err, 'Error');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('all issues (ok)', done => {
|
||||
superagent.response = {
|
||||
'statusType': 2,
|
||||
'error': false,
|
||||
'body': [ null ]
|
||||
};
|
||||
|
||||
let owner = 'radekstepan';
|
||||
let name = 'burnchart';
|
||||
let milestone = 0;
|
||||
|
||||
request.allIssues({}, { owner, name, milestone }, {}, (err, data) => {
|
||||
assert.isNull(err);
|
||||
assert.deepEqual(superagent.params, {
|
||||
'uri': 'https://api.github.com/repos/radekstepan/burnchart/issues?milestone=0&per_page=100',
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': 'application/vnd.github.v3'
|
||||
});
|
||||
assert.deepEqual(data, [ null ]);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('timeout', done => {
|
||||
opa.set(config, 'request.timeout', 10);
|
||||
|
||||
superagent.timeout = 20;
|
||||
superagent.response = {
|
||||
'statusType': 2,
|
||||
'error': false,
|
||||
'body': [ null ]
|
||||
};
|
||||
|
||||
let owner = 'radekstepan';
|
||||
let name = 'burnchart';
|
||||
let milestone = 0;
|
||||
|
||||
request.allIssues({}, { owner, name, milestone }, {}, (err) => {
|
||||
assert(err, 'Request has timed out');
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('use tokens', done => {
|
||||
superagent.response = {};
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@ import moment from 'moment';
|
|||
import stats from '../src/js/modules/stats.js';
|
||||
|
||||
export default {
|
||||
'stats - is milestone empty, on time and overdue? no due date': (done) => {
|
||||
let milestone = {
|
||||
'stats - is project empty, on time and overdue? no due date': (done) => {
|
||||
const project = {
|
||||
'issues': {
|
||||
'open': {
|
||||
'size': 0
|
||||
|
@ -17,7 +17,7 @@ export default {
|
|||
}
|
||||
};
|
||||
|
||||
let { isEmpty, isOverdue, isOnTime } = stats(milestone);
|
||||
let { isEmpty, isOverdue, isOnTime } = stats(project);
|
||||
|
||||
assert.isTrue(isEmpty);
|
||||
assert.isFalse(isOverdue);
|
||||
|
@ -27,7 +27,7 @@ export default {
|
|||
},
|
||||
|
||||
'stats - has no progress been made?': (done) => {
|
||||
let milestone = {
|
||||
const project = {
|
||||
'issues': {
|
||||
'open': {
|
||||
'size': 1
|
||||
|
@ -38,13 +38,13 @@ export default {
|
|||
}
|
||||
};
|
||||
|
||||
assert.isTrue(stats(milestone).isEmpty);
|
||||
assert.isTrue(stats(project).isEmpty);
|
||||
|
||||
done();
|
||||
},
|
||||
|
||||
'stats - is milestone done?': (done) => {
|
||||
let milestone = {
|
||||
'stats - is project done?': (done) => {
|
||||
const project = {
|
||||
'issues': {
|
||||
'open': {
|
||||
'size': 0
|
||||
|
@ -55,14 +55,14 @@ export default {
|
|||
}
|
||||
};
|
||||
|
||||
let { isDone } = stats(milestone);
|
||||
let { isDone } = stats(project);
|
||||
assert.isTrue(isDone);
|
||||
|
||||
done();
|
||||
},
|
||||
|
||||
'stats - is milestone overdue? has due date, yes': (done) => {
|
||||
let milestone = {
|
||||
'stats - is project overdue? has due date, yes': (done) => {
|
||||
const project = {
|
||||
'created_at': '2011-04-02T00:00:00.000Z',
|
||||
'due_on': '2011-04-03T00:00:00.000Z',
|
||||
'issues': {
|
||||
|
@ -75,15 +75,15 @@ export default {
|
|||
}
|
||||
};
|
||||
|
||||
let { isOverdue } = stats(milestone);
|
||||
let { isOverdue } = stats(project);
|
||||
assert.isTrue(isOverdue);
|
||||
|
||||
done();
|
||||
},
|
||||
|
||||
'stats - is milestone on time? has due date, yes': (done) => {
|
||||
'stats - is project on time? has due date, yes': (done) => {
|
||||
let now = moment.utc();
|
||||
let milestone = {
|
||||
const project = {
|
||||
'created_at': now.subtract(1, 'week').toISOString(),
|
||||
'due_on': now.add(1, 'month').toISOString(),
|
||||
'issues': {
|
||||
|
@ -96,15 +96,15 @@ export default {
|
|||
}
|
||||
};
|
||||
|
||||
let { isOnTime } = stats(milestone);
|
||||
let { isOnTime } = stats(project);
|
||||
assert.isTrue(isOnTime);
|
||||
|
||||
done();
|
||||
},
|
||||
|
||||
'stats - is milestone on time? has due date, no': (done) => {
|
||||
'stats - is project on time? has due date, no': (done) => {
|
||||
let now = moment.utc();
|
||||
let milestone = {
|
||||
const project = {
|
||||
'created_at': now.subtract(2, 'week').toISOString(),
|
||||
'due_on': now.add(1, 'day').toISOString(),
|
||||
'issues': {
|
||||
|
@ -117,15 +117,15 @@ export default {
|
|||
}
|
||||
};
|
||||
|
||||
let { isOnTime } = stats(milestone);
|
||||
let { isOnTime } = stats(project);
|
||||
assert.isFalse(isOnTime);
|
||||
|
||||
done();
|
||||
},
|
||||
|
||||
'stats - is milestone on time? has due date, all issues closed': (done) => {
|
||||
'stats - is prokect on time? has due date, all issues closed': (done) => {
|
||||
let now = moment.utc();
|
||||
let milestone = {
|
||||
const project = {
|
||||
'created_at': now.subtract(2, 'week').toISOString(),
|
||||
'due_on': now.subtract(1, 'week').toISOString(),
|
||||
'issues': {
|
||||
|
@ -138,19 +138,19 @@ export default {
|
|||
}
|
||||
};
|
||||
|
||||
let { isOnTime } = stats(milestone);
|
||||
let { isOnTime } = stats(project);
|
||||
assert.isTrue(isOnTime);
|
||||
|
||||
done();
|
||||
},
|
||||
|
||||
// Make sure milestone hasn't been created after closing an issue; #100.
|
||||
'stats - milestone created_at': (done) => {
|
||||
// Make sure project hasn't been created after closing an issue; #100.
|
||||
'stats - project created_at': (done) => {
|
||||
let now = moment.utc();
|
||||
let a = now.clone().subtract(1, 'week').toISOString(),
|
||||
b = now.clone().subtract(1, 'day').toISOString()
|
||||
|
||||
let milestone = {
|
||||
const project = {
|
||||
'created_at': b,
|
||||
'issues': {
|
||||
'open': {
|
||||
|
@ -164,9 +164,9 @@ export default {
|
|||
};
|
||||
|
||||
// By ref.
|
||||
stats(milestone);
|
||||
stats(project);
|
||||
|
||||
assert.equal(milestone.created_at, a);
|
||||
assert.equal(project.created_at, a);
|
||||
|
||||
done();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue