burnchart/test/stats.js

174 lines
3.4 KiB
JavaScript

import { assert } from 'chai';
import path from 'path';
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 = {
'issues': {
'open': {
'size': 0
},
'closed': {
'size': 0
}
}
};
let { isEmpty, isOverdue, isOnTime } = stats(milestone);
assert.isTrue(isEmpty);
assert.isFalse(isOverdue);
assert.isTrue(isOnTime);
done();
},
'stats - has no progress been made?': (done) => {
let milestone = {
'issues': {
'open': {
'size': 1
},
'closed': {
'size': 0
}
}
};
assert.isTrue(stats(milestone).isEmpty);
done();
},
'stats - is milestone done?': (done) => {
let milestone = {
'issues': {
'open': {
'size': 0
},
'closed': {
'size': 5
}
}
};
let { isDone } = stats(milestone);
assert.isTrue(isDone);
done();
},
'stats - is milestone overdue? has due date, yes': (done) => {
let milestone = {
'created_at': '2011-04-02T00:00:00.000Z',
'due_on': '2011-04-03T00:00:00.000Z',
'issues': {
'open': {
'size': 0
},
'closed': {
'size': 0
}
}
};
let { isOverdue } = stats(milestone);
assert.isTrue(isOverdue);
done();
},
'stats - is milestone on time? has due date, yes': (done) => {
let now = moment.utc();
let milestone = {
'created_at': now.subtract(1, 'week').toISOString(),
'due_on': now.add(1, 'month').toISOString(),
'issues': {
'open': {
'size': 1
},
'closed': {
'size': 1
}
}
};
let { isOnTime } = stats(milestone);
assert.isTrue(isOnTime);
done();
},
'stats - is milestone on time? has due date, no': (done) => {
let now = moment.utc();
let milestone = {
'created_at': now.subtract(2, 'week').toISOString(),
'due_on': now.add(1, 'day').toISOString(),
'issues': {
'open': {
'size': 2
},
'closed': {
'size': 2
}
}
};
let { isOnTime } = stats(milestone);
assert.isFalse(isOnTime);
done();
},
'stats - is milestone on time? has due date, all issues closed': (done) => {
let now = moment.utc();
let milestone = {
'created_at': now.subtract(2, 'week').toISOString(),
'due_on': now.subtract(1, 'week').toISOString(),
'issues': {
'open': {
'size': 0
},
'closed': {
'size': 5
}
}
};
let { isOnTime } = stats(milestone);
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();
}
};