// Copyright � 2002-2005 Canoo Engineering AG, Switzerland. package com.canoo.webtest.steps.verify; import com.canoo.webtest.engine.StepExecutionException; import com.canoo.webtest.engine.StepFailedException; import com.canoo.webtest.self.TestBlock; import com.canoo.webtest.self.ThrowAssert; import com.canoo.webtest.steps.BaseStepTestCase; import com.canoo.webtest.steps.Step; public class VerifyElementTextTest extends BaseStepTestCase { private static final String HTML_DOC_HEADER = "<html><head><title>foo</title></head><body>"; private static final String HTML_DOC_FOOTER = "</body></html>"; private static final String HTML_DOCUMENT = HTML_DOC_HEADER + " page text <b>1</b>" + "<form name='radioform' action='/dummy'>" + " <textarea name='Hugo' cols='80' rows='20'>The very large text area named hugo.</textarea>" + " <textarea name='notext' cols='5' rows='10'></textarea>" + " <textarea id='someId' cols='5' rows='10'>The text area with id someId.</textarea>" + "</form>" + "Page text 2" + HTML_DOC_FOOTER; private VerifyElementText fStep; protected static final String ERR_FINGERPRINT = "Wrong contents found in HTML element"; protected void setUp() throws Exception { super.setUp(); fStep = (VerifyElementText) getStep(); getContext().setDefaultResponse(HTML_DOCUMENT); } protected void tearDown() throws Exception { super.tearDown(); } protected Step createStep() { return new VerifyElementText(); } public void testInsufficientParameters() throws Exception { String expectedErrorMessage = "One of 'htmlId' or 'type' must be set."; String message = ThrowAssert.assertThrows(StepExecutionException.class, new TestBlock() { public void call() throws Exception { fStep.setText("some text"); executeStep(fStep); } }); assertTrue("expected start <" + expectedErrorMessage + "> but was <" + message + ">", message.startsWith(expectedErrorMessage)); } public void testTextAreaWithText() throws Exception { // <verifyElementText type="textarea" name="Hugo" text="The very large text area named hugo."/> fStep.setType("textarea"); fStep.setName("Hugo"); fStep.setText("The very large text area named hugo."); executeStep(fStep); } public void testTextAreaWithId() throws Exception { // <verifyElementText htmlId="someId" text="The text area with id someId."/> fStep.setHtmlId("someId"); fStep.setText("The text area with id someId."); executeStep(fStep); } public void testNegativeTextAreaWithText() throws Exception { // <verifyElementText type="textarea" name="Hugo" text="Deep Blue"/> fStep.setType("textarea"); fStep.setName("Hugo"); fStep.setText("Deep Blue"); final String msg = ThrowAssert.assertThrows(StepFailedException.class, new TestBlock() { public void call() throws Exception { executeStep(fStep); } }); assertTrue(msg.indexOf(ERR_FINGERPRINT) != -1); } public void testTextAreaWithoutText() throws Exception { // <verifyElementText type="textarea" name="notext" text=""/> fStep.setType("textarea"); fStep.setName("notext"); fStep.setText(""); executeStep(fStep); } public void testElementWithSubelements() throws Exception { fStep.setType("body"); fStep.setText("The very large text area named hugo"); fStep.setRegex("true"); executeStep(fStep); } }