diff --git a/packages/falso/src/lib/i18n/pt-br/bird.i18n.json b/packages/falso/src/lib/i18n/pt-br/bird.i18n.json new file mode 100644 index 00000000..566dc387 --- /dev/null +++ b/packages/falso/src/lib/i18n/pt-br/bird.i18n.json @@ -0,0 +1,28 @@ +{ + "data": [ + "Arara Azul", + "Arara-vermelha", + "Ararinha-azul", + "Calopsita", + "Canário", + "Beija-flor", + "Bem-te-vi", + "Coruja", + "Corrupião", + "Curió", + "Ema", + "Falcão", + "Garça", + "João-de-barro", + "Papagaio", + "Pardal", + "Periquito", + "Pomba", + "Quero-quero", + "Rolinha", + "Sabiá", + "Tucano", + "Tuiuiú", + "Urubu" + ] +} diff --git a/packages/falso/src/lib/i18n/pt-br/bird.ts b/packages/falso/src/lib/i18n/pt-br/bird.ts new file mode 100644 index 00000000..df834015 --- /dev/null +++ b/packages/falso/src/lib/i18n/pt-br/bird.ts @@ -0,0 +1,22 @@ +import { FakeOptions, fake } from '../../core/core'; +import { data } from './bird.i18n.json'; + +/** + * Generate a random bird. + * + * @category animals + * + * @example + * + * randBird() + * + * @example + * + * randBird({ length: 10 }) + * + */ +export function randBird( + options?: Options +) { + return fake(data, options); +} diff --git a/packages/falso/src/lib/i18n/pt-br/first-name.i18n.json b/packages/falso/src/lib/i18n/pt-br/first-name.i18n.json new file mode 100644 index 00000000..043ead52 --- /dev/null +++ b/packages/falso/src/lib/i18n/pt-br/first-name.i18n.json @@ -0,0 +1,383 @@ +{ + "data": { + "withAccents": { + "male": [ + "Antônio", + "Benício", + "Cauã", + "César", + "Fábio", + "Félix", + "Hélio", + "João", + "Júlio", + "Théo" + ], + "female": [ + "Aléxia", + "Alícia", + "Amália", + "Amélia", + "Ângela", + "Angélica", + "Antónia", + "Bárbara", + "Cátia", + "Cecília", + "Célia", + "Cíntia", + "Cláudia", + "Débora", + "Emília", + "Érica", + "Fabrícia", + "Felícia", + "Flávia", + "Fátima", + "Glória", + "Heloísa", + "Inês", + "Irís", + "Janaína", + "Jéssica", + "Júlia", + "Laís", + "Letícia", + "Lídia", + "Lígia", + "Lília", + "Lívia", + "Lúcia", + "Luísa", + "Maitê", + "Márcia", + "Mônica", + "Nádia", + "Natália", + "Nídia", + "Núbia", + "Ofélia", + "Olívia", + "Patrícia", + "Penélope", + "Pérola", + "Suélen", + "Suéli", + "Sílvia", + "Sónia", + "Tâmara", + "Taís", + "Taísa", + "Taíssa", + "Thaís", + "Tânia", + "Valéria", + "Vânia", + "Verônica", + "Vitória" + ] + }, + "withoutAccents": { + "male": [ + "Alessandro", + "Alexandre", + "Anthony", + "Arthur", + "Benjamin", + "Bernardo", + "Breno", + "Bruno", + "Caetano", + "Caio", + "Carlos", + "Daniel", + "Danilo", + "Davi", + "Eduardo", + "Emanuel", + "Enzo", + "Fabiano", + "Fabrício", + "Felipe", + "Frederico", + "Gabriel", + "Guilherme", + "Gustavo", + "Heitor", + "Henrique", + "Hugo", + "Igor", + "Isaac", + "Isaque", + "Joaquim", + "Kleber", + "Leonardo", + "Lorenzo", + "Lucas", + "Lucca", + "Marcelo", + "Marcos", + "Matheus", + "Miguel", + "Murilo", + "Nataniel", + "Nicolas", + "Pablo", + "Paulo", + "Pedro", + "Pietro", + "Rafael", + "Raul", + "Ricardo", + "Roberto", + "Salvador", + "Vicente", + "Vitor", + "Washington", + "Yago", + "Yuri" + ], + "female": [ + "Abigail", + "Adelaide", + "Adelina", + "Adriana", + "Aisha", + "Alana", + "Alessandra", + "Alexa", + "Alexandra", + "Alexia", + "Alice", + "Alicia", + "Aline", + "Alissa", + "Alma", + "Amanda", + "Ana", + "Anabela", + "Andreia", + "Angelina", + "Anita", + "Anna", + "Antonella", + "Ariana", + "Ariane", + "Ariele", + "Aura", + "Aurora", + "Beatriz", + "Benedita", + "Bianca", + "Brenda", + "Briana", + "Bruna", + "Caetana", + "Camila", + "Carina", + "Carla", + "Carlota", + "Carmen", + "Carol", + "Carolina", + "Caroline", + "Catarina", + "Chiara", + "Clara", + "Clarisse", + "Constança", + "Cristiana", + "Cristina", + "Dalila", + "Daniela", + "Dayane", + "Deise", + "Denise", + "Diana", + "Dora", + "Doriana", + "Eduarda", + "Elena", + "Eliana", + "Eliane", + "Elisa", + "Ellen", + "Elsa", + "Emanuelly", + "Emily", + "Erica", + "Erika", + "Esmeralda", + "Estela", + "Ester", + "Esther", + "Eunice", + "Eva", + "Fabiana", + "Filipa", + "Francisca", + "Frederica", + "Gabriela", + "Giovana", + "Giovanna", + "Graça", + "Helena", + "Hellen", + "Iara", + "Irene", + "Irina", + "Iris", + "Isa", + "Isabel", + "Isabela", + "Isabelly", + "Isadora", + "Isaura", + "Isis", + "Jacinta", + "Jacira", + "Jade", + "Jennifer", + "Jessica", + "Joana", + "Josiane", + "Joyce", + "Juliana", + "Julieta", + "Jussara", + "Karina", + "Karla", + "Kayla", + "Kelly", + "Kiara", + "Lais", + "Lara", + "Larissa", + "Laura", + "Leandra", + "Leila", + "Leticia", + "Lia", + "Liana", + "Liane", + "Liara", + "Liliana", + "Lina", + "Lisandra", + "Liz", + "Lorena", + "Lorraine", + "Lua", + "Luana", + "Luciana", + "Luena", + "Luisa", + "Luiza", + "Luna", + "Luz", + "Madalena", + "Mafalda", + "Maiara", + "Maira", + "Manuela", + "Marcela", + "Margarida", + "Maria", + "Mariana", + "Marina", + "Marisa", + "Marli", + "Marta", + "Martina", + "Matilde", + "Maura", + "Maya", + "Mayara", + "Mayra", + "Maísa", + "Meire", + "Melanie", + "Melina", + "Melissa", + "Mercedes", + "Mia", + "Micaela", + "Michele", + "Mila", + "Milana", + "Milena", + "Miranda", + "Miriam", + "Mirian", + "Morgana", + "Naiara", + "Nair", + "Nancy", + "Naomi", + "Nara", + "Natacha", + "Nayara", + "Neuza", + "Nicole", + "Nina", + "Noemi", + "Oriana", + "Paloma", + "Paula", + "Petra", + "Priscila", + "Rafaela", + "Rafaella", + "Raissa", + "Raquel", + "Rayanne", + "Rayssa", + "Rebeca", + "Rebecca", + "Renata", + "Riana", + "Rita", + "Roberta", + "Rosa", + "Rute", + "Sabrina", + "Safira", + "Samanta", + "Samara", + "Samira", + "Samuel", + "Sandra", + "Sara", + "Sarah", + "Sarah", + "Serena", + "Silas", + "Simara", + "Simone", + "Sofia", + "Solange", + "Sophia", + "Soraia", + "Stella", + "Stephanie", + "Susana", + "Talita", + "Tamara", + "Tatiana", + "Telma", + "Teresa", + "Tiffany", + "Valentina", + "Vanessa", + "Vera", + "Victoria", + "Violeta", + "Viviana", + "Viviane", + "Yara", + "Yasmin", + "Yohanna" + ] + } + } +} diff --git a/packages/falso/src/lib/i18n/pt-br/index.ts b/packages/falso/src/lib/i18n/pt-br/index.ts new file mode 100644 index 00000000..5110b00d --- /dev/null +++ b/packages/falso/src/lib/i18n/pt-br/index.ts @@ -0,0 +1 @@ +export { randBird } from './bird'; diff --git a/packages/falso/src/tests/bird.spec.ts b/packages/falso/src/tests/bird.spec.ts index 9bbcc2bf..d727ad1f 100644 --- a/packages/falso/src/tests/bird.spec.ts +++ b/packages/falso/src/tests/bird.spec.ts @@ -10,6 +10,9 @@ import { data as esData } from '../../src/lib/i18n/es/bird.i18n.json'; import { randBird as koRandBird } from '../../src/lib/i18n/ko'; import { data as koData } from '../../src/lib/i18n/ko/bird.i18n.json'; +import { randBird as ptBrRandBird } from '../../src/lib/i18n/pt-br'; +import { data as ptBrData } from '../../src/lib/i18n/pt-br/bird.i18n.json'; + describe('randBird', () => { describe('EN', () => { it('should create one random bird', () => { @@ -50,4 +53,14 @@ describe('randBird', () => { expect(koData).toEqual(expect.arrayContaining([randomBird])); }); }); + + describe('PT-BR', () => { + it('should create one random bird', () => { + const randomBird = ptBrRandBird(); + + expect(randomBird).toBeTruthy(); + expect(typeof randomBird).toEqual('string'); + expect(ptBrData).toEqual(expect.arrayContaining([randomBird])); + }); + }); }); diff --git a/packages/falso/src/tests/first-name.spec.ts b/packages/falso/src/tests/first-name.spec.ts index 580965f2..334d1916 100644 --- a/packages/falso/src/tests/first-name.spec.ts +++ b/packages/falso/src/tests/first-name.spec.ts @@ -1,6 +1,9 @@ import { randFirstName } from '../lib/first-name'; import { data } from '../lib/first-name.json'; -import { data as locale } from '../lib/i18n/ru/first-name.i18n.json'; + +import { data as locale_ru } from '../lib/i18n/ru/first-name.i18n.json'; +import { data as locale_ptBR } from '../lib/i18n/pt-br/first-name.i18n.json'; +import { NameOptions } from '../lib/full-name'; describe('firstName', () => { let specialCharRegex: RegExp; @@ -137,13 +140,13 @@ describe('firstName', () => { }); }); - describe('with provided locale data', () => { - const data = locale; + describe('with provided locale RU data', () => { + const data = locale_ru; it('should works with female gender and provided data', () => { const result = randFirstName({ gender: 'female', - locale, + locale: data, }); expect(data.withoutAccents.female.includes(result)).toBe(true); @@ -152,10 +155,73 @@ describe('firstName', () => { it('should works with male gender and provided data', () => { const result = randFirstName({ gender: 'male', - locale, + locale: data, }); expect(data.withoutAccents.male.includes(result)).toBe(true); }); }); + + describe('with provided locale PT-BR data', () => { + const data = locale_ptBR; + let options: NameOptions; + + describe('female name', () => { + beforeEach(() => { + options = { + gender: 'female', + locale: data, + }; + }); + + it('should return a firstName with at least 1 accented character', () => { + const result = randFirstName({ + ...options, + withAccents: true, + }); + + expect(result.match(specialCharRegex)).toBeTruthy(); + expect(data.withAccents.female.includes(result)).toBe(true); + }); + + it('should return a firstName with only non-accented characters', () => { + const result = randFirstName({ + ...options, + withAccents: false, + }); + + expect(result.match(specialCharRegex)).toBeFalsy(); + expect(data.withoutAccents.female.includes(result)).toBe(true); + }); + }); + + describe('male name', () => { + beforeEach(() => { + options = { + gender: 'male', + locale: data, + }; + }); + + it('should return a firstName with at least 1 accented character', () => { + const result = randFirstName({ + ...options, + withAccents: true, + }); + + expect(result.match(specialCharRegex)).toBeTruthy(); + expect(data.withAccents.male.includes(result)).toBe(true); + }); + + it('should return a firstName with only non-accented characters', () => { + const result = randFirstName({ + ...options, + withAccents: false, + }); + + expect(result.match(specialCharRegex)).toBeFalsy(); + expect(data.withoutAccents.male.includes(result)).toBe(true); + }); + }); + }); });