aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlbuerste <[email protected]>2021-03-02 13:46:53 +0100
committerMarak <[email protected]>2021-03-03 20:14:45 -0500
commitadc8802d093dcee3bf14487f0d3432be77b65b62 (patch)
tree5703e4eabd88cdfe45c3b7c5a0e5b54c9625f057
parent7ad22c2e2aae2f5e6215bcdb91cf3fd28e727d92 (diff)
downloadfaker-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.js22
-rw-r--r--lib/index.js2
-rw-r--r--test/browser.unit.html1
-rw-r--r--test/datatype.unit.js59
-rw-r--r--test/internet.unit.js16
-rw-r--r--test/random.unit.js23
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() {