aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBryan Donovan <[email protected]>2013-01-05 19:54:21 -0800
committerBryan Donovan <[email protected]>2013-01-05 19:54:21 -0800
commit0b3cfbee64547e7a624c8d8f988c293ed463cf4b (patch)
tree46b926661b16b3eb8f911777c2fb8f699d8785f1
parent8a6ad8d2de768aff38e09cda46fc0dfd2d52b2b8 (diff)
downloadfaker-0b3cfbee64547e7a624c8d8f988c293ed463cf4b.tar.xz
faker-0b3cfbee64547e7a624c8d8f988c293ed463cf4b.zip
refactoring so we do not need to use Helpers.randomize() everywhere
-rw-r--r--lib/company.js21
-rw-r--r--lib/helpers.js11
-rw-r--r--lib/random.js34
-rw-r--r--test/company.unit.js67
4 files changed, 83 insertions, 50 deletions
diff --git a/lib/company.js b/lib/company.js
index 8c9f3a0e..959988fb 100644
--- a/lib/company.js
+++ b/lib/company.js
@@ -1,35 +1,34 @@
-var Helpers = require('./helpers');
var Name = require('./name');
-var definitions = require('../lib/definitions');
+var random = require('../lib/random');
var company = {
suffixes: ["Inc", "and Sons", "LLC", "Group", "and Daughters"],
companyName: function (format) {
- switch ((format ? format : Helpers.randomNumber(3))) {
+ switch ((format ? format : random.number(3))) {
case 0:
return Name.lastName() + " " + this.companySuffix();
case 1:
return Name.lastName() + "-" + Name.lastName();
case 2:
- return Name.lastName() + "," + Name.lastName() + " and " + Name.lastName();
+ return Name.lastName() + ", " + Name.lastName() + " and " + Name.lastName();
}
},
companySuffix: function () {
- return Helpers.randomize(this.suffixes);
+ return random.array_rand(this.suffixes);
},
catchPhrase: function () {
- return Helpers.randomize(definitions.catch_phrase_adjective()) + " " +
- Helpers.randomize(definitions.catch_phrase_descriptor()) + " " +
- Helpers.randomize(definitions.catch_phrase_noun());
+ return random.catch_phrase_adjective() + " " +
+ random.catch_phrase_descriptor() + " " +
+ random.catch_phrase_noun();
},
bs: function () {
- return Helpers.randomize(definitions.bs_adjective()) + " " +
- Helpers.randomize(definitions.bs_buzz()) + " " +
- Helpers.randomize(definitions.bs_noun());
+ return random.bs_adjective() + " " +
+ random.bs_buzz() + " " +
+ random.bs_noun();
}
};
diff --git a/lib/helpers.js b/lib/helpers.js
index 27824a16..858f2ba8 100644
--- a/lib/helpers.js
+++ b/lib/helpers.js
@@ -1,15 +1,14 @@
var Faker = require('../Faker');
+var random = require('./random');
-// returns a single random number based on a range
+// temporary backword-compatibility
exports.randomNumber = function (range) {
- var r = Math.floor(Math.random() * range);
- return r;
+ return random.number(range);
};
-// takes an array and returns the array randomly sorted
+// temporary backword-compatibility
exports.randomize = function (array) {
- var r = Math.floor(Math.random() * array.length);
- return array[r];
+ return random.array_rand(array);
};
// parses string for a symbol and replace it with a random number from 1-10
diff --git a/lib/random.js b/lib/random.js
new file mode 100644
index 00000000..abfba1a4
--- /dev/null
+++ b/lib/random.js
@@ -0,0 +1,34 @@
+var definitions = require('./definitions');
+
+var random = {
+ // returns a single random number based on a range
+ number: function (range) {
+ var r = Math.floor(Math.random() * range);
+ console.log(r);
+ return r;
+ },
+
+ // takes an array and returns the array randomly sorted
+ array_rand: function (array) {
+ var r = Math.floor(Math.random() * array.length);
+ return array[r];
+ }
+};
+
+var method_names = [
+ 'catch_phrase_adjective',
+ 'catch_phrase_descriptor',
+ 'catch_phrase_noun',
+ 'bs_adjective',
+ 'bs_buzz',
+ 'bs_noun'
+];
+
+for (var i = 0; i < method_names.length; i++) {
+ var method_name = method_names[i];
+ random[method_name] = function () {
+ return random.array_rand(definitions[method_name]());
+ };
+}
+
+module.exports = random;
diff --git a/test/company.unit.js b/test/company.unit.js
index 23402229..c7f6ae99 100644
--- a/test/company.unit.js
+++ b/test/company.unit.js
@@ -1,6 +1,7 @@
var assert = require('assert');
var sinon = require('sinon');
var Faker = require('../index');
+var random = require('../lib/random');
describe("company.js", function () {
describe("companyName()", function () {
@@ -16,34 +17,34 @@ describe("company.js", function () {
it("sometimes returns three last names", function () {
sinon.spy(Faker.definitions, 'last_name');
- sinon.stub(Faker.Helpers, 'randomNumber').returns(2);
+ sinon.stub(random, 'number').returns(2);
var name = Faker.Company.companyName();
var parts = name.split(' ');
- assert.strictEqual(parts.length, 3);
+ assert.strictEqual(parts.length, 4); // account for word 'and'
assert.ok(Faker.definitions.last_name.calledThrice);
- Faker.Helpers.randomNumber.restore();
+ random.number.restore();
Faker.definitions.last_name.restore();
});
it("sometimes returns two last names separated by a hyphen", function () {
sinon.spy(Faker.definitions, 'last_name');
- sinon.stub(Faker.Helpers, 'randomNumber').returns(1);
+ sinon.stub(random, 'number').returns(1);
var name = Faker.Company.companyName();
var parts = name.split('-');
assert.strictEqual(parts.length, 2);
assert.ok(Faker.definitions.last_name.calledTwice);
- Faker.Helpers.randomNumber.restore();
+ random.number.restore();
Faker.definitions.last_name.restore();
});
it("sometimes returns a last name with a company suffix", function () {
sinon.spy(Faker.Company, 'companySuffix');
sinon.spy(Faker.definitions, 'last_name');
- sinon.stub(Faker.Helpers, 'randomNumber').returns(0);
+ sinon.stub(random, 'number').returns(0);
var name = Faker.Company.companyName();
var parts = name.split(' ');
@@ -51,7 +52,7 @@ describe("company.js", function () {
assert.ok(Faker.definitions.last_name.calledOnce);
assert.ok(Faker.Company.companySuffix.calledOnce);
- Faker.Helpers.randomNumber.restore();
+ random.number.restore();
Faker.definitions.last_name.restore();
Faker.Company.companySuffix.restore();
});
@@ -66,43 +67,43 @@ describe("company.js", function () {
describe("catchPhrase()", function () {
it("returns phrase comprising of a catch phrase adjective, descriptor, and noun", function () {
- sinon.spy(Faker.Helpers, 'randomize');
- sinon.spy(Faker.definitions, 'catch_phrase_adjective');
- sinon.spy(Faker.definitions, 'catch_phrase_descriptor');
- sinon.spy(Faker.definitions, 'catch_phrase_noun');
+ sinon.spy(random, 'array_rand');
+ sinon.spy(random, 'catch_phrase_adjective');
+ sinon.spy(random, 'catch_phrase_descriptor');
+ sinon.spy(random, 'catch_phrase_noun');
var phrase = Faker.Company.catchPhrase();
assert.ok(phrase.split(' ').length >= 3);
- assert.ok(Faker.Helpers.randomize.calledThrice);
- assert.ok(Faker.definitions.catch_phrase_adjective.calledOnce);
- assert.ok(Faker.definitions.catch_phrase_descriptor.calledOnce);
- assert.ok(Faker.definitions.catch_phrase_noun.calledOnce);
-
- Faker.Helpers.randomize.restore();
- Faker.definitions.catch_phrase_adjective.restore();
- Faker.definitions.catch_phrase_descriptor.restore();
- Faker.definitions.catch_phrase_noun.restore();
+ assert.ok(random.array_rand.calledThrice);
+ assert.ok(random.catch_phrase_adjective.calledOnce);
+ assert.ok(random.catch_phrase_descriptor.calledOnce);
+ assert.ok(random.catch_phrase_noun.calledOnce);
+
+ random.array_rand.restore();
+ random.catch_phrase_adjective.restore();
+ random.catch_phrase_descriptor.restore();
+ random.catch_phrase_noun.restore();
});
});
describe("bs()", function () {
it("returns phrase comprising of a BS adjective, buzz, and noun", function () {
- sinon.spy(Faker.Helpers, 'randomize');
- sinon.spy(Faker.definitions, 'bs_adjective');
- sinon.spy(Faker.definitions, 'bs_buzz');
- sinon.spy(Faker.definitions, 'bs_noun');
+ sinon.spy(random, 'array_rand');
+ sinon.spy(random, 'bs_adjective');
+ sinon.spy(random, 'bs_buzz');
+ sinon.spy(random, 'bs_noun');
var bs = Faker.Company.bs();
assert.ok(typeof bs === 'string');
- assert.ok(Faker.Helpers.randomize.calledThrice);
- assert.ok(Faker.definitions.bs_adjective.calledOnce);
- assert.ok(Faker.definitions.bs_buzz.calledOnce);
- assert.ok(Faker.definitions.bs_noun.calledOnce);
-
- Faker.Helpers.randomize.restore();
- Faker.definitions.bs_adjective.restore();
- Faker.definitions.bs_buzz.restore();
- Faker.definitions.bs_noun.restore();
+ assert.ok(random.array_rand.calledThrice);
+ assert.ok(random.bs_adjective.calledOnce);
+ assert.ok(random.bs_buzz.calledOnce);
+ assert.ok(random.bs_noun.calledOnce);
+
+ random.array_rand.restore();
+ random.bs_adjective.restore();
+ random.bs_buzz.restore();
+ random.bs_noun.restore();
});
});
});