if (typeof module !== 'undefined') { var assert = require('assert'); var sinon = require('sinon'); var faker = require('../index'); } describe("date.js", function () { describe("past()", function () { it("returns a date N years into the past", function () { var date = faker.date.past(75); assert.ok(date < new Date()); }); it("returns a past date when N = 0", function () { var refDate = new Date(); var date = faker.date.past(0, refDate.toJSON()); assert.ok(date < refDate); // date should be before the date given }); it("returns a date N years before the date given", function () { var refDate = new Date(2120, 11, 9, 10, 0, 0, 0); // set the date beyond the usual calculation (to make sure this is working correctly) var date = faker.date.past(75, refDate.toJSON()); assert.ok(date < refDate && date > new Date()); // date should be before date given but after the current time }); }); describe("future()", function () { it("returns a date N years into the future", function () { var date = faker.date.future(75); assert.ok(date > new Date()); }); it("returns a future date when N = 0", function () { var refDate = new Date(); var date = faker.date.future(0, refDate.toJSON()); assert.ok(date > refDate); // date should be after the date given }); it("returns a date N years after the date given", function () { var refDate = new Date(1880, 11, 9, 10, 0, 0, 0); // set the date beyond the usual calculation (to make sure this is working correctly) var date = faker.date.future(75, refDate.toJSON()); assert.ok(date > refDate && date < new Date()); // date should be after the date given, but before the current time }); }); describe("recent()", function () { it("returns a date N days from the recent past", function () { var date = faker.date.recent(30); assert.ok(date <= new Date()); }); it("returns a date N days from the recent past, starting from refDate", function () { var days = 30; var refDate = new Date(2120, 11, 9, 10, 0, 0, 0); // set the date beyond the usual calculation (to make sure this is working correctly) var date = faker.date.recent(days, refDate); var lowerBound = new Date(refDate.getTime() - (days * 24 * 60 * 60 * 1000)); assert.ok(lowerBound <= date, "`recent()` date should not be further back than `n` days ago"); assert.ok(date <= refDate, "`recent()` date should not be ahead of the starting date reference"); }); }); describe("soon()", function () { it("returns a date N days into the future", function () { var date = faker.date.soon(30); assert.ok(date >= new Date()); }); it("returns a date N days from the recent future, starting from refDate", function () { var days = 30; var refDate = new Date(1880, 11, 9, 10, 0, 0, 0); // set the date beyond the usual calculation (to make sure this is working correctly) var date = faker.date.soon(days, refDate); var upperBound = new Date(refDate.getTime() + (days * 24 * 60 * 60 * 1000)); assert.ok(date <= upperBound, "`soon()` date should not be further ahead than `n` days ago"); assert.ok(refDate <= date, "`soon()` date should not be behind the starting date reference"); }); }); describe("between()", function () { it("returns a random date between the dates given", function () { var from = new Date(1990, 5, 7, 9, 11, 0, 0); var to = new Date(2000, 6, 8, 10, 12, 0, 0); var date = faker.date.between(from, to); assert.ok(date > from && date < to); }); }); describe("betweens()", function () { it("returns an array of 3 dates ( by default ) of sorted randoms dates between the dates given", function () { var from = new Date(1990, 5, 7, 9, 11, 0, 0); var to = new Date(2000, 6, 8, 10, 12, 0, 0); var dates = faker.date.betweens(from, to ); assert.ok(dates[0] > from && dates[0] < to); assert.ok(dates[1] > dates[0] && dates[2] > dates[1]); }); }); describe("month()", function () { it("returns random value from date.month.wide array by default", function () { var month = faker.date.month(); assert.ok(faker.definitions.date.month.wide.indexOf(month) !== -1); }); it("returns random value from date.month.wide_context array for context option", function () { var month = faker.date.month({ context: true }); assert.ok(faker.definitions.date.month.wide_context.indexOf(month) !== -1); }); it("returns random value from date.month.abbr array for abbr option", function () { var month = faker.date.month({ abbr: true }); assert.ok(faker.definitions.date.month.abbr.indexOf(month) !== -1); }); it("returns random value from date.month.abbr_context array for abbr and context option", function () { var month = faker.date.month({ abbr: true, context: true }); assert.ok(faker.definitions.date.month.abbr_context.indexOf(month) !== -1); }); it("returns random value from date.month.wide array for context option when date.month.wide_context array is missing", function () { var backup_wide_context = faker.definitions.date.month.wide_context; faker.definitions.date.month.wide_context = undefined; var month = faker.date.month({ context: true }); assert.ok(faker.definitions.date.month.wide.indexOf(month) !== -1); faker.definitions.date.month.wide_context = backup_wide_context; }); it("returns random value from date.month.abbr array for abbr and context option when date.month.abbr_context array is missing", function () { var backup_abbr_context = faker.definitions.date.month.abbr_context; faker.definitions.date.month.abbr_context = undefined; var month = faker.date.month({ abbr: true, context: true }); assert.ok(faker.definitions.date.month.abbr.indexOf(month) !== -1); faker.definitions.date.month.abbr_context = backup_abbr_context; }); }); describe("weekday()", function () { it("returns random value from date.weekday.wide array by default", function () { var weekday = faker.date.weekday(); assert.ok(faker.definitions.date.weekday.wide.indexOf(weekday) !== -1); }); it("returns random value from date.weekday.wide_context array for context option", function () { var weekday = faker.date.weekday({ context: true }); assert.ok(faker.definitions.date.weekday.wide_context.indexOf(weekday) !== -1); }); it("returns random value from date.weekday.abbr array for abbr option", function () { var weekday = faker.date.weekday({ abbr: true }); assert.ok(faker.definitions.date.weekday.abbr.indexOf(weekday) !== -1); }); it("returns random value from date.weekday.abbr_context array for abbr and context option", function () { var weekday = faker.date.weekday({ abbr: true, context: true }); assert.ok(faker.definitions.date.weekday.abbr_context.indexOf(weekday) !== -1); }); it("returns random value from date.weekday.wide array for context option when date.weekday.wide_context array is missing", function () { var backup_wide_context = faker.definitions.date.weekday.wide_context; faker.definitions.date.weekday.wide_context = undefined; var weekday = faker.date.weekday({ context: true }); assert.ok(faker.definitions.date.weekday.wide.indexOf(weekday) !== -1); faker.definitions.date.weekday.wide_context = backup_wide_context; }); it("returns random value from date.weekday.abbr array for abbr and context option when date.weekday.abbr_context array is missing", function () { var backup_abbr_context = faker.definitions.date.weekday.abbr_context; faker.definitions.date.weekday.abbr_context = undefined; var weekday = faker.date.weekday({ abbr: true, context: true }); assert.ok(faker.definitions.date.weekday.abbr.indexOf(weekday) !== -1); faker.definitions.date.weekday.abbr_context = backup_abbr_context; }); }); });