package bvira.test; import bvira.framework.ContextPath; import bvira.framework.ContextRoot; import bvira.framework.ParameterName; import bvira.framework.Parameters; import bvira.framework.RequestContext; import bvira.framework.RequestUri; import bvira.framework.ResponseContext; import bvira.framework.TemplateWriter; import bvira.test.abstraction.DriverAdaptor; import bvira.test.abstraction.For; import bvira.test.abstraction.HTTPInteraction; import bvira.test.abstraction.HtmlPage; import bvira.test.abstraction.Navigator; import bvira.test.abstraction.StaticDriverAdaptor; import bvira.util.DefaultContainer; import bvira.web.HttpRequestHandler; import bvira.web.StringTemplateFactory; import bvira.web.WebApplication; import java.io.PrintWriter; import java.io.StringWriter; import java.util.List; public class AcceptanceTestWebEnvironment extends WebEnvironment { WebApplication application; private String responseText; public AcceptanceTestWebEnvironment() { application = new WebApplication(HttpRequestHandler.getComponents(), new DefaultContainer(), new StringTemplateFactory(), HttpRequestHandler.services); } public WebEnvironment navigate(final Navigator uri) { RequestContext requestContext = new RequestContext() { public ContextRoot getContextRoot() { return null; } public ContextPath getContextPath() { return null; } public RequestUri getRequestUri() { RequestUri requestUri = new RequestUri(); uri.navigate(requestUri); return requestUri; } public Parameters getParameters() { return null; } public String getParameter(ParameterName identity) { return null; } }; final StringWriter writer = new StringWriter(); ResponseContext responseContext = new ResponseContext() { public PrintWriter getWriter() { return null; } public void writeTemplate(TemplateWriter template) { template.write(writer); } public void redirectTo(String path) { } public void validateResponse() { } }; application.executePresenter(requestContext, responseContext); this.responseText = writer.toString(); return this; } public <T extends HtmlPage> T responsePage(Class<T> pageClass) { try { return pageClass.getConstructor(DriverAdaptor.class).newInstance(new StaticDriverAdaptor(responseText)); } catch (Exception e) { e.printStackTrace(); } return null; } public WebEnvironment start() { return this; } public void stop() { } public WebEnvironment clickLink(String linkText) { throw new UnsupportedOperationException("User operations are not supported for Acceptance tests"); } public List<HTTPInteraction> findHttpInteractions(For clause) { throw new UnsupportedOperationException("getInteractions not supported for acceptance tests"); } public void clearHttpInteractionLog() { throw new UnsupportedOperationException("Clearing interactions is not supported"); } }