Package fitnesse.testsystems.slim.tables

Source Code of fitnesse.testsystems.slim.tables.SlimTableFactoryTest

package fitnesse.testsystems.slim.tables;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import fitnesse.testsystems.slim.SlimTestContextImpl;
import fitnesse.testsystems.slim.Table;
import org.junit.Before;
import org.junit.Test;

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

public class SlimTableFactoryTest {
  private SlimTableFactory slimTableFactory;
  private Table table;
  private Map<String, Class<? extends SlimTable>> map;

  @Before
  public void setUp() {
    slimTableFactory = new SlimTableFactory();
    table = mock(Table.class);
    map = new HashMap<String, Class<? extends SlimTable>>();
    map.put("dt:", DecisionTable.class);
    map.put("dT:", DecisionTable.class);
    map.put("decision:", DecisionTable.class);
    map.put("ddt:", DynamicDecisionTable.class);
    map.put("dynamic decision:", DynamicDecisionTable.class);
    map.put("ordered query:", OrderedQueryTable.class);
    map.put("subset query:", SubsetQueryTable.class);
    map.put("query:", QueryTable.class);
    map.put("table:", TableTable.class);
    map.put("script", ScriptTable.class);
    map.put("script:", ScriptTable.class);
    map.put("scenario", ScenarioTable.class);
    map.put("import", ImportTable.class);
    map.put("something", DecisionTable.class);
    map.put("library", LibraryTable.class);
  }

  @Test
  public void commentTableShouldReturnNull() {
    when(table.getCellContents(0, 0)).thenReturn("comment");
    SlimTable slimTable = slimTableFactory.makeSlimTable(table, "0", new SlimTestContextImpl());
    assertThat(slimTable, nullValue());
  }

  @Test
  public void tableTypeStartingWithcommentColonShouldReturnNull() {
    when(table.getCellContents(0, 0)).thenReturn("comment: a comment table");
    SlimTable slimTable = slimTableFactory.makeSlimTable(table, "0", new SlimTestContextImpl());
    assertThat(slimTable, nullValue());
  }

  @Test
  public void shouldCreateCorrectSlimTableForTablesType() {
        for (Entry<String, Class<? extends SlimTable>> entry : map.entrySet()) {
      assertThatTableTypeCreateSlimTableType(entry.getKey(), entry.getValue());
    }
  }

  private void assertThatTableTypeCreateSlimTableType(String tableType, Class<? extends SlimTable> expectedClass) {
    when(table.getCellContents(0, 0)).thenReturn(tableType);
    SlimTable slimTable = slimTableFactory.makeSlimTable(table, "0", new SlimTestContextImpl());
    String message = "should have created a " + expectedClass + " for tabletype: " + tableType
        + " but was " + slimTable.getClass();
    assertThat(message, slimTable, instanceOf(expectedClass));
  }

  @Test
  public void checkTableTypeDefineUsedForTable() {
    assertThatTableTypeImportWorks("My query table", "Query", "My query Table", QueryTable.class);

    assertThatTableTypeImportWorks("Graceful Difference 1", "Query", "GracefulDifference1", QueryTable.class);
    assertThatTableTypeImportWorks("GracefulDifference2", "Query", "Graceful Difference 2", QueryTable.class);

    assertThatTableTypeImportWorks("A Table table", "Table", "A Table table", TableTable.class);

    assertThatTableTypeImportWorks("As is allowed", "as Table", "As is allowed", TableTable.class);
    assertThatTableTypeImportWorks("Colon is okay too", "as:Table", "Colon is okay too", TableTable.class);

    assertThatTableTypeImportWorks("", "", "This should be default", DecisionTable.class);

    assertThatTableTypeImportWorks("My script table", "Script", "My script Table", ScriptTable.class);
  }

  @Test
  public void checkTableTypeDefinesIgnoredIfDifferentSpecified() {
    assertThatTableTypeImportWorks("OverrideTable", "as Table", "dt: Override Table", DecisionTable.class);

    assertThatTableTypeImportWorks("MakeQuery", "as Table", "query: Make Query", QueryTable.class);
  }


  private void assertThatTableTypeImportWorks(String importName, String importTypedescription, String tableName,
      Class<? extends SlimTable> tableClass) {
    addTableTypeImport(importName, importTypedescription);
    assertThatTableTypeCreateSlimTableType(tableName, tableClass);
  }

  private void addTableTypeImport(String tablename, String type) {
    when(table.getCellContents(0, 0)).thenReturn("Define Table Type");
    when(table.getCellContents(0, 1)).thenReturn(tablename);
    when(table.getCellContents(1, 1)).thenReturn(type);
    when(table.getRowCount()).thenReturn(2);
    when(table.getColumnCountInRow(0)).thenReturn(1);
    when(table.getColumnCountInRow(1)).thenReturn(2);
    slimTableFactory.makeSlimTable(table, "0", new SlimTestContextImpl());
  }
}
TOP

Related Classes of fitnesse.testsystems.slim.tables.SlimTableFactoryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.