aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorShinigami <[email protected]>2022-03-24 10:22:13 +0100
committerGitHub <[email protected]>2022-03-24 10:22:13 +0100
commit7675abe5a62c8d44ecfd4a6f50bfb5fa50f40efa (patch)
treead679ab22251a4acc56b102458ccab8545bbd8b0 /test
parentd0a473f7ca6b525391ca8ab17e029335c66ed99e (diff)
downloadfaker-7675abe5a62c8d44ecfd4a6f50bfb5fa50f40efa.tar.xz
faker-7675abe5a62c8d44ecfd4a6f50bfb5fa50f40efa.zip
fix: name module gender (#644)
Diffstat (limited to 'test')
-rw-r--r--test/helpers.spec.ts12
-rw-r--r--test/name.spec.ts239
2 files changed, 162 insertions, 89 deletions
diff --git a/test/helpers.spec.ts b/test/helpers.spec.ts
index 64c12df5..cbb541c1 100644
--- a/test/helpers.spec.ts
+++ b/test/helpers.spec.ts
@@ -63,7 +63,7 @@ const seededRuns = [
name: 'Weissnat, Wintheiser and MacGyver',
},
- name: 'Lorene Deckow',
+ name: 'Darnell Deckow',
phone: '559.640.8661',
posts: [
{
@@ -138,7 +138,7 @@ const seededRuns = [
name: 'Langworth - Wyman',
},
- name: 'Lorene Deckow',
+ name: 'Darnell Deckow',
phone: '225-631-0293 x240',
username: 'Moses_Satterfield',
website: 'sparse-ottoman.biz',
@@ -213,7 +213,7 @@ const seededRuns = [
name: 'Armstrong, Smitham and Renner',
},
- name: 'Marilyn Effertz',
+ name: 'Eugene Effertz',
phone: '818-698-6199 x848',
posts: [
{
@@ -287,7 +287,7 @@ const seededRuns = [
name: 'Daugherty - Connelly',
},
- name: 'Marilyn Effertz',
+ name: 'Eugene Effertz',
phone: '803.543.5573 x1428',
username: 'Dudley.Littel',
website: 'queasy-guide.info',
@@ -362,7 +362,7 @@ const seededRuns = [
name: 'Jacobi and Sons',
},
- name: 'Darrel Sanford',
+ name: 'Henrietta Sanford',
phone: '621-735-9398',
posts: [
{
@@ -436,7 +436,7 @@ const seededRuns = [
name: 'Fahey LLC',
},
- name: 'Darrel Sanford',
+ name: 'Henrietta Sanford',
phone: '469.570.3390',
username: 'Dangelo.Christiansen67',
website: 'mild-hearth.org',
diff --git a/test/name.spec.ts b/test/name.spec.ts
index 2b8e9f0a..7572b3d6 100644
--- a/test/name.spec.ts
+++ b/test/name.spec.ts
@@ -1,4 +1,4 @@
-import { afterEach, beforeEach, describe, expect, it } from 'vitest';
+import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { faker } from '../src';
const seededRuns = [
@@ -12,10 +12,10 @@ const seededRuns = [
noArgs: 'Hintz',
},
middleName: {
- noArgs: 'Owen',
+ noArgs: 'Greer',
},
findName: {
- noArgs: 'Lorene Deckow',
+ noArgs: 'Darnell Deckow',
},
jobTitle: {
noArgs: 'Regional Data Representative',
@@ -53,10 +53,10 @@ const seededRuns = [
noArgs: 'Gibson',
},
middleName: {
- noArgs: 'Kenji',
+ noArgs: 'Dakota',
},
findName: {
- noArgs: 'Marilyn Effertz',
+ noArgs: 'Eugene Effertz',
},
jobTitle: {
noArgs: 'Future Infrastructure Liaison',
@@ -94,10 +94,10 @@ const seededRuns = [
noArgs: 'Ward',
},
middleName: {
- noArgs: 'Isla',
+ noArgs: 'Sawyer',
},
findName: {
- noArgs: 'Darrel Sanford',
+ noArgs: 'Henrietta Sanford',
},
jobTitle: {
noArgs: 'Chief Division Agent',
@@ -147,6 +147,7 @@ const functionNames = [
describe('name', () => {
afterEach(() => {
faker.locale = 'en';
+ faker.localeFallback = 'en';
});
for (const { seed, expectations } of seededRuns) {
@@ -172,6 +173,7 @@ describe('name', () => {
describe('firstName()', () => {
beforeEach(() => {
faker.locale = 'en';
+ faker.localeFallback = 'en';
});
it('should return a random first name', () => {
@@ -182,23 +184,47 @@ describe('name', () => {
});
it('should return a gender-specific first name when passed a number', () => {
+ const spy = vi.spyOn(console, 'warn');
+
let name = faker.name.firstName(0);
expect(faker.definitions.name.male_first_name).toContain(name);
+ expect(spy).toHaveBeenCalledWith(
+ `Deprecation Warning: Please use 'male' for gender instead of 0`
+ );
+
name = faker.name.firstName(1);
expect(faker.definitions.name.female_first_name).toContain(name);
+ expect(spy).toHaveBeenCalledWith(
+ `Deprecation Warning: Please use 'female' for gender instead of 1`
+ );
+
+ spy.mockRestore();
});
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');
+ let name = faker.name.firstName('female');
expect(faker.definitions.name.female_first_name).toContain(name);
+
+ name = faker.name.firstName('male');
+ expect(faker.definitions.name.male_first_name).toContain(name);
+ });
+
+ it('should return a gender-specific first name when no gender-specific first name was defined', () => {
+ faker.locale = 'az';
+ faker.localeFallback = 'az';
+
+ const name = faker.name.firstName();
+ expect([
+ ...faker.definitions.name.female_first_name,
+ ...faker.definitions.name.male_first_name,
+ ]).toContain(name);
});
});
describe('lastName()', () => {
beforeEach(() => {
faker.locale = 'en';
+ faker.localeFallback = 'en';
});
it('should return a random last name', () => {
@@ -211,29 +237,38 @@ describe('name', () => {
it('should return a gender-specific last name when passed a number', () => {
faker.locale = 'az';
+ const spy = vi.spyOn(console, 'warn');
+
let name = faker.name.lastName(0);
expect(faker.definitions.name.male_last_name).toContain(name);
+ expect(spy).toHaveBeenCalledWith(
+ `Deprecation Warning: Please use 'male' for gender instead of 0`
+ );
+
name = faker.name.lastName(1);
expect(faker.definitions.name.female_last_name).toContain(name);
+ expect(spy).toHaveBeenCalledWith(
+ `Deprecation Warning: Please use 'female' for gender instead of 1`
+ );
+
+ spy.mockRestore();
});
- // TODO @Shinigami92 2022-01-30: There is a bug: https://github.com/faker-js/faker/issues/373
- it.todo(
- 'should return a gender-specific last name when passed a string',
- () => {
- faker.locale = 'az';
+ it('should return a gender-specific last name when passed a string', () => {
+ faker.locale = 'az';
- let name = faker.name.lastName('male');
- expect(faker.definitions.name.male_last_name).toContain(name);
- name = faker.name.lastName('female');
- expect(faker.definitions.name.female_last_name).toContain(name);
- }
- );
+ let name = faker.name.lastName('female');
+ expect(faker.definitions.name.female_last_name).toContain(name);
+
+ name = faker.name.lastName('male');
+ expect(faker.definitions.name.male_last_name).toContain(name);
+ });
});
describe('middleName()', () => {
beforeEach(() => {
faker.locale = 'en';
+ faker.localeFallback = 'en';
});
it('should return a random middle name', () => {
@@ -243,42 +278,54 @@ describe('name', () => {
expect(middle_name.length).greaterThan(0);
});
- it.todo('should return a middle name when passed en locale', () => {
+ it('should return a middle name when passed en locale', () => {
faker.locale = 'en';
let name = faker.name.middleName();
expect(faker.definitions.name.middle_name).toContain(name);
- name = faker.name.middleName(0);
- expect(faker.definitions.name.male_middle_name).toContain(name);
- name = faker.name.middleName(1);
+
+ name = faker.name.middleName('female');
expect(faker.definitions.name.female_middle_name).toContain(name);
+
+ name = faker.name.middleName('male');
+ expect(faker.definitions.name.male_middle_name).toContain(name);
});
it('should return a gender-specific middle name when passed a number', () => {
+ const spy = vi.spyOn(console, 'warn');
+
faker.locale = 'uk';
let name = faker.name.middleName(0);
expect(faker.definitions.name.male_middle_name).toContain(name);
+ expect(spy).toHaveBeenCalledWith(
+ `Deprecation Warning: Please use 'male' for gender instead of 0`
+ );
+
name = faker.name.middleName(1);
expect(faker.definitions.name.female_middle_name).toContain(name);
+ expect(spy).toHaveBeenCalledWith(
+ `Deprecation Warning: Please use 'female' for gender instead of 1`
+ );
+
+ spy.mockRestore();
});
- it.todo(
- 'should return a gender-specific middle name when passed a string',
- () => {
- faker.locale = 'uk';
+ it('should return a gender-specific middle name when passed a string', () => {
+ faker.locale = 'uk';
+
+ let 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);
- }
- );
+ name = faker.name.middleName('male');
+ expect(faker.definitions.name.male_middle_name).toContain(name);
+ });
});
describe('findName()', () => {
beforeEach(() => {
faker.locale = 'en';
+ faker.localeFallback = 'en';
});
it('should return a name with firstName and lastName', () => {
@@ -288,24 +335,6 @@ describe('name', () => {
expect(fullName).toContain(' ');
});
- it('should return a male gender-specific name with firstName and lastName', () => {
- faker.locale = 'mk';
-
- const male_specific = [
- ...faker.definitions.name.male_prefix,
- ...faker.definitions.name.male_first_name,
- ...faker.definitions.name.male_last_name,
- ...faker.definitions.name.suffix,
- ];
-
- const fullName = faker.name.findName(undefined, undefined, 0);
-
- const parts = fullName.split(' ');
- for (const part of parts) {
- expect(male_specific).toContain(part);
- }
- });
-
it('should return a female gender-specific name with firstName and lastName', () => {
faker.locale = 'mk';
@@ -316,7 +345,7 @@ describe('name', () => {
...faker.definitions.name.suffix,
];
- const fullName = faker.name.findName(undefined, undefined, 1);
+ const fullName = faker.name.findName(undefined, undefined, 'female');
const parts = fullName.split(' ');
for (const part of parts) {
@@ -324,17 +353,17 @@ describe('name', () => {
}
});
- it('should return a male gender-specific name with given firstName and lastName', () => {
+ it('should return a male gender-specific name with firstName and lastName', () => {
faker.locale = 'mk';
const male_specific = [
...faker.definitions.name.male_prefix,
- 'firstName',
- 'lastName',
+ ...faker.definitions.name.male_first_name,
+ ...faker.definitions.name.male_last_name,
...faker.definitions.name.suffix,
];
- const fullName = faker.name.findName('firstName', 'lastName', 0);
+ const fullName = faker.name.findName(undefined, undefined, 'male');
const parts = fullName.split(' ');
for (const part of parts) {
@@ -352,36 +381,41 @@ describe('name', () => {
...faker.definitions.name.suffix,
];
- const fullName = faker.name.findName('firstName', 'lastName', 1);
+ const fullName = faker.name.findName(
+ 'firstName',
+ 'lastName',
+ 'female'
+ );
const parts = fullName.split(' ');
for (const part of parts) {
expect(male_specific).toContain(part);
}
});
- });
-
- describe('jobTitle()', () => {
- beforeEach(() => {
- faker.locale = 'en';
- });
- it('should return a job title consisting of a descriptor, area, and type', () => {
- const jobTitle = faker.name.jobTitle();
+ it('should return a male gender-specific name with given firstName and lastName', () => {
+ faker.locale = 'mk';
- expect(jobTitle).toBeTypeOf('string');
+ const male_specific = [
+ ...faker.definitions.name.male_prefix,
+ 'firstName',
+ 'lastName',
+ ...faker.definitions.name.suffix,
+ ];
- const [descriptor, level, job] = jobTitle.split(' ');
+ const fullName = faker.name.findName('firstName', 'lastName', 'male');
- expect(faker.definitions.name.title.descriptor).toContain(descriptor);
- expect(faker.definitions.name.title.level).toContain(level);
- expect(faker.definitions.name.title.job).toContain(job);
+ const parts = fullName.split(' ');
+ for (const part of parts) {
+ expect(male_specific).toContain(part);
+ }
});
});
describe('gender()', () => {
beforeEach(() => {
faker.locale = 'en';
+ faker.localeFallback = 'en';
});
it('should return a default gender', () => {
@@ -402,6 +436,7 @@ describe('name', () => {
describe('prefix()', () => {
beforeEach(() => {
faker.locale = 'en';
+ faker.localeFallback = 'en';
});
it('should return a prefix', () => {
@@ -411,17 +446,16 @@ describe('name', () => {
expect(faker.definitions.name.prefix).toContain(prefix);
});
- it('should return a male prefix', () => {
+ it('should return a female prefix with given string', () => {
faker.locale = 'mk';
- const prefix = faker.name.prefix(0);
+ const prefix = faker.name.prefix('female');
expect(prefix).toBeTypeOf('string');
- expect(faker.definitions.name.male_prefix).toContain(prefix);
+ expect(faker.definitions.name.female_prefix).toContain(prefix);
});
- // TODO @Shinigami92 2022-01-31: There is a bug: https://github.com/faker-js/faker/issues/373
- it.todo('should return a male prefix with given string', () => {
+ it('should return a male prefix with given string', () => {
faker.locale = 'mk';
const prefix = faker.name.prefix('male');
@@ -430,29 +464,45 @@ describe('name', () => {
expect(faker.definitions.name.male_prefix).toContain(prefix);
});
- it('should return a female prefix', () => {
+ it('should return a male prefix with given number', () => {
+ const spy = vi.spyOn(console, 'warn');
+
faker.locale = 'mk';
- const prefix = faker.name.prefix(1);
+ const prefix = faker.name.prefix(0);
expect(prefix).toBeTypeOf('string');
- expect(faker.definitions.name.female_prefix).toContain(prefix);
+ expect(faker.definitions.name.male_prefix).toContain(prefix);
+
+ expect(spy).toHaveBeenCalledWith(
+ `Deprecation Warning: Please use 'male' for gender instead of 0`
+ );
+
+ spy.mockRestore();
});
- // TODO @Shinigami92 2022-01-31: There is a bug: https://github.com/faker-js/faker/issues/373
- it.todo('should return a female prefix with given string', () => {
+ it('should return a female prefix with given number', () => {
+ const spy = vi.spyOn(console, 'warn');
+
faker.locale = 'mk';
- const prefix = faker.name.prefix('female');
+ const prefix = faker.name.prefix(1);
expect(prefix).toBeTypeOf('string');
expect(faker.definitions.name.female_prefix).toContain(prefix);
+
+ expect(spy).toHaveBeenCalledWith(
+ `Deprecation Warning: Please use 'female' for gender instead of 1`
+ );
+
+ spy.mockRestore();
});
});
describe('suffix()', () => {
beforeEach(() => {
faker.locale = 'en';
+ faker.localeFallback = 'en';
});
it('should return a suffix', () => {
@@ -466,6 +516,7 @@ describe('name', () => {
describe('title()', () => {
beforeEach(() => {
faker.locale = 'en';
+ faker.localeFallback = 'en';
});
it('should return a title consisting of a descriptor, area, and type', () => {
@@ -482,9 +533,29 @@ describe('name', () => {
});
});
+ describe('jobTitle()', () => {
+ beforeEach(() => {
+ faker.locale = 'en';
+ faker.localeFallback = 'en';
+ });
+
+ it('should return a job title consisting of a descriptor, area, and type', () => {
+ const jobTitle = faker.name.jobTitle();
+
+ expect(jobTitle).toBeTypeOf('string');
+
+ const [descriptor, level, job] = jobTitle.split(' ');
+
+ expect(faker.definitions.name.title.descriptor).toContain(descriptor);
+ expect(faker.definitions.name.title.level).toContain(level);
+ expect(faker.definitions.name.title.job).toContain(job);
+ });
+ });
+
describe('jobDescriptor()', () => {
beforeEach(() => {
faker.locale = 'en';
+ faker.localeFallback = 'en';
});
it('should return a descriptor', () => {
@@ -499,6 +570,7 @@ describe('name', () => {
describe('jobArea()', () => {
beforeEach(() => {
faker.locale = 'en';
+ faker.localeFallback = 'en';
});
it('should return a level', () => {
@@ -513,6 +585,7 @@ describe('name', () => {
describe('jobType()', () => {
beforeEach(() => {
faker.locale = 'en';
+ faker.localeFallback = 'en';
});
it('should return a job', () => {