Skip to content

Commit f97d465

Browse files
authored
Merge pull request #1014 from mgurov/errorMessageOnMissingNameTableHeader
Show explicit error message when field name missed in table header
2 parents 3bb11c8 + d312bf0 commit f97d465

File tree

3 files changed

+31
-1
lines changed

3 files changed

+31
-1
lines changed

Diff for: core/src/main/java/cucumber/runtime/table/CamelCaseStringConverter.java

+5
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package cucumber.runtime.table;
22

3+
import cucumber.runtime.CucumberException;
4+
35
import java.util.regex.Pattern;
46

57
public class CamelCaseStringConverter implements StringConverter {
@@ -34,6 +36,9 @@ private String capitalize(String string) {
3436
}
3537

3638
private String uncapitalize(String string) {
39+
if (string.isEmpty()) {
40+
throw new CucumberException("Field name cannot be empty. Please check the table header.");
41+
}
3742
return new StringBuilder(string.length()).append(Character.toLowerCase(string.charAt(0))).append(string.substring(1)).toString();
3843
}
3944

Original file line numberDiff line numberDiff line change
@@ -1,15 +1,25 @@
11
package cucumber.runtime.table;
22

3+
import cucumber.runtime.CucumberException;
34
import org.junit.Test;
45

56
import static org.junit.Assert.assertEquals;
67

78
public class CamelCaseStringConverterTest {
9+
10+
private final CamelCaseStringConverter mapper = new CamelCaseStringConverter();
11+
812
@Test
913
public void testTransformToJavaPropertyName() {
10-
CamelCaseStringConverter mapper = new CamelCaseStringConverter();
14+
1115
assertEquals("Transformed Name", "userName", mapper.map("User Name"));
1216
assertEquals("Transformed Name", "birthDate", mapper.map(" Birth Date\t"));
1317
assertEquals("Transformed Name", "email", mapper.map("email"));
1418
}
19+
20+
@Test(expected = CucumberException.class)
21+
public void testEmptyInputShouldBeRejected() {
22+
assertEquals("", mapper.map(" "));
23+
}
24+
1525
}

Diff for: core/src/test/java/cucumber/runtime/table/ToDataTableTest.java

+15
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,21 @@ public void gives_a_nice_error_message_when_field_is_missing() {
6565
}
6666
}
6767

68+
@Test
69+
public void gives_explicit_error_message_on_field_name_missing_in_header() {
70+
try {
71+
tc.toList(TableParser.parse("" +
72+
"| name | |\n" +
73+
"| Sid Vicious | 10/05/1957 |\n" +
74+
"| Frank Zappa | 21/12/1940 |\n" +
75+
"", PARAMETER_INFO),
76+
UserPojo.class);
77+
fail();
78+
} catch (CucumberException e) {
79+
assertEquals("Field name cannot be empty. Please check the table header.", e.getMessage());
80+
}
81+
}
82+
6883
@Test
6984
public void gives_a_nice_error_message_when_primitive_field_is_null() {
7085
try {

0 commit comments

Comments
 (0)