Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(internet): username method to return value that always includes… #2506

Merged
merged 11 commits into from
Nov 19, 2023
60 changes: 40 additions & 20 deletions src/modules/internet/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,9 @@ export class InternetModule {
*
* @example
* faker.internet.email() // 'Kassandra4@hotmail.com'
* faker.internet.email({ firstName: 'Jeanne', lastName: 'Doe' }) // 'Jeanne63@yahoo.com'
* faker.internet.email({ firstName: 'Jeanne'}) // 'Jeanne63@yahoo.com'
* faker.internet.email({ firstName: 'Jeanne'}) // 'Jeanne_Smith63@yahoo.com'
* faker.internet.email({ firstName: 'Jeanne', lastName: 'Doe' }) // 'Jeanne.Doe63@yahoo.com'
* faker.internet.email({ firstName: 'Jeanne', lastName: 'Doe', provider: 'example.fakerjs.dev' }) // 'Jeanne_Doe88@example.fakerjs.dev'
* faker.internet.email({ firstName: 'Jeanne', lastName: 'Doe', provider: 'example.fakerjs.dev', allowSpecialCharacters: true }) // 'Jeanne%Doe88@example.fakerjs.dev'
*
Expand Down Expand Up @@ -112,7 +114,9 @@ export class InternetModule {
*
* @example
* faker.internet.email() // 'Kassandra4@hotmail.com'
* faker.internet.email('Jeanne', 'Doe') // 'Jeanne63@yahoo.com'
* faker.internet.email('Jeanne') // 'Jeanne63@yahoo.com'
* faker.internet.email('Jeanne') // 'Jeanne.Smith63@yahoo.com'
* faker.internet.email('Jeanne', 'Doe') // 'Jeanne_Doe63@yahoo.com'
* faker.internet.email('Jeanne', 'Doe', 'example.fakerjs.dev') // 'Jeanne_Doe88@example.fakerjs.dev'
* faker.internet.email('Jeanne', 'Doe', 'example.fakerjs.dev', { allowSpecialCharacters: true }) // 'Jeanne%Doe88@example.fakerjs.dev'
*
Expand Down Expand Up @@ -150,7 +154,9 @@ export class InternetModule {
*
* @example
* faker.internet.email() // 'Kassandra4@hotmail.com'
* faker.internet.email({ firstName: 'Jeanne', lastName: 'Doe' }) // 'Jeanne63@yahoo.com'
* faker.internet.email({ firstName: 'Jeanne' }) // 'Jeanne63@yahoo.com'
* faker.internet.email({ firstName: 'Jeanne' }) // 'Jeanne.Smith63@yahoo.com'
* faker.internet.email({ firstName: 'Jeanne', lastName: 'Doe' }) // 'Jeanne_Doe63@yahoo.com'
* faker.internet.email({ firstName: 'Jeanne', lastName: 'Doe', provider: 'example.fakerjs.dev' }) // 'Jeanne_Doe88@example.fakerjs.dev'
* faker.internet.email({ firstName: 'Jeanne', lastName: 'Doe', provider: 'example.fakerjs.dev', allowSpecialCharacters: true }) // 'Jeanne%Doe88@example.fakerjs.dev'
*
Expand Down Expand Up @@ -254,7 +260,7 @@ export class InternetModule {

const {
firstName = this.faker.person.firstName(),
lastName = legacyLastName ?? this.faker.person.lastName(),
lastName = legacyLastName,
amillwood marked this conversation as resolved.
Show resolved Hide resolved
provider = legacyProvider ??
this.faker.helpers.arrayElement(
this.faker.definitions.internet.free_email
Expand Down Expand Up @@ -300,7 +306,9 @@ export class InternetModule {
*
* @example
* faker.internet.exampleEmail() // 'Helmer.Graham23@example.com'
* faker.internet.exampleEmail({ firstName: 'Jeanne', lastName: 'Doe' }) // 'Jeanne96@example.net'
* faker.internet.exampleEmail({ firstName: 'Jeanne' }) // 'Jeanne96@example.net'
* faker.internet.exampleEmail({ firstName: 'Jeanne' }) // 'Jeanne.Smith96@example.net'
* faker.internet.exampleEmail({ firstName: 'Jeanne', lastName: 'Doe' }) // 'Jeanne_Doe96@example.net'
* faker.internet.exampleEmail({ firstName: 'Jeanne', lastName: 'Doe', allowSpecialCharacters: true }) // 'Jeanne%Doe88@example.com'
*
* @since 3.1.0
Expand Down Expand Up @@ -336,7 +344,9 @@ export class InternetModule {
*
* @example
* faker.internet.exampleEmail() // 'Helmer.Graham23@example.com'
* faker.internet.exampleEmail('Jeanne', 'Doe') // 'Jeanne96@example.net'
* faker.internet.exampleEmail('Jeanne') // 'Jeanne96@example.net'
* faker.internet.exampleEmail('Jeanne') // 'Jeanne.Smith96@example.net'
* faker.internet.exampleEmail('Jeanne', 'Doe') // 'Jeanne_Doe96@example.net'
* faker.internet.exampleEmail('Jeanne', 'Doe', { allowSpecialCharacters: true }) // 'Jeanne%Doe88@example.com'
*
* @since 3.1.0
Expand Down Expand Up @@ -370,7 +380,9 @@ export class InternetModule {
*
* @example
* faker.internet.exampleEmail() // 'Helmer.Graham23@example.com'
* faker.internet.exampleEmail({ firstName: 'Jeanne', lastName: 'Doe' }) // 'Jeanne96@example.net'
* faker.internet.exampleEmail({ firstName: 'Jeanne' }) // 'Jeanne96@example.net'
* faker.internet.exampleEmail({ firstName: 'Jeanne' }) // 'Jeanne.Smith96@example.net'
* faker.internet.exampleEmail({ firstName: 'Jeanne', lastName: 'Doe' }) // 'Jeanne_Doe96@example.net'
* faker.internet.exampleEmail({ firstName: 'Jeanne', lastName: 'Doe', allowSpecialCharacters: true }) // 'Jeanne%Doe88@example.com'
*
* @since 3.1.0
Expand Down Expand Up @@ -460,7 +472,7 @@ export class InternetModule {

const {
firstName = this.faker.person.firstName(),
lastName = legacyLastName ?? this.faker.person.lastName(),
lastName = legacyLastName,
amillwood marked this conversation as resolved.
Show resolved Hide resolved
allowSpecialCharacters = legacyOptions?.allowSpecialCharacters ?? false,
} = options;

Expand All @@ -478,7 +490,7 @@ export class InternetModule {

/**
* Generates a username using the given person's name as base.
* The resulting username may use neither, one or both of the names provided.
* The resulting username will use the names provided or choose a random name if one is not provided.
amillwood marked this conversation as resolved.
Show resolved Hide resolved
* This will always return a plain ASCII string.
* Some basic stripping of accents and transliteration of characters will be done.
*
Expand All @@ -490,7 +502,9 @@ export class InternetModule {
*
* @example
* faker.internet.userName() // 'Nettie_Zboncak40'
* faker.internet.userName({ firstName: 'Jeanne', lastName: 'Doe'}) // 'Jeanne98' - note surname is not used
* faker.internet.userName({ firstName: 'Jeanne' }) // 'Jeanne98'
* faker.internet.userName({ firstName: 'Jeanne' }) // 'Jeanne.Smith98'
* faker.internet.userName({ firstName: 'Jeanne', lastName: 'Doe'}) // 'Jeanne_Doe98'
* faker.internet.userName({ firstName: 'John', lastName: 'Doe' }) // 'John.Doe'
* faker.internet.userName({ firstName: 'Hélene', lastName: 'Müller' }) // 'Helene_Muller11'
* faker.internet.userName({ firstName: 'Фёдор', lastName: 'Достоевский' }) // 'Fedor.Dostoevskii50'
Expand All @@ -514,7 +528,7 @@ export class InternetModule {
}): string;
/**
* Generates a username using the given person's name as base.
* The resulting username may use neither, one or both of the names provided.
* The resulting username will use the names provided or choose a random name if one is not provided.
* This will always return a plain ASCII string.
* Some basic stripping of accents and transliteration of characters will be done.
*
Expand All @@ -525,7 +539,9 @@ export class InternetModule {
*
* @example
* faker.internet.userName() // 'Nettie_Zboncak40'
* faker.internet.userName('Jeanne', 'Doe') // 'Jeanne98' - note surname is not used
* faker.internet.userName('Jeanne') // 'Jeanne98'
* faker.internet.userName('Jeanne') // 'Jeanne.Smith98'
* faker.internet.userName('Jeanne', 'Doe') // 'Jeanne_Doe98'
* faker.internet.userName('John', 'Doe') // 'John.Doe'
* faker.internet.userName('Hélene', 'Müller') // 'Helene_Muller11'
* faker.internet.userName('Фёдор', 'Достоевский') // 'Fedor.Dostoevskii50'
Expand All @@ -538,7 +554,7 @@ export class InternetModule {
userName(firstName?: string, lastName?: string): string;
/**
* Generates a username using the given person's name as base.
* The resulting username may use neither, one or both of the names provided.
* The resulting username will use the names provided or choose a random name if one is not provided.
* This will always return a plain ASCII string.
* Some basic stripping of accents and transliteration of characters will be done.
*
Expand All @@ -551,7 +567,9 @@ export class InternetModule {
*
* @example
* faker.internet.userName() // 'Nettie_Zboncak40'
* faker.internet.userName({ firstName: 'Jeanne', lastName: 'Doe'}) // 'Jeanne98' - note surname is not used
* faker.internet.userName({ firstName: 'Jeanne'}) // 'Jeanne98'
* faker.internet.userName({ firstName: 'Jeanne'}) // 'Jeanne.Smith98'
* faker.internet.userName({ firstName: 'Jeanne', lastName: 'Doe'}) // 'Jeanne_Doe98'
* faker.internet.userName({ firstName: 'John', lastName: 'Doe' }) // 'John.Doe'
* faker.internet.userName({ firstName: 'Hélene', lastName: 'Müller' }) // 'Helene_Muller11'
* faker.internet.userName({ firstName: 'Фёдор', lastName: 'Достоевский' }) // 'Fedor.Dostoevskii50'
Expand Down Expand Up @@ -616,19 +634,21 @@ export class InternetModule {
} = options;

let result: string;
switch (this.faker.number.int(2)) {
const hasLastName = options.lastName || legacyLastName;
amillwood marked this conversation as resolved.
Show resolved Hide resolved
const strategy = this.faker.number.int(hasLastName ? 1 : 2);
switch (strategy) {
case 0:
result = `${firstName}${this.faker.number.int(99)}`;
result = `${firstName}${this.faker.helpers.arrayElement([
'.',
'_',
])}${lastName}${this.faker.number.int(99)}`;
amillwood marked this conversation as resolved.
Show resolved Hide resolved
break;
case 1:
result =
firstName + this.faker.helpers.arrayElement(['.', '_']) + lastName;
break;
case 2:
result = `${firstName}${this.faker.helpers.arrayElement([
'.',
'_',
])}${lastName}${this.faker.number.int(99)}`;
result = `${firstName}${this.faker.number.int(99)}`;
break;
}

Expand Down
54 changes: 27 additions & 27 deletions test/modules/__snapshots__/git.spec.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,28 @@ exports[`git > 42 > commitDate > with only string refDate 1`] = `"Tue Dec 31 15:

exports[`git > 42 > commitEntry > with only Date refDate 1`] = `
"commit be4abdd39321ad7d3fe01ffce404f4d6db0906bd
Author: Gregg Beahan III <Gregg.Beahan@hotmail.com>
Date: Tue Dec 31 14:49:14 2019 +0100
Author: Gregg.Beahan9 <Gregg.Beahan51@yahoo.com>
Date: Tue Dec 31 00:24:08 2019 +0300

    parse multi-byte sensor
    connect auxiliary bus
"
`;

exports[`git > 42 > commitEntry > with only number refDate 1`] = `
"commit be4abdd39321ad7d3fe01ffce404f4d6db0906bd
Author: Gregg Beahan III <Gregg.Beahan@hotmail.com>
Date: Tue Dec 31 14:49:14 2019 +0100
Author: Gregg.Beahan9 <Gregg.Beahan51@yahoo.com>
Date: Tue Dec 31 00:24:08 2019 +0300

    parse multi-byte sensor
    connect auxiliary bus
"
`;

exports[`git > 42 > commitEntry > with only string refDate 1`] = `
"commit be4abdd39321ad7d3fe01ffce404f4d6db0906bd
Author: Gregg Beahan III <Gregg.Beahan@hotmail.com>
Date: Tue Dec 31 14:49:14 2019 +0100
Author: Gregg.Beahan9 <Gregg.Beahan51@yahoo.com>
Date: Tue Dec 31 00:24:08 2019 +0300

    parse multi-byte sensor
    connect auxiliary bus
"
`;

Expand All @@ -53,28 +53,28 @@ exports[`git > 1211 > commitDate > with only string refDate 1`] = `"Tue Dec 31 0

exports[`git > 1211 > commitEntry > with only Date refDate 1`] = `
"commit adb42f0e3f4a973fab0aeefce96dfcf49cd438df
Author: Imani Anderson <Imani22@hotmail.com>
Date: Tue Dec 31 10:07:32 2019 -0400
Author: Imani.Anderson <Imani.Anderson@yahoo.com>
Date: Tue Dec 31 18:36:59 2019 +0200

    override wireless interface
    copy digital feed
"
`;

exports[`git > 1211 > commitEntry > with only number refDate 1`] = `
"commit adb42f0e3f4a973fab0aeefce96dfcf49cd438df
Author: Imani Anderson <Imani22@hotmail.com>
Date: Tue Dec 31 10:07:32 2019 -0400
Author: Imani.Anderson <Imani.Anderson@yahoo.com>
Date: Tue Dec 31 18:36:59 2019 +0200

    override wireless interface
    copy digital feed
"
`;

exports[`git > 1211 > commitEntry > with only string refDate 1`] = `
"commit adb42f0e3f4a973fab0aeefce96dfcf49cd438df
Author: Imani Anderson <Imani22@hotmail.com>
Date: Tue Dec 31 10:07:32 2019 -0400
Author: Imani.Anderson <Imani.Anderson@yahoo.com>
Date: Tue Dec 31 18:36:59 2019 +0200

    override wireless interface
    copy digital feed
"
`;

Expand All @@ -96,28 +96,28 @@ exports[`git > 1337 > commitDate > with only string refDate 1`] = `"Tue Dec 31 1

exports[`git > 1337 > commitEntry > with only Date refDate 1`] = `
"commit c346ba075bd57f5a62b82d72af39cbbb07a98cba
Author: Miss Friedrich Krajcik <Friedrich41@gmail.com>
Date: Tue Dec 31 04:18:56 2019 -0700
Author: Miss Friedrich Krajcik <Friedrich_Krajcik19@gmail.com>
Date: Tue Dec 31 02:27:22 2019 +0100

    reboot haptic capacitor
    reboot neural pixel
"
`;

exports[`git > 1337 > commitEntry > with only number refDate 1`] = `
"commit c346ba075bd57f5a62b82d72af39cbbb07a98cba
Author: Miss Friedrich Krajcik <Friedrich41@gmail.com>
Date: Tue Dec 31 04:18:56 2019 -0700
Author: Miss Friedrich Krajcik <Friedrich_Krajcik19@gmail.com>
Date: Tue Dec 31 02:27:22 2019 +0100

    reboot haptic capacitor
    reboot neural pixel
"
`;

exports[`git > 1337 > commitEntry > with only string refDate 1`] = `
"commit c346ba075bd57f5a62b82d72af39cbbb07a98cba
Author: Miss Friedrich Krajcik <Friedrich41@gmail.com>
Date: Tue Dec 31 04:18:56 2019 -0700
Author: Miss Friedrich Krajcik <Friedrich_Krajcik19@gmail.com>
Date: Tue Dec 31 02:27:22 2019 +0100

    reboot haptic capacitor
    reboot neural pixel
"
`;

Expand Down
Loading
Loading