// Copyright � 2004-2007 ASERT. Released under the Canoo Webtest license. package com.canoo.webtest.extension; 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; import com.canoo.webtest.steps.form.AbstractSetFieldStep; import com.gargoylesoftware.htmlunit.html.HtmlInput; import com.gargoylesoftware.htmlunit.html.HtmlPage; /** * Test class for {@link ForceHiddenInputField}.<p> * * @author Paul King */ public class ForceHiddenInputFieldTest extends BaseStepTestCase { private ForceHiddenInputField fStep; protected Step createStep() { return new ForceHiddenInputField(); } protected void setUp() throws Exception { super.setUp(); fStep = (ForceHiddenInputField) getStep(); } public void testVerifyParameterUsage() { TestBlock block = new TestBlock() { public void call() throws Exception { executeStep(fStep); } }; // <ForceHiddenInputField value="someValue"/> fStep.setName(null); fStep.setValue("someValue"); String message = ThrowAssert.assertThrows(StepExecutionException.class, block); assertTrue(message.indexOf(AbstractSetFieldStep.MESSAGE_ARGUMENT_MISSING) != -1); // <ForceHiddenInputField name="someName" /> fStep.setName("someName"); fStep.setValue(null); // can't use assertStepRejects because of custom message due to inner text possibility message = ThrowAssert.assertThrows(StepExecutionException.class, block); assertTrue(message.indexOf("\"" + "value" + "\" must be set") != -1); } public void testVerifyParametersWithoutPreviousPage() { fStep.setValue("someValue"); fStep.setName("someName"); assertStepRejectsNullResponse(fStep); } public void testSetField() { final HtmlPage page = getDummyPage("<html></html>"); ThrowAssert.assertThrows(StepFailedException.class, new TestBlock() { public void call() throws Throwable { fStep.setValue("foo"); fStep.setField(page.createElement("img")); } }); final HtmlInput input = (HtmlInput) page.createElement("input"); fStep.setValue("foo"); fStep.setField(input); assertEquals("foo", input.getValueAttribute()); } }