01: // Copyright © 2006-2007 ASERT. Released under the Canoo Webtest license.
02: package com.canoo.webtest.plugins.exceltest;
03:
04: import org.apache.poi.hssf.usermodel.HSSFSheet;
05:
06: import com.canoo.webtest.ant.WebtestTask;
07: import com.canoo.webtest.steps.Step;
08:
09: /**
10: * Test class for {@link AbstractExcelSheetStep}.<p>
11: *
12: * @author Rob Nielsen
13: */
14: public class AbstractExcelSheetStepTest extends BaseExcelStepTestCase {
15:
16: public void testGetFirstSheet() {
17: checkGetExcelSheet(0, null, null);
18: }
19:
20: public void testGetSheetByName() {
21: checkGetExcelSheet(1, "Sheet2", null);
22: }
23:
24: public void testGetSheetByIndex() {
25: checkGetExcelSheet(2, null, "2");
26: }
27:
28: public void testUnknownSheetName() {
29: final AbstractExcelSheetStep step = (AbstractExcelSheetStep) getStep();
30: step.setSheetName("not a sheet");
31: assertErrorOnExecute(step, "unknown sheet name",
32: "A sheet named 'not a sheet' was not found in the file.");
33: }
34:
35: public void testUnknownSheetIndex() {
36: final AbstractExcelSheetStep step = (AbstractExcelSheetStep) getStep();
37: step.setSheetIndex("3");
38: assertErrorOnExecute(
39: step,
40: "unknown sheet index",
41: "Invalid sheet index: 3. This workbook contains sheets with indexes from 0 to 2.");
42: step.setSheetIndex("-1");
43: assertErrorOnExecute(step, "unknown sheet index",
44: "sheetIndex parameter with value '-1' must not be negative");
45: step.setSheetIndex("pork");
46: assertErrorOnExecute(step, "unknown sheet index",
47: "Can't parse sheetIndex parameter with value 'pork' as an integer.");
48: }
49:
50: public void testNoSheets() {
51: final AbstractExcelSheetStep step = (AbstractExcelSheetStep) getStep();
52: WebtestTask.setThreadContext(new ExcelContextStub(
53: ExcelTestResources.MINIMAL_FILE));
54: step.getExcelWorkbook().removeSheetAt(0);
55: assertErrorOnExecute(step, "no sheets",
56: "This spreadsheet has no sheets");
57: }
58:
59: private void checkGetExcelSheet(final int expectedSheetIndex,
60: final String sheetName, final String sheetIndex) {
61: final AbstractExcelSheetStep step = (AbstractExcelSheetStep) getStep();
62: step.setSheetName(sheetName);
63: step.setSheetIndex(sheetIndex);
64: final HSSFSheet excelSheet = step.getExcelSheet();
65: final HSSFSheet expectedSheet = step.getExcelWorkbook()
66: .getSheetAt(expectedSheetIndex);
67: assertSame(expectedSheet, excelSheet);
68: }
69:
70: public void testGetSheetStoredInContext() {
71: final AbstractExcelSheetStep step = (AbstractExcelSheetStep) getStep();
72: final HSSFSheet currentSheet = step.getExcelWorkbook()
73: .getSheetAt(2);
74: step.setCurrentSheet(currentSheet);
75: assertSame(currentSheet, step.getExcelSheet());
76: }
77:
78: protected Step createStep() {
79: return new AbstractExcelSheetStepStub();
80: }
81:
82: public void testToString() {
83: }
84:
85: private static class AbstractExcelSheetStepStub extends
86: AbstractExcelSheetStep {
87: public void doExecute() throws Exception {
88: getExcelSheet();
89: }
90: }
91: }
|