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
61 changes: 40 additions & 21 deletions src/modules/internet/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,9 @@ export class InternetModule extends ModuleBase {
*
* @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 @@ -107,7 +109,9 @@ export class InternetModule extends ModuleBase {
*
* @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 @@ -145,7 +149,9 @@ export class InternetModule extends ModuleBase {
*
* @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 @@ -248,8 +254,8 @@ export class InternetModule extends ModuleBase {
}

const {
firstName = this.faker.person.firstName(),
lastName = legacyLastName ?? this.faker.person.lastName(),
firstName,
lastName = legacyLastName,
provider = legacyProvider ??
this.faker.helpers.arrayElement(
this.faker.definitions.internet.free_email
Expand Down Expand Up @@ -295,7 +301,9 @@ export class InternetModule extends ModuleBase {
*
* @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 @@ -331,7 +339,9 @@ export class InternetModule extends ModuleBase {
*
* @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 @@ -365,7 +375,9 @@ export class InternetModule extends ModuleBase {
*
* @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 @@ -454,8 +466,8 @@ export class InternetModule extends ModuleBase {
}

const {
firstName = this.faker.person.firstName(),
lastName = legacyLastName ?? this.faker.person.lastName(),
firstName,
lastName = legacyLastName,
allowSpecialCharacters = legacyOptions?.allowSpecialCharacters ?? false,
} = options;

Expand Down Expand Up @@ -485,7 +497,9 @@ export class InternetModule extends ModuleBase {
*
* @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 @@ -520,7 +534,9 @@ export class InternetModule extends ModuleBase {
*
* @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 @@ -546,7 +562,9 @@ export class InternetModule extends ModuleBase {
*
* @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 @@ -608,22 +626,23 @@ export class InternetModule extends ModuleBase {
const {
firstName = this.faker.person.firstName(),
lastName = legacyLastName ?? this.faker.person.lastName(),
lastName: hasLastName = legacyLastName,
} = options;

let result: string;
switch (this.faker.number.int(2)) {
const strategy = this.faker.number.int(hasLastName ? 1 : 2);
const separator = this.faker.helpers.arrayElement(['.', '_']);
switch (strategy) {
case 0:
result = `${firstName}${this.faker.number.int(99)}`;
result = `${firstName}${separator}${lastName}${this.faker.number.int(
99
)}`;
break;
case 1:
result =
firstName + this.faker.helpers.arrayElement(['.', '_']) + lastName;
result = `${firstName}${separator}${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