diff options
| author | lbuerste <[email protected]> | 2021-03-02 13:46:53 +0100 |
|---|---|---|
| committer | Marak <[email protected]> | 2021-03-03 20:14:45 -0500 |
| commit | adc8802d093dcee3bf14487f0d3432be77b65b62 (patch) | |
| tree | 5703e4eabd88cdfe45c3b7c5a0e5b54c9625f057 | |
| parent | 7ad22c2e2aae2f5e6215bcdb91cf3fd28e727d92 (diff) | |
| download | faker-adc8802d093dcee3bf14487f0d3432be77b65b62.tar.xz faker-adc8802d093dcee3bf14487f0d3432be77b65b62.zip | |
Issue 1114: new datatypes module
Current status:
- moved tests with seeding problem back to random.unit
- implemented date method
- added datatype module to seed funtion
- added tests for date method
| -rw-r--r-- | lib/datatype.js | 22 | ||||
| -rw-r--r-- | lib/index.js | 2 | ||||
| -rw-r--r-- | test/browser.unit.html | 1 | ||||
| -rw-r--r-- | test/datatype.unit.js | 59 | ||||
| -rw-r--r-- | test/internet.unit.js | 16 | ||||
| -rw-r--r-- | test/random.unit.js | 23 |
6 files changed, 83 insertions, 40 deletions
diff --git a/lib/datatype.js b/lib/datatype.js index fba728ab..b7526907 100644 --- a/lib/datatype.js +++ b/lib/datatype.js @@ -84,8 +84,26 @@ function Datatype (faker, seed) { *
* @method faker.datatype.date
*/
- this.date = function () {
- var random = faker.datatype.number({ min: 0, max: 8600000000000000 });
+ this.date = function (options) {
+ if (typeof options === "number") {
+ options = {
+ max: options
+ };
+ }
+
+ var minMax = 8640000000000000;
+
+ options = options || {};
+
+ if (typeof options.min === "undefined" || options.min < minMax*-1) {
+ options.min = new Date().setFullYear(1990, 1, 1);
+ }
+
+ if (typeof options.max === "undefined" || options.max > minMax) {
+ options.max = new Date().setFullYear(2100,1,1);
+ }
+
+ var random = faker.datatype.number(options);
return new Date(random);
};
diff --git a/lib/index.js b/lib/index.js index 1f2ab0c5..cd1bede3 100644 --- a/lib/index.js +++ b/lib/index.js @@ -163,7 +163,9 @@ Faker.prototype.setLocale = function (locale) { Faker.prototype.seed = function(value) { var Random = require('./random'); + var Datatype = require('./datatype'); this.seedValue = value; this.random = new Random(this, this.seedValue); + this.datatype = new Datatype(this, this.seedValue); } module['exports'] = Faker; diff --git a/test/browser.unit.html b/test/browser.unit.html index 467f35ce..d01126d0 100644 --- a/test/browser.unit.html +++ b/test/browser.unit.html @@ -18,6 +18,7 @@ <script src="helpers.unit.js"></script> <script src="internet.unit.js"></script> <script src="database.unit.js"></script> + <script src="datatype.unit.js"></script> <script src="lorem.unit.js"></script> <script src="name.unit.js"></script> <script src="phone_number.unit.js"></script> diff --git a/test/datatype.unit.js b/test/datatype.unit.js index 7300d26f..a0a6a281 100644 --- a/test/datatype.unit.js +++ b/test/datatype.unit.js @@ -80,30 +80,6 @@ describe("datatype.js", function () { assert.strictEqual(opts.max, max);
});
- it('should return deterministic results when seeded with integer', function() {
- faker.seed(100);
- var name = faker.name.findName();
- assert.strictEqual(name, 'Eva Jenkins');
- })
-
- it('should return deterministic results when seeded with 0', function() {
- faker.seed(0);
- var name = faker.name.findName();
- assert.strictEqual(name, 'Lola Sporer');
- })
-
- it('should return deterministic results when seeded with array - one element', function() {
- faker.seed([10]);
- var name = faker.name.findName();
- assert.strictEqual(name, 'Duane Kub');
- })
-
- it('should return deterministic results when seeded with array - multiple elements', function() {
- faker.seed([10, 100, 1000]);
- var name = faker.name.findName();
- assert.strictEqual(name, 'Alma Shanahan');
- })
-
});
describe("float", function() {
@@ -183,6 +159,29 @@ describe("datatype.js", function () { });
});
+ describe('date', function (){
+ it('check validity of date and if returned value is created by Date()', function (){
+ var date = faker.datatype.date();
+ assert.ok(typeof date == 'object');
+ assert.ok(!isNaN(date.getTime()));
+ assert.ok(Object.prototype.toString.call(date) === "[object Date]");
+ });
+ it('basic test with stubed value', function (){
+ var today = new Date();
+ sinon.stub(faker.datatype, 'number').returns(today);
+ var date = faker.datatype.date();
+ assert.ok(today.valueOf() === date.valueOf());
+ faker.datatype.number.restore();
+ });
+ it('check if date works with seeding', function (){
+ faker.seed(100);
+ var date = faker.datatype.date();
+ var dateVal = date.valueOf();
+ console.log(dateVal);
+ assert.ok(dateVal === 2520186296319)
+ });
+ });
+
describe('boolean', function() {
it('should generate a boolean value', function() {
var bool = faker.datatype.boolean();
@@ -195,8 +194,8 @@ describe("datatype.js", function () { var UUID = faker.datatype.uuid();
var RFC4122 = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
assert.ok(RFC4122.test(UUID));
- })
- })
+ });
+ });
describe('hexaDecimal', function() {
var hexaDecimal = faker.datatype.hexaDecimal;
@@ -204,11 +203,11 @@ describe("datatype.js", function () { it('should generate single hex character when no additional argument was provided', function() {
var hex = hexaDecimal();
assert.ok(hex.match(/^(0x)[0-9a-f]{1}$/i));
- })
+ });
it('should generate a random hex string', function() {
var hex = hexaDecimal(5);
assert.ok(hex.match(/^(0x)[0-9a-f]+$/i));
- })
- })
-})
\ No newline at end of file + });
+ });
+});
\ No newline at end of file diff --git a/test/internet.unit.js b/test/internet.unit.js index cceaacc8..48006472 100644 --- a/test/internet.unit.js +++ b/test/internet.unit.js @@ -43,19 +43,19 @@ describe("internet.js", function () { describe("userName()", function () { it("occasionally returns a single firstName", function () { - sinon.stub(faker.random, 'number').returns(0); + sinon.stub(faker.datatype, 'number').returns(0); sinon.spy(faker.name, 'firstName'); var username = faker.internet.userName(); assert.ok(username); assert.ok(faker.name.firstName.called); - faker.random.number.restore(); + faker.datatype.number.restore(); faker.name.firstName.restore(); }); it("occasionally returns a firstName with a period or hyphen and a lastName", function () { - sinon.stub(faker.random, 'number').returns(1); + sinon.stub(faker.datatype, 'number').returns(1); sinon.spy(faker.name, 'firstName'); sinon.spy(faker.name, 'lastName'); sinon.spy(faker.random, 'arrayElement'); @@ -66,7 +66,7 @@ describe("internet.js", function () { assert.ok(faker.name.lastName.called); assert.ok(faker.random.arrayElement.calledWith(['.', '_'])); - faker.random.number.restore(); + faker.datatype.number.restore(); faker.name.firstName.restore(); faker.name.lastName.restore(); faker.random.arrayElement.restore(); @@ -116,21 +116,21 @@ describe("internet.js", function () { }); it('should occasionally return http', function () { - sinon.stub(faker.random, 'number').returns(0); + sinon.stub(faker.datatype, 'number').returns(0); var protocol = faker.internet.protocol(); assert.ok(protocol); assert.strictEqual(protocol, 'http'); - faker.random.number.restore(); + faker.datatype.number.restore(); }); it('should occasionally return https', function () { - sinon.stub(faker.random, 'number').returns(1); + sinon.stub(faker.datatype, 'number').returns(1); var protocol = faker.internet.protocol(); assert.ok(protocol); assert.strictEqual(protocol, 'https'); - faker.random.number.restore(); + faker.datatype.number.restore(); }); }); diff --git a/test/random.unit.js b/test/random.unit.js index 28675c31..06b9186b 100644 --- a/test/random.unit.js +++ b/test/random.unit.js @@ -18,6 +18,29 @@ describe("random.js", function () { faker.datatype.number.restore() console.log.restore(); }); + it('should return deterministic results when seeded with integer', function() { + faker.seed(100); + var name = faker.name.findName(); + assert.strictEqual(name, 'Eva Jenkins'); + }) + + it('should return deterministic results when seeded with 0', function() { + faker.seed(0); + var name = faker.name.findName(); + assert.strictEqual(name, 'Lola Sporer'); + }) + + it('should return deterministic results when seeded with array - one element', function() { + faker.seed([10]); + var name = faker.name.findName(); + assert.strictEqual(name, 'Duane Kub'); + }) + + it('should return deterministic results when seeded with array - multiple elements', function() { + faker.seed([10, 100, 1000]); + var name = faker.name.findName(); + assert.strictEqual(name, 'Alma Shanahan'); + }) }); describe("float", function() { |
