fix milestones created after issue close; closes #100
This commit is contained in:
parent
e76611078e
commit
957bf7fe24
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -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 } };
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue