diff --git a/README.md b/README.md index 16d66b6..99d4485 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ const anotherName = faker.name.firstName(); // Random first name: Marilyne - name - firstName - lastName + - prefix - helpers - getLocale - randomArrayElement @@ -187,9 +188,6 @@ const anotherName = faker.name.firstName(); // Random first name: Marilyne - ronSwanson - theOffice - name - - firstName - - lastName - - prefix - suffix - title - phone diff --git a/src/name/__tests__/name.test.ts b/src/name/__tests__/name.test.ts index 0beea1d..9f4ba5a 100644 --- a/src/name/__tests__/name.test.ts +++ b/src/name/__tests__/name.test.ts @@ -8,4 +8,8 @@ describe('Name', () => { it('should have lastName module', () => { expect(name).toHaveProperty('lastName'); }); + + it('should have prefix module', () => { + expect(name).toHaveProperty('prefix'); + }); }); diff --git a/src/name/index.ts b/src/name/index.ts index 65aa773..22d56e1 100644 --- a/src/name/index.ts +++ b/src/name/index.ts @@ -1,4 +1,5 @@ import firstName from './firstName'; import lastName from './lastName'; +import prefix from './prefix'; -export default { firstName, lastName }; +export default { firstName, lastName, prefix }; diff --git a/src/name/prefix/__tests__/prefix.test.ts b/src/name/prefix/__tests__/prefix.test.ts new file mode 100644 index 0000000..2c0ebad --- /dev/null +++ b/src/name/prefix/__tests__/prefix.test.ts @@ -0,0 +1,26 @@ +import { Locale } from '../../../types/locale'; +import locales from '../locales'; +import prefix from '..'; + +describe('Name | prefix', () => { + it(`should return a random prefix in ${Locale.EN} by default`, () => { + const value = prefix(); + const { en } = locales; + + expect(en).toContain(value); + }); + + it('should return a random prefix from given locale', () => { + const value = prefix(Locale.PT_BR); + const { pt_BR } = locales; + + expect(pt_BR).toContain(value); + }); + + it(`should return a random prefix in ${Locale.EN} when given locale is not found`, () => { + const value = prefix(Locale.RU); + const { en } = locales; + + expect(en).toContain(value); + }); +}); diff --git a/src/name/prefix/index.ts b/src/name/prefix/index.ts new file mode 100644 index 0000000..d360079 --- /dev/null +++ b/src/name/prefix/index.ts @@ -0,0 +1,10 @@ +import { Locale } from '../../types/locale'; +import getLocale from '../../helpers/getLocale'; +import locales from './locales'; +import randomArrayElement from '../../helpers/randomArrayElement'; + +export default function prefix(selectedLocale?: Locale): string { + const collection = getLocale(locales, selectedLocale); + + return randomArrayElement(collection); +} diff --git a/src/name/prefix/locales/__tests__/locales.test.ts b/src/name/prefix/locales/__tests__/locales.test.ts new file mode 100644 index 0000000..9428bc8 --- /dev/null +++ b/src/name/prefix/locales/__tests__/locales.test.ts @@ -0,0 +1,11 @@ +import locales from '..'; + +describe('Name | prefix | Locale', () => { + it('should have en locale', () => { + expect(locales).toHaveProperty('en'); + }); + + it('should have pt_BR locale', () => { + expect(locales).toHaveProperty('pt_BR'); + }); +}); diff --git a/src/name/prefix/locales/en/collection.ts b/src/name/prefix/locales/en/collection.ts new file mode 100644 index 0000000..7dd8c5c --- /dev/null +++ b/src/name/prefix/locales/en/collection.ts @@ -0,0 +1 @@ +export default ['Mr.', 'Mrs.', 'Ms.', 'Miss', 'Dr.']; diff --git a/src/name/prefix/locales/index.ts b/src/name/prefix/locales/index.ts new file mode 100644 index 0000000..dd2ee6a --- /dev/null +++ b/src/name/prefix/locales/index.ts @@ -0,0 +1,7 @@ +import { LocaleObject } from '../../../../lib/types/locale'; +import en from './en/collection'; +import pt_BR from './pt_BR/collection'; + +const locales: LocaleObject = { en, pt_BR }; + +export default locales; diff --git a/src/name/prefix/locales/pt_BR/collection.ts b/src/name/prefix/locales/pt_BR/collection.ts new file mode 100644 index 0000000..b9f8cd0 --- /dev/null +++ b/src/name/prefix/locales/pt_BR/collection.ts @@ -0,0 +1 @@ +export default ['Sr.', 'Sra.', 'Srta.', 'Dr.'];