fix milestones created after issue close; closes #100

This commit is contained in:
Radek Stepan 2016-01-26 17:31:41 +01:00
parent e76611078e
commit 957bf7fe24
4 changed files with 213 additions and 8 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,5 @@
import moment from 'moment'; import moment from 'moment';
import _ from 'lodash';
// Progress in %. // Progress in %.
let progress = (a, b) => { let progress = (a, b) => {
@ -27,6 +28,13 @@ export default (milestone) => {
if (points === 100) isDone = true; if (points === 100) isDone = true;
} }
// Check that milestone hasn't been created after issue close; #100.
if (milestone.issues.closed.size) {
milestone.created_at = _.reduce(milestone.issues.closed.list
, (x, { closed_at }) => (x > closed_at) ? closed_at : x
, milestone.created_at);
}
// Milestones with no due date are always on track. // Milestones with no due date are always on track.
if (!(milestone.due_on != null)) { if (!(milestone.due_on != null)) {
return { isOverdue, isOnTime, isDone, isEmpty, 'progress': { points } }; return { isOverdue, isOnTime, isDone, isEmpty, 'progress': { points } };

View File

@ -124,6 +124,33 @@ export default {
let { isOnTime } = stats(milestone); let { isOnTime } = stats(milestone);
assert.isTrue(isOnTime); assert.isTrue(isOnTime);
done();
},
// Make sure milestone hasn't been created after closing an issue; #100.
'stats - milestone created_at': (done) => {
let now = moment.utc();
let a = now.clone().subtract(1, 'week').toISOString(),
b = now.clone().subtract(1, 'day').toISOString()
let milestone = {
'created_at': b,
'issues': {
'open': {
'size': 0
},
'closed': {
'size': 1,
'list': [ { 'closed_at': a } ]
}
}
};
// By ref.
stats(milestone);
assert.equal(milestone.created_at, a);
done(); done();
} }
}; };