From cf6dcb6af74462b5119cb35492a50b78910b8a4f Mon Sep 17 00:00:00 2001 From: Mallory Adams Date: Fri, 19 Aug 2022 14:09:44 -0400 Subject: [PATCH] Allow some email addresses to contain single quote characters --- .../java/com/github/javafaker/Internet.java | 2 +- src/main/java/com/github/javafaker/Name.java | 26 +++++++++++++++++++ .../java/com/github/javafaker/NameTest.java | 15 ++++++++++- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/javafaker/Internet.java b/src/main/java/com/github/javafaker/Internet.java index 163a072e4..58d1a54b3 100644 --- a/src/main/java/com/github/javafaker/Internet.java +++ b/src/main/java/com/github/javafaker/Internet.java @@ -19,7 +19,7 @@ protected Internet(Faker faker) { } public String emailAddress() { - return emailAddress(faker.name().username()); + return emailAddress(faker.name().localPart()); } public String emailAddress(String localPart) { diff --git a/src/main/java/com/github/javafaker/Name.java b/src/main/java/com/github/javafaker/Name.java index 0a5238f1d..dd3f25ee8 100644 --- a/src/main/java/com/github/javafaker/Name.java +++ b/src/main/java/com/github/javafaker/Name.java @@ -129,6 +129,32 @@ public String username() { return StringUtils.deleteWhitespace(username); } + + /** + *

+ * A lowercase local part of an email address composed of the first_name and last_name joined with a '.'. Some + * examples are: + *

+ *

+ * @return a random two part local part of an email address. + * @see Name#firstName() + * @see Name#lastName() + */ + public String localPart() { + + String username = StringUtils.join( + firstName().toLowerCase(), + ".", + lastName().toLowerCase() + ); + + return StringUtils.deleteWhitespace(username); + } /** *

Returns a blood group such as O−, O+, A-, A+, B-, B+, AB-, AB+

diff --git a/src/test/java/com/github/javafaker/NameTest.java b/src/test/java/com/github/javafaker/NameTest.java index 6649fdd63..d9dd3f4f3 100644 --- a/src/test/java/com/github/javafaker/NameTest.java +++ b/src/test/java/com/github/javafaker/NameTest.java @@ -74,7 +74,20 @@ public void testUsernameWithSpaces() { doReturn(name).when(faker).name(); assertThat(faker.name().username(), matchesRegularExpression("^(\\w+)\\.(\\w+)$")); } - + + @Test + public void testLocalPart() { + assertThat(faker.name().localPart(), matchesRegularExpression("^([\\w']+)\\.([\\w']+)$")); + } + + @Test + public void testLocalPartWithSpaces() { + final Name name = spy(new Name(faker)); + doReturn("Compound Name").when(name).firstName(); + doReturn(name).when(faker).name(); + assertThat(faker.name().localPart(), matchesRegularExpression("^([\\w']+)\\.([\\w']+)$")); + } + @Test public void testBloodGroup() { assertThat(faker.name().bloodGroup(), matchesRegularExpression("(A|B|AB|O)[+-]"));