simulating click on table row
wgworek Jul 18, 2008 6:36 PMHi!
I'm using rich:dataTable with
<a4j:support id="showDetails" event="onRowClick" reRender="detailsOfUser" actionListener="#{userList.editAction}">
<f:attribute name="user" value="#{user}"/>
</a4j:support>
I would like to test it. Unfortunatelly it cannot be done by RichFacesClient. I tried this code:
JSFClientServerSession session = goTo("/pages/users.jsf");
WebTable usersTable = session.getClient().getWebResponse().getTableWithID("listForm:userListTable");
TableRow firstUserRow = usersTable.getRows()[1];
HashMap<String, String> params = extractParams(firstUserRow.getAttribute("onclick"));
PostMethodWebRequest request = new WebRequestFactory(session.getClient()).buildRequest("listForm");
for (Map.Entry<String, String> entry : params.entrySet()) {
request.setParameter(entry.getKey(), entry.getValue());
}
session.getAjaxClient().ajaxSubmit("listForm", params);
It extracts parameters from javascript event onclick and tries to make a ajax request. The problem is that it server logs this request is being made (that's good) but test fails. Exception
java.lang.NullPointerException at org.apache.xml.serializer.TreeWalker.startNode(TreeWalker.java:368) at org.apache.xml.serializer.TreeWalker.traverse(TreeWalker.java:143) at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:389) at org.jboss.jsfunit.facade.DOMUtil.convertToDomLevel2(DOMUtil.java:143) at org.jboss.jsfunit.facade.JSFClientSession.updateInternalState(JSFClientSession.java:215) at org.jboss.jsfunit.facade.JSFClientSession.doWebRequest(JSFClientSession.java:201) at org.jboss.jsfunit.richfaces.Ajax4jsfClient.doAjaxRequest(Ajax4jsfClient.java:186) at org.jboss.jsfunit.richfaces.Ajax4jsfClient.ajaxSubmit(Ajax4jsfClient.java:179) at ui.test.UserListTest.testShowDetails(UserListTest.java:92)
I search the web and it seems to be Xalan problem (I'm on JBoss 4.2). Does anyone knows a workaround? Or how to emulate click on table row differently?
Cheers :)