Skip to content

Commit f4f8bfc

Browse files
authored
Fix possible issue with tr locale in testUsernameWithSpaces
1 parent fd174b1 commit f4f8bfc

3 files changed

Lines changed: 44 additions & 29 deletions

File tree

src/main/java/net/datafaker/providers/base/Internet.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,7 @@ protected Internet(BaseProviders faker) {
4444
*/
4545
@Deprecated(since = "2.5.0", forRemoval = true)
4646
public String username() {
47-
StringBuilder result = new StringBuilder();
48-
final Name name = faker.name();
49-
final String firstName = name.firstName().toLowerCase(faker.getContext().getLocale())
50-
+ "." + name.lastName().toLowerCase(faker.getContext().getLocale());
51-
for (int i = 0; i < firstName.length(); i++) {
52-
final char c = firstName.charAt(i);
53-
if (c == '\'' || Character.isWhitespace(c)) {
54-
continue;
55-
}
56-
result.append(c);
57-
}
58-
return result.toString();
47+
return faker.credentials().username();
5948
}
6049

6150
public String emailAddress() {

src/test/java/net/datafaker/providers/base/CredentialsTest.java

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22

33
import java.util.Collections;
44
import java.util.List;
5+
import java.util.Locale;
56
import java.util.regex.Matcher;
67
import java.util.regex.Pattern;
8+
import java.util.stream.Stream;
79

810
import org.junit.jupiter.api.RepeatedTest;
911
import org.junit.jupiter.api.Test;
12+
import org.junit.jupiter.params.ParameterizedTest;
13+
import org.junit.jupiter.params.provider.Arguments;
14+
import org.junit.jupiter.params.provider.MethodSource;
1015

1116
import static org.assertj.core.api.Assertions.assertThat;
1217
import static org.mockito.Mockito.doReturn;
@@ -20,22 +25,31 @@ void testUsername() {
2025
assertThat(faker.credentials().username()).matches("^(\\w+)\\.(\\w+)$");
2126
}
2227

23-
@Test
24-
void testUsernameWithSpaces() {
28+
@ParameterizedTest
29+
@MethodSource("userNameWithSpacesProvider")
30+
@SuppressWarnings("removal")
31+
void testUsernameWithSpaces(String firstName, String lastName, String expected) {
32+
Locale locale = new Locale("TR");
2533
Name name = mock();
26-
doReturn("Jin Quan").when(name).firstName();
27-
doReturn("D'Artagnan").when(name).lastName();
34+
doReturn(firstName).when(name).firstName();
35+
doReturn(lastName).when(name).lastName();
2836

29-
BaseFaker mockedFaker = new BaseFaker() {
37+
BaseFaker mockedFaker = new BaseFaker(locale) {
3038
@Override
3139
public Name name() {
3240
return name;
3341
}
3442
};
35-
assertThat(mockedFaker.credentials().username())
36-
.doesNotContain(" ", "'")
37-
.matches("^(\\w+)\\.(\\w+)$")
38-
.matches("^\\p{javaLowerCase}+\\.\\p{javaLowerCase}+$");
43+
44+
assertThat(mockedFaker.internet().username())
45+
.isEqualTo(expected);
46+
}
47+
48+
private static Stream<Arguments> userNameWithSpacesProvider() {
49+
return Stream.of(
50+
Arguments.of("Jin Quan", "D'Artagnan", "jinquan.dartagnan"),
51+
Arguments.of("Ivan Ivanov", "Другой Язык", "ıvanıvanov.другойязык")
52+
);
3953
}
4054

4155
@RepeatedTest(100)

src/test/java/net/datafaker/providers/base/InternetTest.java

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
import org.assertj.core.api.Condition;
88
import org.junit.jupiter.api.RepeatedTest;
99
import org.junit.jupiter.api.Test;
10+
import org.junit.jupiter.params.ParameterizedTest;
11+
import org.junit.jupiter.params.provider.Arguments;
12+
import org.junit.jupiter.params.provider.MethodSource;
1013

1114
import java.net.URL;
1215
import java.util.ArrayList;
@@ -16,6 +19,7 @@
1619
import java.util.Random;
1720
import java.util.regex.Pattern;
1821
import java.util.stream.Collectors;
22+
import java.util.stream.Stream;
1923

2024
import static java.lang.Integer.parseInt;
2125
import static net.datafaker.providers.base.Internet.PortRange.RegisteredPorts;
@@ -45,23 +49,31 @@ void emailSubject() {
4549
assertThat(faker.internet().emailSubject()).isNotBlank();
4650
}
4751

48-
@Test
52+
@ParameterizedTest
53+
@MethodSource("userNameWithSpacesProvider")
4954
@SuppressWarnings("removal")
50-
void testUsernameWithSpaces() {
55+
void testUsernameWithSpaces(String firstName, String lastName, String expected) {
56+
Locale locale = new Locale("TR");
5157
Name name = mock();
52-
doReturn("Jin Quan").when(name).firstName();
53-
doReturn("D'Artagnan").when(name).lastName();
58+
doReturn(firstName).when(name).firstName();
59+
doReturn(lastName).when(name).lastName();
5460

55-
BaseFaker mockedFaker = new BaseFaker() {
61+
BaseFaker mockedFaker = new BaseFaker(locale) {
5662
@Override
5763
public Name name() {
5864
return name;
5965
}
6066
};
67+
6168
assertThat(mockedFaker.internet().username())
62-
.doesNotContain(" ", "'")
63-
.matches("^(\\w+)\\.(\\w+)$")
64-
.matches("^\\p{javaLowerCase}+\\.\\p{javaLowerCase}+$");
69+
.isEqualTo(expected);
70+
}
71+
72+
private static Stream<Arguments> userNameWithSpacesProvider() {
73+
return Stream.of(
74+
Arguments.of("Jin Quan", "D'Artagnan", "jinquan.dartagnan"),
75+
Arguments.of("Ivan Ivanov", "Другой Язык", "ıvanıvanov.другойязык")
76+
);
6577
}
6678

6779
@Test

0 commit comments

Comments
 (0)