From beee70691d42cc48c5ec756f4ea747c9a5818b6b Mon Sep 17 00:00:00 2001 From: kstamant Date: Thu, 9 Aug 2018 09:57:20 -0600 Subject: Added support for strings in first name with gender --- lib/name.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/lib/name.js b/lib/name.js index 49b54614..3312b250 100644 --- a/lib/name.js +++ b/lib/name.js @@ -15,6 +15,16 @@ function Name (faker) { if (typeof faker.definitions.name.male_first_name !== "undefined" && typeof faker.definitions.name.female_first_name !== "undefined") { // some locale datasets ( like ru ) have first_name split by gender. since the name.first_name field does not exist in these datasets, // we must randomly pick a name from either gender array so faker.name.firstName will return the correct locale data ( and not fallback ) + + if(typeof gender === 'string') { + if(gender.toLowerCase() === 'male') { + gender = 0; + } + else if(gender.toLowerCase() === 'female') { + gender = 1; + } + } + if (typeof gender !== 'number') { if(typeof faker.definitions.name.first_name === "undefined") { gender = faker.random.number(1); -- cgit v1.2.3 From b3fcea2ff8aa03957afbfab2632c72bf020da0e7 Mon Sep 17 00:00:00 2001 From: Brandon Slade Date: Thu, 9 Aug 2018 10:19:05 -0600 Subject: Add tests to ensure random gender-specific first name works --- test/name.unit.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/name.unit.js b/test/name.unit.js index e470cfba..fdd85e2a 100644 --- a/test/name.unit.js +++ b/test/name.unit.js @@ -5,6 +5,11 @@ if (typeof module !== 'undefined') { } +function assertInArray(value, array) { + var idx = array.indexOf(value); + assert.notEqual(idx, -1); +} + describe("name.js", function () { describe("firstName()", function () { it("returns a random name", function () { @@ -15,6 +20,24 @@ describe("name.js", function () { faker.name.firstName.restore(); }); + + it("returns a gender-specific name when passed a number", function () { + for (var q = 0; q < 30; q++) { + var gender = Math.floor(Math.random() * 2); + var name = faker.name.firstName(gender); + if (gender === 0) assertInArray(name, faker.definitions.name.male_first_name); + else assertInArray(name, faker.definitions.name.female_first_name); + } + }); + + it("returns a gender-specific name when passed a string", function () { + for (var q = 0; q < 30; q++) { + var gender = Math.floor(Math.random() * 2); + var genderString = (gender === 0 ? 'male' : 'female'); + var name = faker.name.firstName(genderString); + assertInArray(name, faker.definitions.name[genderString + '_first_name']); + } + }); }); describe("lastName()", function () { -- cgit v1.2.3