// Copyright � 2006-2007 ASERT. Released under the Canoo Webtest license.
package com.canoo.webtest.plugins.exceltest;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import com.canoo.webtest.ant.WebtestTask;
import com.canoo.webtest.steps.Step;
/**
* Test class for {@link AbstractExcelSheetStep}.<p>
*
* @author Rob Nielsen
*/
public class AbstractExcelSheetStepTest extends BaseExcelStepTestCase
{
public void testGetFirstSheet() {
checkGetExcelSheet(0, null, null);
}
public void testGetSheetByName() {
checkGetExcelSheet(1, "Sheet2", null);
}
public void testGetSheetByIndex() {
checkGetExcelSheet(2, null, "2");
}
public void testUnknownSheetName() {
final AbstractExcelSheetStep step = (AbstractExcelSheetStep) getStep();
step.setSheetName("not a sheet");
assertErrorOnExecute(step, "unknown sheet name", "A sheet named 'not a sheet' was not found in the file.");
}
public void testUnknownSheetIndex() {
final AbstractExcelSheetStep step = (AbstractExcelSheetStep) getStep();
step.setSheetIndex("3");
assertErrorOnExecute(step, "unknown sheet index", "Invalid sheet index: 3. This workbook contains sheets with indexes from 0 to 2.");
step.setSheetIndex("-1");
assertErrorOnExecute(step, "unknown sheet index", "sheetIndex parameter with value '-1' must not be negative");
step.setSheetIndex("pork");
assertErrorOnExecute(step, "unknown sheet index", "Can't parse sheetIndex parameter with value 'pork' as an integer.");
}
public void testNoSheets() {
final AbstractExcelSheetStep step = (AbstractExcelSheetStep) getStep();
WebtestTask.setThreadContext(new ExcelContextStub(ExcelTestResources.MINIMAL_FILE));
step.getExcelWorkbook().removeSheetAt(0);
assertErrorOnExecute(step, "no sheets", "This spreadsheet has no sheets");
}
private void checkGetExcelSheet(final int expectedSheetIndex, final String sheetName,
final String sheetIndex) {
final AbstractExcelSheetStep step = (AbstractExcelSheetStep) getStep();
step.setSheetName(sheetName);
step.setSheetIndex(sheetIndex);
final HSSFSheet excelSheet = step.getExcelSheet();
final HSSFSheet expectedSheet = step.getExcelWorkbook().getSheetAt(expectedSheetIndex);
assertSame(expectedSheet, excelSheet);
}
public void testGetSheetStoredInContext() {
final AbstractExcelSheetStep step = (AbstractExcelSheetStep) getStep();
final HSSFSheet currentSheet = step.getExcelWorkbook().getSheetAt(2);
step.setCurrentSheet(currentSheet);
assertSame(currentSheet, step.getExcelSheet());
}
protected Step createStep() {
return new AbstractExcelSheetStepStub();
}
public void testToString() {
}
private static class AbstractExcelSheetStepStub extends AbstractExcelSheetStep {
public void doExecute() throws Exception {
getExcelSheet();
}
}
}