/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.wiki.test.editing;
import org.dbunit.operation.DatabaseOperation;
import org.jboss.seam.core.Conversation;
import org.jboss.seam.wiki.core.action.DocumentHome;
import org.jboss.seam.wiki.core.model.WikiTextMacro;
import org.jboss.seam.mock.DBUnitSeamTest;
import org.testng.annotations.Test;
public class EditMacros extends DBUnitSeamTest {
protected void prepareDBUnitOperations() {
beforeTestOperations.add(
new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
);
}
@Test
public void marshallMacros() throws Exception {
final String conversationId = new NonFacesRequest("/docEdit_d.xhtml") {
protected void beforeRequest() {
setParameter("documentId", "6");
setParameter("parentDirectoryId", "3");
}
}.run();
new FacesRequest("/docEdit_d.xhtml") {
protected void beforeRequest() {
setParameter("cid", conversationId);
}
protected void invokeApplication() throws Exception {
assert Conversation.instance().isLongRunning();
DocumentHome docHome = (DocumentHome)getInstance(DocumentHome.class);
assert docHome.getInstance().getId().equals(6l); // Init!
assert docHome.getInstance().getHeaderMacros().size() == 2;
assert docHome.getInstance().getFooterMacros().size() == 2;
boolean macroFound = false;
for (WikiTextMacro wikiMacro : docHome.getInstance().getContentMacros()) {
if (wikiMacro.getName().equals("lastModifiedDocuments")) {
assert wikiMacro.getParams().size()==2;
assert wikiMacro.getParams().get("documentTitleLength").equals("60");
assert wikiMacro.getParams().get("showUsernames").equals("true");
macroFound = true;
}
}
assert macroFound;
}
}.run();
}
@Test
public void editMacros() throws Exception {
final String conversationId = new NonFacesRequest("/docEdit_d.xhtml") {
protected void beforeRequest() {
setParameter("documentId", "6");
setParameter("parentDirectoryId", "3");
}
}.run();
new FacesRequest("/docEdit_d.xhtml") {
protected void beforeRequest() {
setParameter("cid", conversationId);
}
protected void invokeApplication() throws Exception {
assert Conversation.instance().isLongRunning();
DocumentHome docHome = (DocumentHome)getInstance(DocumentHome.class);
assert docHome.getInstance().getId().equals(6l); // Init!
docHome.getTextEditor().setValue("[<=contentMacro[param=value]]");
docHome.syncEditorToInstance(docHome.getParentNode().getId(), docHome.getInstance());
docHome.syncMacros(docHome.getInstance());
assert docHome.getInstance().getHeaderMacros().size() == 2;
assert docHome.getInstance().getContentMacros().size() == 1;
assert docHome.getInstance().getFooterMacros().size() == 2;
// Check WikiMacro.equals() as well
WikiTextMacro macro = new WikiTextMacro("contentMacro");
macro.setPosition(0);
boolean macroFound = false;
for (WikiTextMacro wikiMacro : docHome.getInstance().getContentMacros()) {
if (wikiMacro.equals(macro)) {
assert wikiMacro.getParams().size()==1;
assert wikiMacro.getParams().get("param").equals("value");
macroFound = true;
}
}
assert macroFound;
}
}.run();
}
}