From 3ce098830af57eb8d88834220754d9920a3244fc Mon Sep 17 00:00:00 2001 From: Shinigami92 Date: Mon, 21 Mar 2022 15:24:39 +0100 Subject: [PATCH] chore(revert): name.ts changes --- src/name.ts | 42 ++++++++++-------------------------------- test/name.spec.ts | 41 ++++++++++++++++++++--------------------- 2 files changed, 30 insertions(+), 53 deletions(-) diff --git a/src/name.ts b/src/name.ts index a7269b54c91..6b7275692eb 100644 --- a/src/name.ts +++ b/src/name.ts @@ -35,7 +35,14 @@ export class Name { // 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 ) - gender = Name.determineGenderByStringParam(gender); + if (typeof gender === 'string') { + if (gender.toLowerCase() === 'male') { + gender = 0; + } else if (gender.toLowerCase() === 'female') { + gender = 1; + } + } + if (typeof gender !== 'number') { if (typeof this.faker.definitions.name.first_name === 'undefined') { gender = this.faker.datatype.number(1); @@ -119,16 +126,8 @@ export class Name { typeof this.faker.definitions.name.male_middle_name !== 'undefined' && typeof this.faker.definitions.name.female_middle_name !== 'undefined' ) { - gender = Name.determineGenderByStringParam(gender); if (typeof gender !== 'number') { - if (typeof this.faker.definitions.name.middle_name === 'undefined') { - gender = this.faker.datatype.number(1); - } else { - // Fall back to unisex middle names if they exist and gender wasn't specified - return this.faker.random.arrayElement( - this.faker.definitions.name.middle_name - ); - } + gender = this.faker.datatype.number(1); } if (gender === 0) { return this.faker.random.arrayElement( @@ -140,6 +139,7 @@ export class Name { ); } } + return this.faker.random.arrayElement( this.faker.definitions.name.middle_name ); @@ -332,26 +332,4 @@ export class Name { this.faker.definitions.name.title.job ); } - - /** - * - * Determines gender in 0 or 1 - * - * @param gender The optional gender to use. - * - * @returns 0 or 1 given a string param of 'male' or 'female' else returns default value - * - * @example Name.determineGenderByStringParam('male') // 0 - * - */ - private static determineGenderByStringParam(gender: string | number) { - if (typeof gender === 'string') { - if (gender.toLowerCase() === 'male') { - gender = 0; - } else if (gender.toLowerCase() === 'female') { - gender = 1; - } - } - return gender; - } } diff --git a/test/name.spec.ts b/test/name.spec.ts index 901aad2d0d7..2b8e9f0a304 100644 --- a/test/name.spec.ts +++ b/test/name.spec.ts @@ -12,7 +12,7 @@ const seededRuns = [ noArgs: 'Hintz', }, middleName: { - noArgs: 'Greer', + noArgs: 'Owen', }, findName: { noArgs: 'Lorene Deckow', @@ -53,7 +53,7 @@ const seededRuns = [ noArgs: 'Gibson', }, middleName: { - noArgs: 'Dakota', + noArgs: 'Kenji', }, findName: { noArgs: 'Marilyn Effertz', @@ -94,7 +94,7 @@ const seededRuns = [ noArgs: 'Ward', }, middleName: { - noArgs: 'Sawyer', + noArgs: 'Isla', }, findName: { noArgs: 'Darrel Sanford', @@ -188,16 +188,12 @@ describe('name', () => { expect(faker.definitions.name.female_first_name).toContain(name); }); - // TODO @Shinigami92 2022-01-30: There is a bug: https://github.com/faker-js/faker/issues/373 - it.todo( - 'should return a gender-specific first name when passed a string', - () => { - let name = faker.name.firstName('male'); - expect(faker.definitions.name.male_first_name).toContain(name); - name = faker.name.firstName('female'); - expect(faker.definitions.name.female_first_name).toContain(name); - } - ); + it('should return a gender-specific first name when passed a string', () => { + let name = faker.name.firstName('male'); + expect(faker.definitions.name.male_first_name).toContain(name); + name = faker.name.firstName('female'); + expect(faker.definitions.name.female_first_name).toContain(name); + }); }); describe('lastName()', () => { @@ -247,7 +243,7 @@ describe('name', () => { expect(middle_name.length).greaterThan(0); }); - it('should return a middle name when passed en locale', () => { + it.todo('should return a middle name when passed en locale', () => { faker.locale = 'en'; let name = faker.name.middleName(); @@ -267,14 +263,17 @@ describe('name', () => { expect(faker.definitions.name.female_middle_name).toContain(name); }); - it('should return a gender-specific middle name when passed a string', () => { - faker.locale = 'uk'; + it.todo( + 'should return a gender-specific middle name when passed a string', + () => { + faker.locale = 'uk'; - let name = faker.name.middleName('male'); - expect(faker.definitions.name.male_middle_name).toContain(name); - name = faker.name.middleName('female'); - expect(faker.definitions.name.female_middle_name).toContain(name); - }); + let name = faker.name.middleName('male'); + expect(faker.definitions.name.male_middle_name).toContain(name); + name = faker.name.middleName('female'); + expect(faker.definitions.name.female_middle_name).toContain(name); + } + ); }); describe('findName()', () => {