/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.wiki.test.preferences;
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.wikitext.engine.WikiTextParser;
import org.jboss.seam.wiki.core.model.WikiTextMacro;
import org.jboss.seam.wiki.core.plugin.WikiPluginMacro;
import org.jboss.seam.wiki.core.plugin.PluginRegistry;
import org.jboss.seam.wiki.core.wikitext.renderer.NullWikiTextRenderer;
import org.jboss.seam.wiki.plugin.basic.LastModifiedDocumentsPreferences;
import org.jboss.seam.wiki.preferences.Preferences;
import org.jboss.seam.mock.DBUnitSeamTest;
import org.testng.annotations.Test;
/**
* @author Christian Bauer
*/
public class InstancePreferencesTests extends DBUnitSeamTest {
protected void prepareDBUnitOperations() {
beforeTestOperations.add(
new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
);
}
@Test
public void readInstancePreferences() throws Exception {
new NonFacesRequest("/docDisplay_d.xhtml") {
protected void beforeRequest() {
setParameter("documentId", "6");
}
protected void renderResponse() throws Exception {
DocumentHome docHome = (DocumentHome)getInstance(DocumentHome.class);
assert docHome.getInstance().getId().equals(6l); // Init!
WikiTextParser parser = new WikiTextParser(docHome.getInstance().getContent(), true, false);
parser.setRenderer(new NullWikiTextRenderer() {
@Override
public String renderMacro(WikiTextMacro macro) {
if (macro.getName().equals("lastModifiedDocuments")) {
WikiPluginMacro pluginMacro = PluginRegistry.instance().createWikiPluginMacro(macro);
LastModifiedDocumentsPreferences lmdPrefs =
Preferences.instance().get(LastModifiedDocumentsPreferences.class, pluginMacro);
assert lmdPrefs.getDocumentTitleLength().equals(60l);
}
return null;
}
}).parse();
}
}.run();
}
@Test
public void updateInstancePreferences() 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("[<=lastModifiedDocuments[documentTitleLength=66]]");
assert invokeMethod("#{documentHome.update}").equals("updated");
}
}.run();
new NonFacesRequest("/docDisplay_d.xhtml") {
protected void beforeRequest() {
setParameter("documentId", "6");
}
protected void renderResponse() throws Exception {
DocumentHome docHome = (DocumentHome)getInstance(DocumentHome.class);
assert docHome.getInstance().getId().equals(6l); // Init!
WikiTextParser parser = new WikiTextParser(docHome.getInstance().getContent(), true, false);
parser.setRenderer(new NullWikiTextRenderer() {
@Override
public String renderMacro(WikiTextMacro macro) {
if (macro.getName().equals("lastModifiedDocuments")) {
WikiPluginMacro pluginMacro = PluginRegistry.instance().createWikiPluginMacro(macro);
LastModifiedDocumentsPreferences lmdPrefs =
Preferences.instance().get(LastModifiedDocumentsPreferences.class, pluginMacro);
assert lmdPrefs.getDocumentTitleLength().equals(66l);
}
return null;
}
}).parse();
}
}.run();
}
}