diff options
| author | LBuerstmayr <[email protected]> | 2021-03-01 22:46:26 +0100 |
|---|---|---|
| committer | Marak <[email protected]> | 2021-03-03 20:14:45 -0500 |
| commit | 7ad22c2e2aae2f5e6215bcdb91cf3fd28e727d92 (patch) | |
| tree | 03941188e92583a105c8ef17fde438fb1b52bdcf /test | |
| parent | 58c61afb1b8baa160add593e5af7c110de011968 (diff) | |
| download | faker-7ad22c2e2aae2f5e6215bcdb91cf3fd28e727d92.tar.xz faker-7ad22c2e2aae2f5e6215bcdb91cf3fd28e727d92.zip | |
Issue 1114: New datatype module
Current status:
- moved number(), float(), hexaDecimal(), boolean(), uuid() from random to datatype
- moved respective test from random.unit to datatype.unit
- tests of moved methods in random now check if DeprecationWarning is printed and respective method in datatype module is called
- adapted all lib files that use moved methods (mostly number)
- adapted tests of respective files to spy on the correct method
- adapted README in order to promote usage of method that logs a DeprecationWarning
Diffstat (limited to 'test')
| -rw-r--r-- | test/address.unit.js | 66 | ||||
| -rw-r--r-- | test/company.unit.js | 12 | ||||
| -rw-r--r-- | test/datatype.unit.js | 214 | ||||
| -rw-r--r-- | test/finance.unit.js | 4 | ||||
| -rw-r--r-- | test/git.unit.js | 6 | ||||
| -rw-r--r-- | test/helpers.unit.js | 6 | ||||
| -rw-r--r-- | test/name.unit.js | 20 | ||||
| -rw-r--r-- | test/random.unit.js | 227 |
8 files changed, 313 insertions, 242 deletions
diff --git a/test/address.unit.js b/test/address.unit.js index 5b56266c..0306f4f1 100644 --- a/test/address.unit.js +++ b/test/address.unit.js @@ -14,7 +14,7 @@ describe("address.js", function () { }); afterEach(function () { - faker.random.number.restore(); + faker.datatype.number.restore(); faker.address.cityPrefix.restore(); faker.name.firstName.restore(); faker.name.lastName.restore(); @@ -22,7 +22,7 @@ describe("address.js", function () { }); it("occasionally returns prefix + first name + suffix", function () { - sinon.stub(faker.random, 'number').returns(0); + sinon.stub(faker.datatype, 'number').returns(0); var city = faker.address.city(); assert.ok(city); @@ -33,7 +33,7 @@ describe("address.js", function () { }); it("occasionally returns prefix + first name", function () { - sinon.stub(faker.random, 'number').returns(1); + sinon.stub(faker.datatype, 'number').returns(1); var city = faker.address.city(); assert.ok(city); @@ -43,7 +43,7 @@ describe("address.js", function () { }); it("occasionally returns first name + suffix", function () { - sinon.stub(faker.random, 'number').returns(2); + sinon.stub(faker.datatype, 'number').returns(2); var city = faker.address.city(); assert.ok(city); @@ -52,7 +52,7 @@ describe("address.js", function () { }); it("occasionally returns last name + suffix", function () { - sinon.stub(faker.random, 'number').returns(3); + sinon.stub(faker.datatype, 'number').returns(3); var city = faker.address.city(); assert.ok(city); @@ -79,7 +79,7 @@ describe("address.js", function () { }); it("occasionally returns last name + suffix", function () { - sinon.stub(faker.random, 'number').returns(0); + sinon.stub(faker.datatype, 'number').returns(0); var street_name = faker.address.streetName(); assert.ok(street_name); @@ -87,11 +87,11 @@ describe("address.js", function () { assert.ok(faker.name.lastName.calledOnce); assert.ok(faker.address.streetSuffix.calledOnce); - faker.random.number.restore(); + faker.datatype.number.restore(); }); it("occasionally returns first name + suffix", function () { - sinon.stub(faker.random, 'number').returns(1); + sinon.stub(faker.datatype, 'number').returns(1); var street_name = faker.address.streetName(); assert.ok(street_name); @@ -100,7 +100,7 @@ describe("address.js", function () { assert.ok(!faker.name.lastName.called); assert.ok(faker.address.streetSuffix.calledOnce); - faker.random.number.restore(); + faker.datatype.number.restore(); }); it("trims trailing whitespace from the name", function() { @@ -131,7 +131,7 @@ describe("address.js", function () { }); it("occasionally returns a 5-digit street number", function () { - sinon.stub(faker.random, 'number').returns(0); + sinon.stub(faker.datatype, 'number').returns(0); var address = faker.address.streetAddress(); var expected = 5 var parts = address.split(' '); @@ -139,11 +139,11 @@ describe("address.js", function () { assert.strictEqual(parts[0].length, expected, errorExpectDigits(expected)); assert.ok(faker.address.streetName.called); - faker.random.number.restore(); + faker.datatype.number.restore(); }); it("occasionally returns a 4-digit street number", function () { - sinon.stub(faker.random, 'number').returns(1); + sinon.stub(faker.datatype, 'number').returns(1); var address = faker.address.streetAddress(); var parts = address.split(' '); var expected = 4 @@ -151,11 +151,11 @@ describe("address.js", function () { assert.strictEqual(parts[0].length, expected, errorExpectDigits(expected)); assert.ok(faker.address.streetName.called); - faker.random.number.restore(); + faker.datatype.number.restore(); }); it("occasionally returns a 3-digit street number", function () { - sinon.stub(faker.random, 'number').returns(2); + sinon.stub(faker.datatype, 'number').returns(2); var address = faker.address.streetAddress(); var parts = address.split(' '); var expected = 3 @@ -164,7 +164,7 @@ describe("address.js", function () { assert.ok(faker.address.streetName.called); assert.ok(!faker.address.secondaryAddress.called); - faker.random.number.restore(); + faker.datatype.number.restore(); }); context("when useFulladdress is true", function () { @@ -307,42 +307,42 @@ describe("address.js", function () { describe("latitude()", function () { it("returns random latitude", function () { for (var i = 0; i < 100; i++) { - sinon.spy(faker.random, 'number'); + sinon.spy(faker.datatype, 'number'); var latitude = faker.address.latitude(); assert.ok(typeof latitude === 'string'); var latitude_float = parseFloat(latitude); assert.ok(latitude_float >= -90.0); assert.ok(latitude_float <= 90.0); - assert.ok(faker.random.number.called); - faker.random.number.restore(); + assert.ok(faker.datatype.number.called); + faker.datatype.number.restore(); } }); it("returns latitude with min and max and default precision", function () { for (var i = 0; i < 100; i++) { - sinon.spy(faker.random, 'number'); + sinon.spy(faker.datatype, 'number'); var latitude = faker.address.latitude(-5, 5); assert.ok(typeof latitude === 'string'); assert.strictEqual(latitude.split('.')[1].length, 4, "The precision of latitude should be had of 4 digits"); var latitude_float = parseFloat(latitude); assert.ok(latitude_float >= -5); assert.ok(latitude_float <= 5); - assert.ok(faker.random.number.called); - faker.random.number.restore(); + assert.ok(faker.datatype.number.called); + faker.datatype.number.restore(); } }); it("returns random latitude with custom precision", function () { for (var i = 0; i < 100; i++) { - sinon.spy(faker.random, 'number'); + sinon.spy(faker.datatype, 'number'); var latitude = faker.address.latitude(undefined, undefined, 7); assert.ok(typeof latitude === 'string'); assert.strictEqual(latitude.split('.')[1].length, 7, "The precision of latitude should be had of 7 digits"); var latitude_float = parseFloat(latitude); assert.ok(latitude_float >= -180); assert.ok(latitude_float <= 180); - assert.ok(faker.random.number.called); - faker.random.number.restore(); + assert.ok(faker.datatype.number.called); + faker.datatype.number.restore(); } }); }); @@ -350,42 +350,42 @@ describe("address.js", function () { describe("longitude()", function () { it("returns random longitude", function () { for (var i = 0; i < 100; i++) { - sinon.spy(faker.random, 'number'); + sinon.spy(faker.datatype, 'number'); var longitude = faker.address.longitude(); assert.ok(typeof longitude === 'string'); var longitude_float = parseFloat(longitude); assert.ok(longitude_float >= -180.0); assert.ok(longitude_float <= 180.0); - assert.ok(faker.random.number.called); - faker.random.number.restore(); + assert.ok(faker.datatype.number.called); + faker.datatype.number.restore(); } }); it("returns random longitude with min and max and default precision", function () { for (var i = 0; i < 100; i++) { - sinon.spy(faker.random, 'number'); + sinon.spy(faker.datatype, 'number'); var longitude = faker.address.longitude(100, -30); assert.ok(typeof longitude === 'string'); assert.strictEqual(longitude.split('.')[1].length, 4, "The precision of longitude should be had of 4 digits"); var longitude_float = parseFloat(longitude); assert.ok(longitude_float >= -30); assert.ok(longitude_float <= 100); - assert.ok(faker.random.number.called); - faker.random.number.restore(); + assert.ok(faker.datatype.number.called); + faker.datatype.number.restore(); } }); it("returns random longitude with custom precision", function () { for (var i = 0; i < 100; i++) { - sinon.spy(faker.random, 'number'); + sinon.spy(faker.datatype, 'number'); var longitude = faker.address.longitude(undefined, undefined, 7); assert.ok(typeof longitude === 'string'); assert.strictEqual(longitude.split('.')[1].length, 7, "The precision of longitude should be had of 7 digits"); var longitude_float = parseFloat(longitude); assert.ok(longitude_float >= -180); assert.ok(longitude_float <= 180); - assert.ok(faker.random.number.called); - faker.random.number.restore(); + assert.ok(faker.datatype.number.called); + faker.datatype.number.restore(); } }); }); diff --git a/test/company.unit.js b/test/company.unit.js index 06292b35..df8b5a2c 100644 --- a/test/company.unit.js +++ b/test/company.unit.js @@ -9,34 +9,34 @@ describe("company.js", function () { it("sometimes returns three last names", function () { sinon.spy(faker.name, 'lastName'); - sinon.stub(faker.random, 'number').returns(2); + sinon.stub(faker.datatype, 'number').returns(2); var name = faker.company.companyName(); var parts = name.split(' '); assert.strictEqual(parts.length, 4); // account for word 'and' assert.ok(faker.name.lastName.calledThrice); - faker.random.number.restore(); + faker.datatype.number.restore(); faker.name.lastName.restore(); }); it("sometimes returns two last names separated by a hyphen", function () { sinon.spy(faker.name, 'lastName'); - sinon.stub(faker.random, 'number').returns(1); + sinon.stub(faker.datatype, 'number').returns(1); var name = faker.company.companyName(); var parts = name.split('-'); assert.ok(parts.length >= 2); assert.ok(faker.name.lastName.calledTwice); - faker.random.number.restore(); + faker.datatype.number.restore(); faker.name.lastName.restore(); }); it("sometimes returns a last name with a company suffix", function () { sinon.spy(faker.company, 'companySuffix'); sinon.spy(faker.name, 'lastName'); - sinon.stub(faker.random, 'number').returns(0); + sinon.stub(faker.datatype, 'number').returns(0); var name = faker.company.companyName(); var parts = name.split(' '); @@ -44,7 +44,7 @@ describe("company.js", function () { assert.ok(faker.name.lastName.calledOnce); assert.ok(faker.company.companySuffix.calledOnce); - faker.random.number.restore(); + faker.datatype.number.restore(); faker.name.lastName.restore(); faker.company.companySuffix.restore(); }); diff --git a/test/datatype.unit.js b/test/datatype.unit.js new file mode 100644 index 00000000..7300d26f --- /dev/null +++ b/test/datatype.unit.js @@ -0,0 +1,214 @@ +if (typeof module !== 'undefined') {
+ var assert = require('assert');
+ var sinon = require('sinon');
+ var _ = require('lodash');
+ var faker = require('../index');
+ var mersenne = require('../vendor/mersenne');
+}
+
+
+describe("datatype.js", function () {
+
+ describe("number", function() {
+
+ it("returns a random number given a maximum value as Number", function() {
+ var max = 10;
+ assert.ok(faker.datatype.number(max) <= max);
+ });
+
+ it("returns a random number given a maximum value as Object", function() {
+ var options = { max: 10 };
+ assert.ok(faker.datatype.number(options) <= options.max);
+ });
+
+ it("returns a random number given a maximum value of 0", function() {
+ var options = { max: 0 };
+ assert.ok(faker.datatype.number(options) === 0);
+ });
+
+ it("returns a random number given a negative number minimum and maximum value of 0", function() {
+ var options = { min: -100, max: 0 };
+ assert.ok(faker.datatype.number(options) <= options.max);
+ });
+
+ it("returns a random number between a range", function() {
+ var options = { min: 22, max: 33 };
+ for(var i = 0; i < 100; i++) {
+ var randomNumber = faker.datatype.number(options);
+ assert.ok(randomNumber >= options.min);
+ assert.ok(randomNumber <= options.max);
+ }
+ });
+
+ it("provides numbers with a given precision", function() {
+ var options = { min: 0, max: 1.5, precision: 0.5 };
+ var results = _.chain(_.range(50))
+ .map(function() {
+ return faker.datatype.number(options);
+ })
+ .uniq()
+ .value()
+ .sort();
+
+ assert.ok(_.includes(results, 0.5));
+ assert.ok(_.includes(results, 1.0));
+
+ assert.strictEqual(results[0], 0);
+ assert.strictEqual(_.last(results), 1.5);
+
+ });
+
+ it("provides numbers with a with exact precision", function() {
+ var options = { min: 0.5, max: 0.99, precision: 0.01 };
+ for(var i = 0; i < 100; i++) {
+ var number = faker.datatype.number(options);
+ assert.strictEqual(number, Number(number.toFixed(2)));
+ }
+ });
+
+ it("should not modify the input object", function() {
+ var min = 1;
+ var max = 2;
+ var opts = {
+ min: min,
+ max: max
+ };
+
+ faker.datatype.number(opts);
+
+ assert.strictEqual(opts.min, min);
+ 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() {
+
+ it("returns a random float with a default precision value (0.01)", function() {
+ var number = faker.datatype.float();
+ assert.strictEqual(number, Number(number.toFixed(2)));
+ });
+
+ it("returns a random float given a precision value", function() {
+ var number = faker.datatype.float(0.001);
+ assert.strictEqual(number, Number(number.toFixed(3)));
+ });
+
+ it("returns a random number given a maximum value as Object", function() {
+ var options = { max: 10 };
+ assert.ok(faker.datatype.float(options) <= options.max);
+ });
+
+ it("returns a random number given a maximum value of 0", function() {
+ var options = { max: 0 };
+ assert.ok(faker.datatype.float(options) === 0);
+ });
+
+ it("returns a random number given a negative number minimum and maximum value of 0", function() {
+ var options = { min: -100, max: 0 };
+ assert.ok(faker.datatype.float(options) <= options.max);
+ });
+
+ it("returns a random number between a range", function() {
+ var options = { min: 22, max: 33 };
+ for(var i = 0; i < 5; i++) {
+ var randomNumber = faker.datatype.float(options);
+ assert.ok(randomNumber >= options.min);
+ assert.ok(randomNumber <= options.max);
+ }
+ });
+
+ it("provides numbers with a given precision", function() {
+ var options = { min: 0, max: 1.5, precision: 0.5 };
+ var results = _.chain(_.range(50))
+ .map(function() {
+ return faker.datatype.float(options);
+ })
+ .uniq()
+ .value()
+ .sort();
+
+ assert.ok(_.includes(results, 0.5));
+ assert.ok(_.includes(results, 1.0));
+
+ assert.strictEqual(results[0], 0);
+ assert.strictEqual(_.last(results), 1.5);
+
+ });
+
+ it("provides numbers with a with exact precision", function() {
+ var options = { min: 0.5, max: 0.99, precision: 0.01 };
+ for(var i = 0; i < 100; i++) {
+ var number = faker.datatype.float(options);
+ assert.strictEqual(number, Number(number.toFixed(2)));
+ }
+ });
+
+ it("should not modify the input object", function() {
+ var min = 1;
+ var max = 2;
+ var opts = {
+ min: min,
+ max: max
+ };
+
+ faker.datatype.float(opts);
+
+ assert.strictEqual(opts.min, min);
+ assert.strictEqual(opts.max, max);
+ });
+ });
+
+ describe('boolean', function() {
+ it('should generate a boolean value', function() {
+ var bool = faker.datatype.boolean();
+ assert.ok(typeof bool == 'boolean');
+ });
+ });
+
+ describe('UUID', function() {
+ it('should generate a valid UUID', 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;
+
+ 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 diff --git a/test/finance.unit.js b/test/finance.unit.js index 47c457c9..aa617d0a 100644 --- a/test/finance.unit.js +++ b/test/finance.unit.js @@ -85,7 +85,7 @@ describe('finance.js', function () { it("should set a specified length", function () { - var expected = faker.random.number(20); + var expected = faker.datatype.number(20); expected = (expected == 0 || !expected || typeof expected == 'undefined') ? 4 : expected; @@ -138,7 +138,7 @@ describe('finance.js', function () { it("should work when random variables are passed into the arguments", function () { - var length = faker.random.number(20); + var length = faker.datatype.number(20); var ellipsis = (length % 2 === 0) ? true : false; var parens = !ellipsis; diff --git a/test/git.unit.js b/test/git.unit.js index df86be0b..46e25724 100644 --- a/test/git.unit.js +++ b/test/git.unit.js @@ -31,7 +31,7 @@ describe("git.js", function() { sinon.spy(faker.internet, 'email'); sinon.spy(faker.name, 'firstName'); sinon.spy(faker.name, 'lastName'); - sinon.spy(faker.random, 'number'); + sinon.spy(faker.datatype, 'number'); }); afterEach(function() { @@ -40,13 +40,13 @@ describe("git.js", function() { faker.internet.email.restore(); faker.name.firstName.restore(); faker.name.lastName.restore(); - faker.random.number.restore(); + faker.datatype.number.restore(); }); it("returns merge entry at random", function() { faker.git.commitEntry(); - assert.ok(faker.random.number.called); + assert.ok(faker.datatype.number.called); }); it("returns a commit entry with git commit message and sha", function() { diff --git a/test/helpers.unit.js b/test/helpers.unit.js index 5bbe0fcc..7436da03 100644 --- a/test/helpers.unit.js +++ b/test/helpers.unit.js @@ -32,11 +32,11 @@ describe("helpers.js", function () { describe("shuffle()", function () { it("the output is the same length as the input", function () { - sinon.spy(faker.random, 'number'); + sinon.spy(faker.datatype, 'number'); var shuffled = faker.helpers.shuffle(["a", "b"]); assert.ok(shuffled.length === 2); - assert.ok(faker.random.number.calledWith(1)); - faker.random.number.restore(); + assert.ok(faker.datatype.number.calledWith(1)); + faker.datatype.number.restore(); }); it("empty array returns empty array", function () { diff --git a/test/name.unit.js b/test/name.unit.js index 40291d2b..89d7effa 100644 --- a/test/name.unit.js +++ b/test/name.unit.js @@ -99,28 +99,28 @@ describe("name.js", function () { describe("findName()", function () { it("usually returns a first name and last name", function () { - sinon.stub(faker.random, 'number').returns(5); + sinon.stub(faker.datatype, 'number').returns(5); var name = faker.name.findName(); assert.ok(name); var parts = name.split(' '); assert.strictEqual(parts.length, 2); - faker.random.number.restore(); + faker.datatype.number.restore(); }); it("occasionally returns a first name and last name with a prefix", function () { - sinon.stub(faker.random, 'number').returns(0); + sinon.stub(faker.datatype, 'number').returns(0); var name = faker.name.findName(); var parts = name.split(' '); assert.ok(parts.length >= 3); - faker.random.number.restore(); + faker.datatype.number.restore(); }); it("occasionally returns a male full name with a prefix", function () { - sinon.stub(faker.random, 'number') + sinon.stub(faker.datatype, 'number') .withArgs(8).returns(0) // with prefix .withArgs(1).returns(0); // gender male @@ -132,14 +132,14 @@ describe("name.js", function () { assert.strictEqual(name, 'X Y Z'); - faker.random.number.restore(); + faker.datatype.number.restore(); faker.name.prefix.restore(); faker.name.firstName.restore(); faker.name.lastName.restore(); }); it("occasionally returns a female full name with a prefix", function () { - sinon.stub(faker.random, 'number') + sinon.stub(faker.datatype, 'number') .withArgs(8).returns(0) // with prefix .withArgs(1).returns(1); // gender female @@ -151,14 +151,14 @@ describe("name.js", function () { assert.strictEqual(name, 'J K L'); - faker.random.number.restore(); + faker.datatype.number.restore(); faker.name.prefix.restore(); faker.name.firstName.restore(); faker.name.lastName.restore(); }); it("occasionally returns a first name and last name with a suffix", function () { - sinon.stub(faker.random, 'number').returns(1); + sinon.stub(faker.datatype, 'number').returns(1); sinon.stub(faker.name, 'suffix').returns('Jr.'); var name = faker.name.findName(); var parts = name.split(' '); @@ -167,7 +167,7 @@ describe("name.js", function () { assert.strictEqual(parts[parts.length-1], 'Jr.'); faker.name.suffix.restore(); - faker.random.number.restore(); + faker.datatype.number.restore(); }); it("needs to work with specific locales and respect the fallbacks", function () { diff --git a/test/random.unit.js b/test/random.unit.js index e068c905..28675c31 100644 --- a/test/random.unit.js +++ b/test/random.unit.js @@ -9,176 +9,26 @@ if (typeof module !== 'undefined') { describe("random.js", function () { describe("number", function() { - - it("returns a random number given a maximum value as Number", function() { - var max = 10; - assert.ok(faker.random.number(max) <= max); - }); - - it("returns a random number given a maximum value as Object", function() { - var options = { max: 10 }; - assert.ok(faker.random.number(options) <= options.max); + it("random.number() uses datatype module and prints deprecation warning", function() { + sinon.spy(console, 'log') + sinon.spy(faker.datatype, 'number'); + faker.random.number(); + assert.ok(faker.datatype.number.called); + assert.ok(console.log.calledWith('DeprecationWarning: Method is now located in faker.datatype.number')); + faker.datatype.number.restore() + console.log.restore(); }); - - it("returns a random number given a maximum value of 0", function() { - var options = { max: 0 }; - assert.ok(faker.random.number(options) === 0); - }); - - it("returns a random number given a negative number minimum and maximum value of 0", function() { - var options = { min: -100, max: 0 }; - assert.ok(faker.random.number(options) <= options.max); - }); - - it("returns a random number between a range", function() { - var options = { min: 22, max: 33 }; - for(var i = 0; i < 100; i++) { - var randomNumber = faker.random.number(options); - assert.ok(randomNumber >= options.min); - assert.ok(randomNumber <= options.max); - } - }); - - it("provides numbers with a given precision", function() { - var options = { min: 0, max: 1.5, precision: 0.5 }; - var results = _.chain(_.range(50)) - .map(function() { - return faker.random.number(options); - }) - .uniq() - .value() - .sort(); - - assert.ok(_.includes(results, 0.5)); - assert.ok(_.includes(results, 1.0)); - - assert.strictEqual(results[0], 0); - assert.strictEqual(_.last(results), 1.5); - - }); - - it("provides numbers with a with exact precision", function() { - var options = { min: 0.5, max: 0.99, precision: 0.01 }; - for(var i = 0; i < 100; i++) { - var number = faker.random.number(options); - assert.strictEqual(number, Number(number.toFixed(2))); - } - }); - - it("should not modify the input object", function() { - var min = 1; - var max = 2; - var opts = { - min: min, - max: max - }; - - faker.random.number(opts); - - assert.strictEqual(opts.min, min); - 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() { - - it("returns a random float with a default precision value (0.01)", function() { - var number = faker.random.float(); - assert.strictEqual(number, Number(number.toFixed(2))); - }); - - it("returns a random float given a precision value", function() { - var number = faker.random.float(0.001); - assert.strictEqual(number, Number(number.toFixed(3))); - }); - - it("returns a random number given a maximum value as Object", function() { - var options = { max: 10 }; - assert.ok(faker.random.float(options) <= options.max); - }); - - it("returns a random number given a maximum value of 0", function() { - var options = { max: 0 }; - assert.ok(faker.random.float(options) === 0); - }); - - it("returns a random number given a negative number minimum and maximum value of 0", function() { - var options = { min: -100, max: 0 }; - assert.ok(faker.random.float(options) <= options.max); - }); - - it("returns a random number between a range", function() { - var options = { min: 22, max: 33 }; - for(var i = 0; i < 5; i++) { - var randomNumber = faker.random.float(options); - assert.ok(randomNumber >= options.min); - assert.ok(randomNumber <= options.max); - } - }); - - it("provides numbers with a given precision", function() { - var options = { min: 0, max: 1.5, precision: 0.5 }; - var results = _.chain(_.range(50)) - .map(function() { - return faker.random.float(options); - }) - .uniq() - .value() - .sort(); - - assert.ok(_.includes(results, 0.5)); - assert.ok(_.includes(results, 1.0)); - - assert.strictEqual(results[0], 0); - assert.strictEqual(_.last(results), 1.5); - - }); - - it("provides numbers with a with exact precision", function() { - var options = { min: 0.5, max: 0.99, precision: 0.01 }; - for(var i = 0; i < 100; i++) { - var number = faker.random.float(options); - assert.strictEqual(number, Number(number.toFixed(2))); - } - }); - - it("should not modify the input object", function() { - var min = 1; - var max = 2; - var opts = { - min: min, - max: max - }; - - faker.random.float(opts); - - assert.strictEqual(opts.min, min); - assert.strictEqual(opts.max, max); + it("random.float() uses datatype module and prints deprecation warning", function() { + sinon.spy(console, 'log') + sinon.spy(faker.datatype, 'float'); + faker.random.float(); + assert.ok(faker.datatype.float.called); + assert.ok(console.log.calledWith('DeprecationWarning: Method is now located in faker.datatype.float')); + faker.datatype.float.restore() + console.log.restore(); }); }); @@ -235,17 +85,26 @@ describe("random.js", function () { }); describe('UUID', function() { - it('should generate a valid UUID', function() { - var UUID = faker.random.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)); - }) + it("random.uuid() uses datatype module and prints deprecation warning", function() { + sinon.spy(console, 'log') + sinon.spy(faker.datatype, 'uuid'); + faker.random.uuid(); + assert.ok(faker.datatype.uuid.called); + assert.ok(console.log.calledWith('DeprecationWarning: Method is now located in faker.datatype.uuid')); + faker.datatype.uuid.restore() + console.log.restore(); + }); }) describe('boolean', function() { - it('should generate a boolean value', function() { - var bool = faker.random.boolean(); - assert.ok(typeof bool == 'boolean'); + it("random.boolean() uses datatype module and prints deprecation warning", function() { + sinon.spy(console, 'log') + sinon.spy(faker.datatype, 'boolean'); + faker.random.boolean(); + assert.ok(faker.datatype.boolean.called); + assert.ok(console.log.calledWith('DeprecationWarning: Method is now located in faker.datatype.boolean')); + faker.datatype.boolean.restore() + console.log.restore(); }); }); @@ -316,17 +175,15 @@ describe("random.js", function () { }); describe('hexaDecimal', function() { - var hexaDecimal = faker.random.hexaDecimal; - - 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)); - }) + it("random.hexaDecimal() uses datatype module and prints deprecation warning", function() { + sinon.spy(console, 'log') + sinon.spy(faker.datatype, 'hexaDecimal'); + faker.random.hexaDecimal(); + assert.ok(faker.datatype.hexaDecimal.called); + assert.ok(console.log.calledWith('DeprecationWarning: Method is now located in faker.datatype.hexaDecimal')); + faker.datatype.hexaDecimal.restore() + console.log.restore(); + }); }) describe("mersenne twister", function() { |
