/*
* 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.DirectoryHome;
import org.jboss.seam.wiki.core.model.WikiDirectory;
import org.jboss.seam.wiki.core.model.WikiMenuItem;
import org.jboss.seam.mock.DBUnitSeamTest;
import org.testng.annotations.Test;
public class EditMenu extends DBUnitSeamTest {
protected void prepareDBUnitOperations() {
beforeTestOperations.add(
new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
);
}
@Test
public void checkAvailableMenuItems() throws Exception {
loginAdmin();
final String conversationId = new NonFacesRequest("/dirEdit_d.xhtml") {
protected void beforeRequest() {
setParameter("directoryId", "2");
setParameter("parentDirectoryId", "1");
}
}.run();
new FacesRequest("/dirEdit_d.xhtml") {
protected void beforeRequest() {
setParameter("cid", conversationId);
}
protected void invokeApplication() throws Exception {
assert Conversation.instance().isLongRunning();
DirectoryHome dirHome = (DirectoryHome)getInstance(DirectoryHome.class);
assert dirHome.getInstance().getId().equals(2l); // Init!
assert dirHome.getAvailableMenuItems().size() == 0;
}
}.run();
}
@Test
public void addMenuItem() throws Exception {
loginAdmin();
final String conversationId = new NonFacesRequest("/dirEdit_d.xhtml") {
protected void beforeRequest() {
setParameter("directoryId", "3");
setParameter("parentDirectoryId", "1");
}
}.run();
new FacesRequest("/dirEdit_d.xhtml") {
Long newDefaultDocumentId = null;
protected void beforeRequest() {
setParameter("cid", conversationId);
}
protected void invokeApplication() throws Exception {
assert Conversation.instance().isLongRunning();
DirectoryHome dirHome = (DirectoryHome)getInstance(DirectoryHome.class);
assert dirHome.getInstance().getId().equals(3l); // Init!
assert dirHome.getMenuItems().size() == 1;
assert dirHome.getAvailableMenuItems().size() == 1;
WikiDirectory newMenuItem = dirHome.getAvailableMenuItems().iterator().next();
dirHome.setSelectedChildDirectory(newMenuItem);
dirHome.addMenuItem();
assert dirHome.getMenuItems().size() == 2;
assert invokeMethod("#{directoryHome.update}").equals("updated");
}
protected void renderResponse() throws Exception {
DirectoryHome dirHome = (DirectoryHome)getInstance(DirectoryHome.class);
assert dirHome.getMenuItems().size() == 2;
WikiMenuItem[] menuItems = dirHome.getMenuItems().toArray(new WikiMenuItem[dirHome.getMenuItems().size()]);
assert menuItems[0].getDirectoryId().equals(4l);
assert menuItems[0].getDirectory().getId().equals(4l);
assert menuItems[0].getDisplayPosition() == 0;
assert menuItems[1].getDirectoryId().equals(5l);
assert menuItems[1].getDirectory().getId().equals(5l);
assert menuItems[1].getDisplayPosition() == 1;
}
}.run();
}
@Test
public void removeMenuItem() throws Exception {
loginAdmin();
final String conversationId = new NonFacesRequest("/dirEdit_d.xhtml") {
protected void beforeRequest() {
setParameter("directoryId", "3");
setParameter("parentDirectoryId", "1");
}
}.run();
new FacesRequest("/dirEdit_d.xhtml") {
Long newDefaultDocumentId = null;
protected void beforeRequest() {
setParameter("cid", conversationId);
}
protected void invokeApplication() throws Exception {
assert Conversation.instance().isLongRunning();
DirectoryHome dirHome = (DirectoryHome)getInstance(DirectoryHome.class);
assert dirHome.getInstance().getId().equals(3l); // Init!
assert dirHome.getMenuItems().size() == 1;
WikiMenuItem removedMenuItem = dirHome.getMenuItems().get(0);
dirHome.removeMenuItem(removedMenuItem.getDirectoryId());
assert invokeMethod("#{directoryHome.update}").equals("updated");
}
protected void renderResponse() throws Exception {
DirectoryHome dirHome = (DirectoryHome)getInstance(DirectoryHome.class);
assert dirHome.getMenuItems().size() == 0;
}
}.run();
}
@Test
public void addRemoveMenuItem() throws Exception {
loginAdmin();
final String conversationId = new NonFacesRequest("/dirEdit_d.xhtml") {
protected void beforeRequest() {
setParameter("directoryId", "3");
setParameter("parentDirectoryId", "1");
}
}.run();
new FacesRequest("/dirEdit_d.xhtml") {
Long newDefaultDocumentId = null;
protected void beforeRequest() {
setParameter("cid", conversationId);
}
protected void invokeApplication() throws Exception {
assert Conversation.instance().isLongRunning();
DirectoryHome dirHome = (DirectoryHome)getInstance(DirectoryHome.class);
assert dirHome.getInstance().getId().equals(3l); // Init!
assert dirHome.getMenuItems().size() == 1;
WikiDirectory newMenuItem = dirHome.getAvailableMenuItems().iterator().next();
dirHome.setSelectedChildDirectory(newMenuItem);
dirHome.addMenuItem();
WikiMenuItem removedMenuItem = dirHome.getMenuItems().get(0);
dirHome.removeMenuItem(removedMenuItem.getDirectoryId());
assert invokeMethod("#{directoryHome.update}").equals("updated");
}
protected void renderResponse() throws Exception {
DirectoryHome dirHome = (DirectoryHome)getInstance(DirectoryHome.class);
assert dirHome.getMenuItems().size() == 1;
WikiMenuItem[] menuItems = dirHome.getMenuItems().toArray(new WikiMenuItem[dirHome.getMenuItems().size()]);
assert menuItems[0].getDirectoryId().equals(5l);
assert menuItems[0].getDisplayPosition() == 0;
}
}.run();
}
@Test
public void moveMenuItem() throws Exception {
loginAdmin();
final String conversationId = new NonFacesRequest("/dirEdit_d.xhtml") {
protected void beforeRequest() {
setParameter("directoryId", "3");
setParameter("parentDirectoryId", "1");
}
}.run();
new FacesRequest("/dirEdit_d.xhtml") {
Long newDefaultDocumentId = null;
protected void beforeRequest() {
setParameter("cid", conversationId);
}
protected void invokeApplication() throws Exception {
assert Conversation.instance().isLongRunning();
DirectoryHome dirHome = (DirectoryHome)getInstance(DirectoryHome.class);
assert dirHome.getInstance().getId().equals(3l); // Init!
assert dirHome.getMenuItems().size() == 1;
WikiDirectory newMenuItem = dirHome.getAvailableMenuItems().iterator().next();
dirHome.setSelectedChildDirectory(newMenuItem);
dirHome.addMenuItem();
dirHome.moveMenuItem(1, 0);
assert invokeMethod("#{directoryHome.update}").equals("updated");
}
protected void renderResponse() throws Exception {
DirectoryHome dirHome = (DirectoryHome)getInstance(DirectoryHome.class);
assert dirHome.getMenuItems().size() == 2;
WikiMenuItem[] menuItems = dirHome.getMenuItems().toArray(new WikiMenuItem[dirHome.getMenuItems().size()]);
assert menuItems[0].getDirectoryId().equals(5l);
assert menuItems[0].getDisplayPosition() == 0;
assert menuItems[1].getDirectoryId().equals(4l);
assert menuItems[1].getDisplayPosition() == 1;
}
}.run();
}
private void loginAdmin() throws Exception {
new FacesRequest() {
protected void invokeApplication() throws Exception {
setValue("#{identity.username}", "admin");
setValue("#{identity.password}", "admin");
invokeAction("#{identity.login}");
assert getValue("#{identity.loggedIn}").equals(true);
}
}.run();
}
}