Package com.canoo.webtest.steps.verify

Source Code of com.canoo.webtest.steps.verify.AbstractVerifyFormStep

// Copyright � 2002-2005 Canoo Engineering AG, Switzerland.
package com.canoo.webtest.steps.verify;

import com.canoo.webtest.engine.StepFailedException;
import com.canoo.webtest.extension.StoreElementAttribute;
import com.canoo.webtest.interfaces.IVerificationStep;
import com.canoo.webtest.steps.Step;
import com.canoo.webtest.steps.form.AbstractSetFieldStep;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import org.apache.log4j.Logger;

import java.io.IOException;
import java.util.List;

/**
* @author Marc Guillemot
* @author Paul King
* @author Denis N. Antonioli
*/
public abstract class AbstractVerifyFormStep extends Step implements IVerificationStep {
  private static final Logger LOG = Logger.getLogger(AbstractVerifyFormStep.class);

  private String fName;
  private String fValue;
  private String fFormName;
  private String fFieldIndex;
  private String fHtmlId;
  private String fXPath;

  /**
   * @param name
   * @webtest.parameter
   *    required="yes"
   * description="The xpath of the input field of interest. One of <em>name</em>, <em>htmlId</em> or <em>xpath</em> is required."
   */
  public void setName(final String name) {
    fName = name;
  }

  public String getName() {
    return fName;
  }


  /**
   * @param value
   * @webtest.parameter
   *    required="no"
   *   description="The value of the input field of interest."
   */
  public void setValue(final String value) {
    fValue = value;
  }

  public String getValue() {
    return fValue;
  }


  /**
   * @param formName
   * @webtest.parameter
   *   required="no"
   *   description="The name of the form containing the field of interest."
   */
  public void setFormName(final String formName) {
    fFormName = formName;
  }

  public String getFormName() {
    return fFormName;
  }


  /**
   * @param index
   * @webtest.parameter
   *   required="no"
   *   description="The index (starting at 0) of the field of interest (if more than one)."
   */
  public void setFieldIndex(final String index) {
    fFieldIndex = index;
  }

  public String getFieldIndex() {
    return fFieldIndex;
  }

  /**
   * Set the xpath.
   *
   * @param xpath
   * @webtest.parameter required="yes/no"
   * description="The xpath of the input field of interest. One of <em>name</em>, <em>htmlId</em> or <em>xpath</em> is required."
   */
  public void setXpath(final String xpath) {
    fXPath = xpath;
  }

  public String getXpath() {
    return fXPath;
  }

  /**
   * Set the html id.
   *
   * @param htmlId
   * @webtest.parameter required="yes/no"
   * description="The id of the input field of interest. One of <em>name</em>, <em>htmlId</em> or <em>xpath</em> is required."
   */
  public void setHtmlId(final String htmlId) {
    fHtmlId = htmlId;
  }

  public String getHtmlId() {
    return fHtmlId;
  }

  public void doExecute() throws IOException {
    if (getName() != null) {
      final HtmlForm form = findForm();
      if (form == null) {
        throw new StepFailedException("No suitable form found having field named \"" + getName() + "\"", this);
      }
      verifyField(AbstractSetFieldStep.selectField(findFields(form), getFieldIndex(), this));
    }
    else {
      verifyField(StoreElementAttribute.findElement(getContext().getCurrentResponse(), getHtmlId(), getXpath(), LOG, this));
    }
  }

  /**
   * Finds the relevant form.
   *
   */
  protected abstract HtmlForm findForm();

  /**
   * Finds then verifies the field of interest.
   * @param form
   */
  protected abstract List findFields(final HtmlForm form);

  /**
   * Verifies a field according to the step.
   * It is up to the step's implementation to decide how to verify the step.
   *
   * @param field The field to verify.
   */
  protected abstract void verifyField(final HtmlElement field) throws IOException;

  protected void verifyParameters() {
    super.verifyParameters();
    nullResponseCheck();

    int count = 0;
    if (getXpath() != null) {
      count++;
    }
    if (getName() != null) {
      count++;
    }
    if (getHtmlId() != null) {
      count++;
    }
    paramCheck(count == 0, AbstractSetFieldStep.MESSAGE_ARGUMENT_MISSING);
    paramCheck(count > 1, AbstractSetFieldStep.MESSAGE_ARGUMENT_REDUNDANT);
    if (getName() == null) {
      paramCheck(getFieldIndex() != null, "The attribute 'fieldIndex' is only valid with the attribute 'name'.");
    }
    else {
      optionalIntegerParamCheck(getFieldIndex(), "fieldIndex", false);
    }
  }

  protected boolean isValueNull() {
    return getValue() == null;
  }
}
TOP

Related Classes of com.canoo.webtest.steps.verify.AbstractVerifyFormStep

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.