diff options
| author | Matt Mayer <[email protected]> | 2022-12-04 03:15:36 +0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-12-03 21:15:36 +0100 |
| commit | 4ed45fa33f80c59625a285d06abe31ce2f524357 (patch) | |
| tree | a01624a3f23004160fcbe63533358ae8819d67ca /test | |
| parent | 5e51335e19426820874c75678ee5a7ebd332a911 (diff) | |
| download | faker-4ed45fa33f80c59625a285d06abe31ce2f524357.tar.xz faker-4ed45fa33f80c59625a285d06abe31ce2f524357.zip | |
fix(internet): userName, email and slugify return only ascii (#1554)
Diffstat (limited to 'test')
| -rw-r--r-- | test/__snapshots__/internet.spec.ts.snap | 96 | ||||
| -rw-r--r-- | test/helpers.spec.ts | 14 | ||||
| -rw-r--r-- | test/internet.spec.ts | 98 |
3 files changed, 178 insertions, 30 deletions
diff --git a/test/__snapshots__/internet.spec.ts.snap b/test/__snapshots__/internet.spec.ts.snap index 4b87bff9..5b33c9e2 100644 --- a/test/__snapshots__/internet.spec.ts.snap +++ b/test/__snapshots__/internet.spec.ts.snap @@ -6,6 +6,24 @@ exports[`internet > 42 > color > noArgs 1`] = `"#30667a"`; exports[`internet > 42 > color > with color base 1`] = `"#6298ac"`; +exports[`internet > 42 > displayName > noArgs 1`] = `"Garnet.Schinner73"`; + +exports[`internet > 42 > displayName > noArgs 2`] = `"Garnet.Schinner73"`; + +exports[`internet > 42 > displayName > noArgs 3`] = `"Garnet.Schinner73"`; + +exports[`internet > 42 > displayName > noArgs 4`] = `"Garnet.Schinner73"`; + +exports[`internet > 42 > displayName > with Chinese names 1`] = `"大羽_陳"`; + +exports[`internet > 42 > displayName > with Cyrillic names 1`] = `"Фёдор_Достоевский"`; + +exports[`internet > 42 > displayName > with Latin names 1`] = `"Jane_Doe"`; + +exports[`internet > 42 > displayName > with accented names 1`] = `"Hélene_Müller"`; + +exports[`internet > 42 > displayName > with names 1`] = `"Jane_Doe"`; + exports[`internet > 42 > domainName 1`] = `"hasty-shin.org"`; exports[`internet > 42 > domainSuffix 1`] = `"info"`; @@ -62,6 +80,20 @@ exports[`internet > 42 > userAgent 1`] = `"Mozilla/5.0 (Windows; U; Windows NT 6 exports[`internet > 42 > userName > noArgs 1`] = `"Garnet.Schinner73"`; +exports[`internet > 42 > userName > noArgs 2`] = `"Garnet.Schinner73"`; + +exports[`internet > 42 > userName > noArgs 3`] = `"Garnet.Schinner73"`; + +exports[`internet > 42 > userName > noArgs 4`] = `"Garnet.Schinner73"`; + +exports[`internet > 42 > userName > with Chinese names 1`] = `"hlzp8d_tpv"`; + +exports[`internet > 42 > userName > with Cyrillic names 1`] = `"Fedor_Dostoevskii"`; + +exports[`internet > 42 > userName > with Latin names 1`] = `"Jane_Doe"`; + +exports[`internet > 42 > userName > with accented names 1`] = `"Helene_Muller"`; + exports[`internet > 42 > userName > with names 1`] = `"Jane_Doe"`; exports[`internet > 1211 > avatar 1`] = `"https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/1160.jpg"`; @@ -70,6 +102,24 @@ exports[`internet > 1211 > color > noArgs 1`] = `"#773a72"`; exports[`internet > 1211 > color > with color base 1`] = `"#a96ca4"`; +exports[`internet > 1211 > displayName > noArgs 1`] = `"Tito_Koelpin22"`; + +exports[`internet > 1211 > displayName > noArgs 2`] = `"Tito_Koelpin22"`; + +exports[`internet > 1211 > displayName > noArgs 3`] = `"Tito_Koelpin22"`; + +exports[`internet > 1211 > displayName > noArgs 4`] = `"Tito_Koelpin22"`; + +exports[`internet > 1211 > displayName > with Chinese names 1`] = `"大羽.陳89"`; + +exports[`internet > 1211 > displayName > with Cyrillic names 1`] = `"Фёдор.Достоевский89"`; + +exports[`internet > 1211 > displayName > with Latin names 1`] = `"Jane.Doe89"`; + +exports[`internet > 1211 > displayName > with accented names 1`] = `"Hélene.Müller89"`; + +exports[`internet > 1211 > displayName > with names 1`] = `"Jane.Doe89"`; + exports[`internet > 1211 > domainName 1`] = `"vibrant-infix.org"`; exports[`internet > 1211 > domainSuffix 1`] = `"org"`; @@ -126,6 +176,20 @@ exports[`internet > 1211 > userAgent 1`] = `"Mozilla/5.0 (Macintosh; U; Intel Ma exports[`internet > 1211 > userName > noArgs 1`] = `"Tito_Koelpin22"`; +exports[`internet > 1211 > userName > noArgs 2`] = `"Tito_Koelpin22"`; + +exports[`internet > 1211 > userName > noArgs 3`] = `"Tito_Koelpin22"`; + +exports[`internet > 1211 > userName > noArgs 4`] = `"Tito_Koelpin22"`; + +exports[`internet > 1211 > userName > with Chinese names 1`] = `"hlzp8d.tpv89"`; + +exports[`internet > 1211 > userName > with Cyrillic names 1`] = `"Fedor.Dostoevskii89"`; + +exports[`internet > 1211 > userName > with Latin names 1`] = `"Jane.Doe89"`; + +exports[`internet > 1211 > userName > with accented names 1`] = `"Helene.Muller89"`; + exports[`internet > 1211 > userName > with names 1`] = `"Jane.Doe89"`; exports[`internet > 1337 > avatar 1`] = `"https://cloudflare-ipfs.com/ipfs/Qmd3W5DuhgHirLHGVixi6V76LhCkZUz6pnFt5AJBiyvHye/avatar/327.jpg"`; @@ -134,6 +198,24 @@ exports[`internet > 1337 > color > noArgs 1`] = `"#214814"`; exports[`internet > 1337 > color > with color base 1`] = `"#537a46"`; +exports[`internet > 1337 > displayName > noArgs 1`] = `"Devyn21"`; + +exports[`internet > 1337 > displayName > noArgs 2`] = `"Devyn21"`; + +exports[`internet > 1337 > displayName > noArgs 3`] = `"Devyn21"`; + +exports[`internet > 1337 > displayName > noArgs 4`] = `"Devyn21"`; + +exports[`internet > 1337 > displayName > with Chinese names 1`] = `"大羽56"`; + +exports[`internet > 1337 > displayName > with Cyrillic names 1`] = `"Фёдор56"`; + +exports[`internet > 1337 > displayName > with Latin names 1`] = `"Jane56"`; + +exports[`internet > 1337 > displayName > with accented names 1`] = `"Hélene56"`; + +exports[`internet > 1337 > displayName > with names 1`] = `"Jane56"`; + exports[`internet > 1337 > domainName 1`] = `"fair-migration.com"`; exports[`internet > 1337 > domainSuffix 1`] = `"biz"`; @@ -190,4 +272,18 @@ exports[`internet > 1337 > userAgent 1`] = `"Mozilla/5.0 (Windows; U; Windows NT exports[`internet > 1337 > userName > noArgs 1`] = `"Devyn21"`; +exports[`internet > 1337 > userName > noArgs 2`] = `"Devyn21"`; + +exports[`internet > 1337 > userName > noArgs 3`] = `"Devyn21"`; + +exports[`internet > 1337 > userName > noArgs 4`] = `"Devyn21"`; + +exports[`internet > 1337 > userName > with Chinese names 1`] = `"hlzp8d56"`; + +exports[`internet > 1337 > userName > with Cyrillic names 1`] = `"Fedor56"`; + +exports[`internet > 1337 > userName > with Latin names 1`] = `"Jane56"`; + +exports[`internet > 1337 > userName > with accented names 1`] = `"Helene56"`; + exports[`internet > 1337 > userName > with names 1`] = `"Jane56"`; diff --git a/test/helpers.spec.ts b/test/helpers.spec.ts index c56d2589..530c3b49 100644 --- a/test/helpers.spec.ts +++ b/test/helpers.spec.ts @@ -180,9 +180,19 @@ describe('helpers', () => { }); describe('slugify()', () => { - it('removes unwanted characters from URI string', () => { - expect(faker.helpers.slugify('Aiden.Harªann')).toBe('Aiden.Harann'); + it('removes non-word characters from strings except . and -', () => { + expect(faker.helpers.slugify('foo bar')).toBe('foo-bar'); + expect(faker.helpers.slugify('Faker is cool')).toBe('Faker-is-cool'); + expect(faker.helpers.slugify('super*star')).toBe('superstar'); expect(faker.helpers.slugify("d'angelo.net")).toBe('dangelo.net'); + expect(faker.helpers.slugify('hello你好')).toBe('hello'); + }); + + it('strips simple diacritics from strings', () => { + expect(faker.helpers.slugify('Aiden.Harªann')).toBe('Aiden.Haraann'); + expect(faker.helpers.slugify('Adèle.Argüello')).toBe( + 'Adele.Arguello' + ); }); }); diff --git a/test/internet.spec.ts b/test/internet.spec.ts index 02f0edaa..45ed1963 100644 --- a/test/internet.spec.ts +++ b/test/internet.spec.ts @@ -38,7 +38,17 @@ describe('internet', () => { }); t.describe('userName', (t) => { - t.it('noArgs').it('with names', 'Jane', 'Doe'); + t.it('noArgs').it('with Latin names', 'Jane', 'Doe'); + t.it('noArgs').it('with accented names', 'Hélene', 'Müller'); + t.it('noArgs').it('with Cyrillic names', 'Фёдор', 'Достоевский'); + t.it('noArgs').it('with Chinese names', '大羽', '陳'); + }); + + t.describe('displayName', (t) => { + t.it('noArgs').it('with Latin names', 'Jane', 'Doe'); + t.it('noArgs').it('with accented names', 'Hélene', 'Müller'); + t.it('noArgs').it('with Cyrillic names', 'Фёдор', 'Достоевский'); + t.it('noArgs').it('with Chinese names', '大羽', '陳'); }); t.describe('password', (t) => { @@ -98,6 +108,20 @@ describe('internet', () => { expect(faker.definitions.internet.free_email).toContain(suffix); }); + it('should return a valid email in every locale', () => { + for (const locale of Object.keys(faker.locales)) { + faker.setLocale(locale); + const email = faker.internet.email(); + + expect(email).toBeTruthy(); + expect(email).toBeTypeOf('string'); + expect(email).toSatisfy( + validator.isEmail, + `locale: ${locale} has invalid email: ${email}` + ); + } + }); + it('should return an email with given firstName', () => { const email = faker.internet.email('Aiden.Harann55'); @@ -130,19 +154,6 @@ describe('internet', () => { expect(faker.definitions.internet.free_email).toContain(suffix); }); - it('should return an email with japanese characters', () => { - const email = faker.internet.email('思源_唐3'); - - expect(email).toBeTruthy(); - expect(email).toBeTypeOf('string'); - expect(email).toSatisfy(validator.isEmail); - - const [prefix, suffix] = email.split('@'); - - expect(prefix).toMatch(/^思源_唐3/); - expect(faker.definitions.internet.free_email).toContain(suffix); - }); - it('should return an email with special characters', () => { const email = faker.internet.email('Mike', 'Smith', null, { allowSpecialCharacters: true, @@ -203,20 +214,6 @@ describe('internet', () => { expect(prefix).toMatch(/^Aiden([._]Harann)?\d*/); }); - it('should return an email with the example suffix and japanese characters', () => { - const email = faker.internet.exampleEmail('思源_唐3'); - - expect(email).toBeTruthy(); - expect(email).toBeTypeOf('string'); - expect(email).toSatisfy(validator.isEmail); - - const [prefix, suffix] = email.split('@'); - - expect(suffix).toMatch(/^example\.(com|net|org)$/); - expect(faker.definitions.internet.example_email).toContain(suffix); - expect(prefix).toMatch(/^思源_唐3/); - }); - it('should return an email with special characters', () => { const email = faker.internet.exampleEmail('Mike', 'Smith', { allowSpecialCharacters: true, @@ -262,6 +259,51 @@ describe('internet', () => { /^Aiden((\d{1,2})|([._]Harann\d{1,2})|([._](Harann)))/ ); }); + + it('should strip accents', () => { + const username = faker.internet.userName('Adèle', 'Smith'); + expect(username).includes('Adele'); + }); + + it('should transliterate Cyrillic', () => { + const username = faker.internet.userName('Амос', 'Васильев'); + expect(username).includes('Amos'); + }); + + it('should provide a fallback for Chinese etc', () => { + const username = faker.internet.userName('大羽', '陳'); + expect(username).includes('hlzp8d'); + }); + }); + + describe('displayName()', () => { + it('should return a random display name', () => { + const displayName = faker.internet.displayName(); + + expect(displayName).toBeTruthy(); + expect(displayName).toBeTypeOf('string'); + expect(displayName).toMatch(/\w/); + }); + + it('should return a random display name with given firstName', () => { + const displayName = faker.internet.displayName('Aiden'); + + expect(displayName).toBeTruthy(); + expect(displayName).toBeTypeOf('string'); + expect(displayName).toMatch(/\w/); + expect(displayName).includes('Aiden'); + }); + + it('should return a random display name with given firstName and lastName', () => { + const displayName = faker.internet.displayName('Aiden', 'Harann'); + + expect(displayName).toBeTruthy(); + expect(displayName).toBeTypeOf('string'); + expect(displayName).includes('Aiden'); + expect(displayName).toMatch( + /^Aiden((\d{1,2})|([._]Harann\d{1,2})|([._](Harann)))/ + ); + }); }); describe('protocol()', () => { |
