Package com.canoo.webtest.plugins.pdftest

Source Code of com.canoo.webtest.plugins.pdftest.PdfVerifyLinkStep

// Copyright � 2004-2007 ASERT. Released under the Canoo Webtest license.
package com.canoo.webtest.plugins.pdftest;

import java.util.Iterator;
import java.util.List;

import org.apache.commons.lang.StringUtils;

import com.canoo.webtest.engine.IStringVerifier;
import com.canoo.webtest.engine.StepFailedException;
import com.canoo.webtest.plugins.pdftest.htmlunit.PDFLink;
import com.canoo.webtest.plugins.pdftest.htmlunit.PDFPage;

/**
* @author Paul King
* @author Marc Guillemot
* @webtest.step
*   category="PDF"
*   name="pdfVerifyLink"
*   alias="verifyPdfLink"
*   description="This step verifies the existence of a link within a <key>pdf</key> document."
*/
public class PdfVerifyLinkStep extends AbstractVerifyPdfStep {
    private boolean fRegex;
    private String fLinkText;
    private String fLinkHref;
    private int fPage = ANY_PAGE;

  /**
   * @param value
   * @webtest.parameter
   *   required="yes/no"
   *   description="The text of the link to find. One of <em>text</em> or <em>href</em> must be set."
   */
  public void setText(final String value) {
        fLinkText = value;
  }

  public String getText() {
    return fLinkText;
  }

  /**
   * @param value
   * @webtest.parameter
   *   required="yes/no"
   *   description="The href of the link to find. One of <em>text</em> or <em>href</em> must be set."
   */
  public void setHref(final String value) {
        fLinkHref = value;
  }

  public String getHref() {
    return fLinkHref;
  }

    public int getPage() {
        return fPage;
    }

    /**
   * @param value
   * @webtest.parameter
   *   required="no"
     *   default="all pages"
   *   description="The page on which to search."
   */
  public void setPage(final int value) {
        fPage = value;
  }

    /**
     * @param regex
     * @webtest.parameter required="no"
     * default="'false'"
     * description="Specifies whether the search value represents a <key>regex</key>."
     */
    public void setRegex(final boolean regex) {
        fRegex = regex;
    }

    public boolean getRegex() {
        return fRegex;
    }

    protected void verifyParameters() {
    super.verifyParameters();
        paramCheck(getText() == null && getHref() == null, "One of 'text' or 'href' is required!");
        paramCheck(getText() != null && getHref() != null, "Only one of 'text' and 'href' can be set!");
  }

    protected void verifyPdf(final PDFPage pdfPage)
    {
      final IStringVerifier verifier = getVerifier(getRegex());
      final String expectedValue = StringUtils.defaultString(getText(), getHref());

      final List links = pdfPage.getLinks();
      for (final Iterator iter = links.iterator(); iter.hasNext();)
      {
      final PDFLink element = (PDFLink) iter.next();
      if (verifyLink(element, verifier, expectedValue))
        return;
    }
     
      throw new StepFailedException("No link found matching criteria.");
    }

    boolean verifyLink(final PDFLink link, final IStringVerifier verifier, final String expectedValue)
    {
      if (getPage() != ANY_PAGE && getPage() != link.getPage())
      {
        return false;
      }
     
      final String actualValue = (getHref() != null) ? link.getHref() : link.getText();
    return verifier.verifyStrings(expectedValue, actualValue);
  }
}
TOP

Related Classes of com.canoo.webtest.plugins.pdftest.PdfVerifyLinkStep

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.