package com.develop.ss.cactus;
import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;
import org.xml.sax.SAXException;
import com.develop.ss.web.SiteSearch;
import com.develop.ss.search.QueryBean;
import com.meterware.httpunit.WebResponse;
import com.meterware.httpunit.WebLink;
import javax.servlet.ServletException;
import java.io.IOException;
/**
* In-container testing. The same sample queries are black-box tested
* with HTTPUnit in {@link com.develop.ss.httpunit.SearchTest }
*/
public class SiteSearchTest extends ServletTestCase {
private SiteSearch searchServlet;
public void setUp() throws ServletException {
searchServlet = new SiteSearch();
searchServlet.init(config);
}
public SiteSearchTest(String s) {
super(s);
}
public void testEmptyRequest() throws ServletException, IOException {
QueryBean bean = callServlet();
assertEquals(0, bean.getResults().length);
}
private QueryBean callServlet() throws ServletException, IOException {
searchServlet.doGet(request, response);
QueryBean bean = (QueryBean) request.getAttribute("luceneQueryBean");
assertNotNull(bean);
return bean;
}
/**
* This test duplicates functionality that already exists in the
* HTTPUnit tests and is just here as a demonstration of client-side
* result validation in Cactus.
* @param response
* @throws SAXException
*/
public void endEmptyRequest(WebResponse response) throws SAXException {
WebLink[] links = response.getLinks();
assertEquals(0, links.length);
}
public void beginOneHitRequest(WebRequest request) {
request.addParameter("query", "January");
}
public void testOneHitRequest() throws ServletException, IOException {
QueryBean bean = callServlet();
assertEquals(1, bean.getResults().length);
}
public void beginThreeHitRequest(WebRequest request) {
request.addParameter("query", "spider");
}
public void testThreeHitRequest() throws ServletException, IOException {
QueryBean bean = callServlet();
assertEquals(3, bean.getResults().length);
}
}
|