package org.jbehave.core.model;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import org.jbehave.core.model.TableTransformers.TableTransformer;
import org.junit.Test;
public class TableTransformersBehaviour {
private static final ExamplesTableProperties PROPERTIES = createExamplesTableProperties();
private String tableAsString = "|one|two|\n" + "|11|12|\n" + "|21|22|\n";
private String landscapeTableAsString = "|one|11|21|\n" + "|two|12|22|\n";
private String unformattedTableAsString = "|one | two | three |\n" + "|11 | 12 | 1333| \n" + "|21 |22 | 2333 | \n";
private String formattedTableAsString = "|one|two|three|\n" + "|11 |12 |1333 |\n" + "|21 |22 |2333 |\n";
private String myTransformedTableAsString = "|one |two | |\n" + "|11 |12 | |\n" + "| 21| 22| |\n";
private static ExamplesTableProperties createExamplesTableProperties() {
return new ExamplesTableProperties("", "|", "|", "!--");
}
@Test
public void shouldNotTransformTableIfTransformerNotFound() {
TableTransformers tableTransformers = new TableTransformers();
String transformed = tableTransformers.transform("inexistentTransformer", tableAsString, PROPERTIES);
assertThat(transformed, equalTo(tableAsString));
}
@Test
public void shouldTransformTableFromLandscape() {
TableTransformers tableTransformers = new TableTransformers();
String transformed = tableTransformers.transform(TableTransformers.FROM_LANDSCAPE, landscapeTableAsString,
PROPERTIES);
assertThat(transformed, equalTo(tableAsString));
}
@Test
public void shouldTransformTableByFormatting() {
TableTransformers tableTransformers = new TableTransformers();
String transformed = tableTransformers.transform(TableTransformers.FORMATTING, unformattedTableAsString,
PROPERTIES);
assertThat(transformed, equalTo(formattedTableAsString));
}
@Test
public void shouldTransformTableByReplacement() {
TableTransformers tableTransformers = new TableTransformers();
ExamplesTableProperties properties = createExamplesTableProperties();
properties.getProperties().setProperty("replacing", "|");
properties.getProperties().setProperty("replacement", "\t");
String transformed = tableTransformers.transform(TableTransformers.REPLACING, tableAsString, properties);
assertThat(transformed, equalTo(tableAsString.replace("|", "\t")));
}
@Test
public void shouldTransformNotTableByReplacementIfPropertiesNotFound() {
TableTransformers tableTransformers = new TableTransformers();
String transformed = tableTransformers.transform(TableTransformers.REPLACING, tableAsString, PROPERTIES);
assertThat(transformed, equalTo(tableAsString));
}
@Test
public void shouldTransformTableWithCustomTransformer() {
TableTransformers tableTransformers = new TableTransformers();
tableTransformers.useTransformer("myTransformer", new TableTransformer(){
@Override
public String transform(String tableAsString, ExamplesTableProperties properties) {
return myTransformedTableAsString;
}
});
String transformed = tableTransformers.transform("myTransformer", tableAsString, PROPERTIES);
assertThat(transformed, equalTo(myTransformedTableAsString));
}
}