blob: 861807ca85b9f2352d9cd7f3fdfc21919f3e542c [file] [log] [blame]
package org.apache.struts2.views.java.simple;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.util.ValueStack;
import junit.framework.TestCase;
import org.apache.struts2.StrutsConstants;
import org.apache.struts2.components.Component;
import org.apache.struts2.components.UIBean;
import org.apache.struts2.components.template.Template;
import org.apache.struts2.components.template.TemplateRenderingContext;
import org.easymock.EasyMock;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
public abstract class AbstractTest extends TestCase {
private Map<String, String> scriptingAttrs = new HashMap<String, String>();
private Map<String, String> commonAttrs = new HashMap<String, String>();
protected SimpleTheme theme;
protected StringWriter writer;
protected Map map;
protected Template template;
protected Map stackContext;
protected ValueStack stack;
protected TemplateRenderingContext context;
protected HttpServletRequest request;
protected HttpServletResponse response;
protected abstract UIBean getUIBean() throws Exception;
protected abstract String getTagName();
@Override
protected void setUp() throws Exception {
super.setUp();
scriptingAttrs.put("onclick", "onclick_");
scriptingAttrs.put("ondblclick", "ondblclick_");
scriptingAttrs.put("onmousedown", "onmousedown_");
scriptingAttrs.put("onmouseup", "onmouseup_");
scriptingAttrs.put("onmouseover", "onmouseover_");
scriptingAttrs.put("onmousemove", "onmousemove_");
scriptingAttrs.put("onmouseout", "onmouseout_");
scriptingAttrs.put("onfocus", "onfocus_");
scriptingAttrs.put("onblur", "onblur_");
scriptingAttrs.put("onkeypress", "onkeypress_");
scriptingAttrs.put("onkeydown", "onkeydown_");
scriptingAttrs.put("onkeyup", "onkeyup_");
scriptingAttrs.put("onselect", "onselect_");
scriptingAttrs.put("onchange", "onchange_");
commonAttrs.put("accesskey", "accesskey_");
theme = new SimpleTheme();
writer = new StringWriter();
map = new HashMap();
template = org.easymock.classextension.EasyMock.createMock(Template.class);
stack = EasyMock.createNiceMock(ValueStack.class);
setUpStack();
stackContext = new HashMap();
context = new TemplateRenderingContext(template, writer, stack, map, null);
stackContext.put(Component.COMPONENT_STACK, new Stack());
request = EasyMock.createMock(HttpServletRequest.class);
response = EasyMock.createMock(HttpServletResponse.class);
EasyMock.expect(stack.getContext()).andReturn(stackContext).anyTimes();
Container container = EasyMock.createNiceMock(Container.class);
XWorkConverter converter = new ConverterEx();
EasyMock.expect(container.getInstance(String.class, StrutsConstants.STRUTS_TAG_ALTSYNTAX)).andReturn("true").anyTimes();
EasyMock.expect(container.getInstance(XWorkConverter.class)).andReturn(converter).anyTimes();
stackContext.put(ActionContext.CONTAINER, container);
EasyMock.replay(stack);
EasyMock.replay(container);
}
protected static String s(String input) {
return input.replaceAll("'", "\"");
}
protected void expectFind(String expr, Class toClass, Object returnVal) {
EasyMock.expect(stack.findValue(expr, toClass)).andReturn(returnVal);
}
protected void expectFind(String expr, Object returnVal) {
EasyMock.expect(stack.findValue(expr)).andReturn(returnVal);
}
protected void setUpStack() {
//TODO setup a config with stack and all..for real
}
protected void applyScriptingAttrs(UIBean bean) {
bean.setOnclick(scriptingAttrs.get("onclick"));
bean.setOndblclick(scriptingAttrs.get("ondblclick"));
bean.setOnmousedown(scriptingAttrs.get("onmousedown"));
bean.setOnmouseup(scriptingAttrs.get("onmouseup"));
bean.setOnmouseover(scriptingAttrs.get("onmouseover"));
bean.setOnmousemove(scriptingAttrs.get("onmousemove"));
bean.setOnmouseout(scriptingAttrs.get("onmouseout"));
bean.setOnfocus(scriptingAttrs.get("onfocus"));
bean.setOnblur(scriptingAttrs.get("onblur"));
bean.setOnkeypress(scriptingAttrs.get("onkeypress"));
bean.setOnkeydown(scriptingAttrs.get("onkeydown"));
bean.setOnkeyup(scriptingAttrs.get("onkeyup"));
bean.setOnselect(scriptingAttrs.get("onselect"));
bean.setOnchange(scriptingAttrs.get("onchange"));
}
protected void applyCommonAttrs(UIBean bean) {
bean.setAccesskey("accesskey_");
}
protected void assertScriptingAttrs(String str) {
for (Map.Entry<String, String> entry : scriptingAttrs.entrySet()) {
String substr = entry.getKey() + "=\"" + entry.getValue() + "\"";
assertTrue("String [" + substr + "] was not found in [" + str + "]", str.indexOf(substr) >= 0);
}
}
protected void assertCommongAttrs(String str) {
for (Map.Entry<String, String> entry : commonAttrs.entrySet()) {
String substr = entry.getKey() + "=\"" + entry.getValue() + "\"";
assertTrue("String [" + substr + "] was not found in [" + str + "]", str.indexOf(substr) >= 0);
}
}
protected Object doFindValue(String expr, Class toType) {
Object val = stack.findValue(expr);
if (toType == String.class)
return val == null ? expr : val;
else
return val == null ? null : val;
}
//XWorkConverter doesnt have a public onstructor (the one with parameters will require mor config)
public class ConverterEx extends XWorkConverter {
public ConverterEx() {
}
}
}