From 965637d80b1d8352afce96b218d5e5de79f49934 Mon Sep 17 00:00:00 2001 From: Samir J M Araujo Date: Fri, 10 Apr 2020 11:03:26 -0300 Subject: [PATCH] feat(name.prefix): add name.prefix method + Introduces name.prefix method for en and pt_BR --- README.md | 4 +-- src/name/__tests__/name.test.ts | 4 +++ src/name/index.ts | 3 ++- src/name/prefix/__tests__/prefix.test.ts | 26 +++++++++++++++++++ src/name/prefix/index.ts | 10 +++++++ .../prefix/locales/__tests__/locales.test.ts | 11 ++++++++ src/name/prefix/locales/en/collection.ts | 1 + src/name/prefix/locales/index.ts | 7 +++++ src/name/prefix/locales/pt_BR/collection.ts | 1 + 9 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 src/name/prefix/__tests__/prefix.test.ts create mode 100644 src/name/prefix/index.ts create mode 100644 src/name/prefix/locales/__tests__/locales.test.ts create mode 100644 src/name/prefix/locales/en/collection.ts create mode 100644 src/name/prefix/locales/index.ts create mode 100644 src/name/prefix/locales/pt_BR/collection.ts 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.'];