Skip to content

Commit bfbff3c

Browse files
authored
JBEHAVE-1604 Fix loading of chained tables without user properties
1 parent 8d420ff commit bfbff3c

File tree

5 files changed

+27
-7
lines changed

5 files changed

+27
-7
lines changed

jbehave-core/src/main/java/org/jbehave/core/model/ExamplesTable.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -369,12 +369,10 @@ public String asString() {
369369
return EMPTY_VALUE;
370370
}
371371
StringBuilder sb = new StringBuilder();
372-
for (TableProperties properties : tablePropertiesQueue) {
373-
String propertiesAsString = properties.getPropertiesAsString();
374-
if (!propertiesAsString.isEmpty()) {
375-
sb.append(properties.asString()).append(lastTableProperties().getRowSeparator());
376-
}
377-
}
372+
tablePropertiesQueue.stream().filter(t -> !t.isEmpty())
373+
.map(TableProperties::asString)
374+
.forEach(props -> sb.append(props)
375+
.append(lastTableProperties().getRowSeparator()));
378376
sb.append(ExamplesTableStringBuilder.buildExamplesTableString(lastTableProperties(), getHeaders(),
379377
tableRows.getRows()));
380378

@@ -558,6 +556,10 @@ public Properties getProperties() {
558556
public String getPropertiesAsString() {
559557
return propertiesAsString;
560558
}
559+
560+
public boolean isEmpty() {
561+
return getPropertiesAsString().trim().isEmpty();
562+
}
561563
}
562564

563565
static final class TablePropertiesQueue {

jbehave-core/src/main/java/org/jbehave/core/model/ExamplesTableFactory.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ public ExamplesTable createExamplesTable(String input) {
108108

109109
String table = tablePropertiesQueue.getTable();
110110
if (isExternal(tablePropertiesQueue.getTable(), headProperties)) {
111-
table = target.stream().map(TableProperties::asString)
111+
table = target.stream().filter(t -> !t.isEmpty())
112+
.map(TableProperties::asString)
112113
.collect(Collectors.joining(
113114
System.lineSeparator(),
114115
"",

jbehave-core/src/test/java/org/jbehave/core/model/ExamplesTableFactoryBehaviour.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,20 @@ void shouldLoadTableFromAnotherTableContainingTableReference() {
208208
ensureRowContentIs(rows, 2, asList("STK2", "17.0", "16.0", "ON"));
209209
}
210210

211+
@Test
212+
void shouldLoadTableFromAnotherTableContainingTableReferenceAndNoTableProperties() {
213+
// Given
214+
ExamplesTableFactory factory = new ExamplesTableFactory(new LoadFromClasspath(), new TableTransformers());
215+
// When
216+
ExamplesTable table = factory.createExamplesTable("data-simple-reference.table");
217+
218+
// Then
219+
assertThat(table.getHeaders(), equalTo(asList("Language")));
220+
List<Map<String, String>> rows = table.getRows();
221+
assertThat(rows.size(), equalTo(1));
222+
ensureRowContentIs(rows, 0, asList("Java"));
223+
}
224+
211225
private void ensureRowContentIs(List<Map<String, String>> rows, int row, List<String> expected) {
212226
assertThat(new ArrayList<>(rows.get(row).values()), equalTo(expected));
213227
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
data-simple.table
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
|Language|
2+
|Java |

0 commit comments

Comments
 (0)