From c5f19a0f64d436e1bfd2f6bdf030eb9968ba08ed Mon Sep 17 00:00:00 2001 From: Radek Stepan Date: Fri, 29 Jun 2018 12:30:22 -0400 Subject: [PATCH] update tests --- src/js/components/AddRepoForm.jsx | 2 +- src/js/components/EditRepos.jsx | 2 +- src/js/stores/reposStore.js | 6 +- test/issues.js | 6 +- test/milestones.js | 13 -- test/projects.js | 291 +---------------------------- test/repos.js | 292 ++++++++++++++++++++++++++++++ test/request.js | 144 --------------- test/stats.js | 50 ++--- 9 files changed, 333 insertions(+), 473 deletions(-) delete mode 100644 test/milestones.js create mode 100644 test/repos.js diff --git a/src/js/components/AddRepoForm.jsx b/src/js/components/AddRepoForm.jsx index 6901025..301112b 100644 --- a/src/js/components/AddRepoForm.jsx +++ b/src/js/components/AddRepoForm.jsx @@ -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' }); } diff --git a/src/js/components/EditRepos.jsx b/src/js/components/EditRepos.jsx index 43d8c1f..0ad8955 100644 --- a/src/js/components/EditRepos.jsx +++ b/src/js/components/EditRepos.jsx @@ -16,7 +16,7 @@ export default class EditRepos extends React.Component { } _onDelete(repo) { - actions.emit('repo.delete', repo); + actions.emit('repos.delete', repo); } render() { diff --git a/src/js/stores/reposStore.js b/src/js/stores/reposStore.js index df0637c..c102719 100644 --- a/src/js/stores/reposStore.js +++ b/src/js/stores/reposStore.js @@ -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}`); diff --git a/test/issues.js b/test/issues.js index 88d6180..328b6d1 100644 --- a/test/issues.js +++ b/test/issues.js @@ -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', () => { diff --git a/test/milestones.js b/test/milestones.js deleted file mode 100644 index 78c6fef..0000000 --- a/test/milestones.js +++ /dev/null @@ -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(); - }); -}); diff --git a/test/projects.js b/test/projects.js index 4200ebd..6011675 100644 --- a/test/projects.js +++ b/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(); }); }); diff --git a/test/repos.js b/test/repos.js new file mode 100644 index 0000000..0ca1883 --- /dev/null +++ b/test/repos.js @@ -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(); + }); +}); diff --git a/test/request.js b/test/request.js index 7800459..2c8cbac 100644 --- a/test/request.js +++ b/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 = {}; diff --git a/test/stats.js b/test/stats.js index f118ba9..2492c45 100644 --- a/test/stats.js +++ b/test/stats.js @@ -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(); }