define(["main", "../../js/vendor/chai.js", "day-model", "days-collection"],
function(Main, Chai, DayModel, DaysCollection) {
"use strict";
var assert = Chai.assert;
before(function() {
this.daysCollection = new DaysCollection();
var dayModel0 = new DayModel({ date: "20130101", visits: 1, value: 9 });
var dayModel1 = new DayModel({ date: "20130102", visits: 2, value: 8 });
var dayModel2 = new DayModel({ date: "20130103", visits: 3, value: 7 });
var dayModel3 = new DayModel({ date: "20130104", visits: 4, value: 6 });
var dayModel4 = new DayModel({ date: "20130105", visits: 5, value: 5 });
var dayModel5 = new DayModel({ date: "20130106", visits: 6, value: 4 });
var dayModel6 = new DayModel({ date: "20130107", visits: 7, value: 3 });
var dayModel7 = new DayModel({ date: "20130108", visits: 8, value: 2 });
var dayModel8 = new DayModel({ date: "20130109", visits: 9, value: 1 });
var dayModel9 = new DayModel({ date: "20130110", visits: 0, value: 0 });
this.daysCollection.add(dayModel0);
this.daysCollection.add(dayModel1);
this.daysCollection.add(dayModel2);
this.daysCollection.add(dayModel3);
this.daysCollection.add(dayModel4);
this.daysCollection.add(dayModel5);
this.daysCollection.add(dayModel6);
this.daysCollection.add(dayModel7);
this.daysCollection.add(dayModel8);
this.daysCollection.add(dayModel9);
});
describe("DaysCollection", function() {
describe("#complement()", function() {
it("adds missed days from lesser date till today", function() {
var dayModel1 = new DayModel({ date: "20130101" });
var dayModel3 = new DayModel({ date: "20130103" });
var daysCollection = new DaysCollection();
daysCollection.add([dayModel1, dayModel3]);
daysCollection.complement();
var now = new Date();
now.setMilliseconds(0);
now.setMinutes(0);
now.setHours(0);
assert.equal(
daysCollection.length,
Math.round((now - dayModel1.getDate()) / 1000 / 60 / 60 / 24));
});
it("should be sorted if complemented", function() {
var dayModel1 = new DayModel({ date: "20130101" });
var dayModel3 = new DayModel({ date: "20130103" });
var daysCollection = new DaysCollection();
daysCollection.add([dayModel1, dayModel3]);
daysCollection.complement();
var now = new Date();
now.setMilliseconds(0);
now.setMinutes(0);
now.setHours(0);
var previousDate = new Date("1970-01-01");
var nextDate;
for (var i = 0; i < daysCollection.models.length; i++) {
nextDate = daysCollection.models[i].getDate();
assert.isTrue(previousDate < nextDate);
previousDate = nextDate;
}
});
});
describe("#shrink(n)", function() {
it("should return a collection shrinked to specific number of elements", function() {
var lengthExpected = 3;
var shrinkedCollection = this.daysCollection.shrink(lengthExpected);
assert.equal(lengthExpected, shrinkedCollection.length);
});
it("original collection should remain the same", function() {
var lengthExpected = this.daysCollection.length;
this.daysCollection.shrink(lengthExpected);
assert.equal(lengthExpected, this.daysCollection.length);
});
it("should contain average values on each element", function() {
var lengthExpected = 3;
var shrinkedCollection = this.daysCollection.shrink(lengthExpected);