aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Fitzpatrick <[email protected]>2016-05-05 11:24:22 -0400
committerMarak <[email protected]>2017-02-21 12:53:20 -0500
commit59ac9a632bb863e114fb05d241dce463f424c382 (patch)
treee31b4d791dfa2a907d0d9bf6b8a6998495bf0031
parentef1605d1a94bae0bc38f0c8c0fc51f5fa4ba76f6 (diff)
downloadfaker-59ac9a632bb863e114fb05d241dce463f424c382.tar.xz
faker-59ac9a632bb863e114fb05d241dce463f424c382.zip
Statically bind all module methods
Statically bind the methods on all modules to their correct context so that the methods can be called in a composable, callback-oriented manner. Closes #376 Conflicts: lib/index.js test/all.functional.js
-rw-r--r--lib/index.js35
-rw-r--r--test/all.functional.js17
2 files changed, 36 insertions, 16 deletions
diff --git a/lib/index.js b/lib/index.js
index 306275dc..5b1dce66 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -38,55 +38,64 @@ function Faker (opts) {
self.definitions = {};
+ function bindAll(obj) {
+ Object.keys(obj).forEach(function(meth) {
+ if (typeof obj[meth] === 'function') {
+ obj[meth] = obj[meth].bind(obj);
+ }
+ });
+ return obj;
+ }
+
var Fake = require('./fake');
self.fake = new Fake(self).fake;
var Random = require('./random');
- self.random = new Random(self, opts.seed);
+ self.random = bindAll(new Random(self));
// self.random = require('./random');
var Helpers = require('./helpers');
self.helpers = new Helpers(self);
var Name = require('./name');
- self.name = new Name(self);
+ self.name = bindAll(new Name(self));
// self.name = require('./name');
var Address = require('./address');
- self.address = new Address(self);
+ self.address = bindAll(new Address(self));
var Company = require('./company');
- self.company = new Company(self);
+ self.company = bindAll(new Company(self));
var Finance = require('./finance');
- self.finance = new Finance(self);
+ self.finance = bindAll(new Finance(self));
var Image = require('./image');
- self.image = new Image(self);
+ self.image = bindAll(new Image(self));
var Lorem = require('./lorem');
- self.lorem = new Lorem(self);
+ self.lorem = bindAll(new Lorem(self));
var Hacker = require('./hacker');
- self.hacker = new Hacker(self);
+ self.hacker = bindAll(new Hacker(self));
var Internet = require('./internet');
- self.internet = new Internet(self);
+ self.internet = bindAll(new Internet(self));
var Database = require('./database');
self.database = new Database(self);
var Phone = require('./phone_number');
- self.phone = new Phone(self);
+ self.phone = bindAll(new Phone(self));
var _Date = require('./date');
- self.date = new _Date(self);
+ self.date = bindAll(new _Date(self));
var Commerce = require('./commerce');
- self.commerce = new Commerce(self);
+ self.commerce = bindAll(new Commerce(self));
var System = require('./system');
- self.system = new System(self);
+ self.system = bindAll(new System(self));
var _definitions = {
"name": ["first_name", "last_name", "prefix", "suffix", "title", "male_first_name", "female_first_name", "male_middle_name", "female_middle_name", "male_last_name", "female_last_name"],
diff --git a/test/all.functional.js b/test/all.functional.js
index 4ea196b6..2fccb10a 100644
--- a/test/all.functional.js
+++ b/test/all.functional.js
@@ -31,18 +31,29 @@ var modules = {
describe("functional tests", function () {
+ function assertMethodResult(meth, result) {
+ if (meth === 'boolean') {
+ assert.ok(result === true || result === false);
+ } else {
+ assert.ok(result);
+ }
+ }
+
for(var locale in faker.locales) {
faker.locale = locale;
Object.keys(modules).forEach(function (module) {
describe(module, function () {
modules[module].forEach(function (meth) {
it(meth + "()", function () {
- var result = faker[module][meth]();
- assert.ok(result);
+ assertMethodResult(meth, faker[module][meth]());
+ });
+
+ it(meth + "() without context", function () {
+ assertMethodResult(meth, faker[module][meth].call(null));
});
});
});
});
}
-}); \ No newline at end of file
+});