discourse/test/javascripts/models/report_test.js

59 lines
1.9 KiB
JavaScript

module("Discourse.Report");
function reportWithData(data) {
return Discourse.Report.create({
type: 'topics',
data: _.map(data, function(val, index) {
return {x: moment().subtract("days", index).format('YYYY-MM-DD'), y: val};
})
});
}
test("counts", function() {
var report = reportWithData([5, 4, 3, 2, 1, 100, 99, 98, 1000]);
equal(report.get('todayCount'), 5);
equal(report.get('yesterdayCount'), 4);
equal(report.sumDays(2, 4), 6, "adds the values for the given range of days, inclusive");
equal(report.get('lastSevenDaysCount'), 307, "sums 7 days excluding today");
});
test("percentChangeString", function() {
var report = reportWithData([]);
equal(report.percentChangeString(8, 5), "+60%", "value increased");
equal(report.percentChangeString(2, 8), "-75%", "value decreased");
equal(report.percentChangeString(8, 8), "0%", "value unchanged");
blank(report.percentChangeString(8, 0), "returns blank when previous value was 0");
equal(report.percentChangeString(0, 8), "-100%", "yesterday was 0");
blank(report.percentChangeString(0, 0), "returns blank when both were 0");
});
test("yesterdayCountTitle with valid values", function() {
var title = reportWithData([6,8,5,2,1]).get('yesterdayCountTitle');
ok(title.indexOf('+60%') !== -1);
ok(title.match(/Was 5/));
});
test("yesterdayCountTitle when two days ago was 0", function() {
var title = reportWithData([6,8,0,2,1]).get('yesterdayCountTitle');
equal(title.indexOf('%'), -1);
ok(title.match(/Was 0/));
});
test("sevenDayCountTitle", function() {
var title = reportWithData([100,1,1,1,1,1,1,1,2,2,2,2,2,2,2,100,100]).get('sevenDayCountTitle');
ok(title.match(/-50%/));
ok(title.match(/Was 14/));
});
test("thirtyDayCountTitle", function() {
var report = reportWithData([5,5,5,5]);
report.set('prev30Days', 10);
var title = report.get('thirtyDayCountTitle');
ok(title.indexOf('+50%') !== -1);
ok(title.match(/Was 10/));
});