Skip to content

Commit

Permalink
chore(revert): name.ts changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Shinigami92 committed Mar 21, 2022
1 parent 58e8168 commit 3ce0988
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 53 deletions.
42 changes: 10 additions & 32 deletions src/name.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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(
Expand All @@ -140,6 +139,7 @@ export class Name {
);
}
}

return this.faker.random.arrayElement(
this.faker.definitions.name.middle_name
);
Expand Down Expand Up @@ -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;
}
}
41 changes: 20 additions & 21 deletions test/name.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const seededRuns = [
noArgs: 'Hintz',
},
middleName: {
noArgs: 'Greer',
noArgs: 'Owen',
},
findName: {
noArgs: 'Lorene Deckow',
Expand Down Expand Up @@ -53,7 +53,7 @@ const seededRuns = [
noArgs: 'Gibson',
},
middleName: {
noArgs: 'Dakota',
noArgs: 'Kenji',
},
findName: {
noArgs: 'Marilyn Effertz',
Expand Down Expand Up @@ -94,7 +94,7 @@ const seededRuns = [
noArgs: 'Ward',
},
middleName: {
noArgs: 'Sawyer',
noArgs: 'Isla',
},
findName: {
noArgs: 'Darrel Sanford',
Expand Down Expand Up @@ -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()', () => {
Expand Down Expand Up @@ -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();
Expand All @@ -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()', () => {
Expand Down

0 comments on commit 3ce0988

Please sign in to comment.