/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.wiki.test.model;
import org.dbunit.operation.DatabaseOperation;
import org.jboss.seam.wiki.core.model.User;
import org.jboss.seam.wiki.core.model.WikiDirectory;
import org.jboss.seam.mock.DBUnitSeamTest;
import org.testng.annotations.Test;
import org.testng.Assert;
import javax.persistence.EntityManager;
import java.util.List;
public class DirectoryTests extends DBUnitSeamTest {
protected void prepareDBUnitOperations() {
beforeTestOperations.add(
new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
);
}
@Test
public void loadDirectoryById() throws Exception {
new FacesRequest() {
protected void invokeApplication() throws Exception {
EntityManager em = (EntityManager) getInstance("restrictedEntityManager");
WikiDirectory d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 1l)
.getSingleResult();
assert d.getName().equals("AAA");
}
}.run();
}
@Test
public void getDirectoryPath() throws Exception {
new FacesRequest() {
protected void invokeApplication() throws Exception {
EntityManager em = (EntityManager) getInstance("restrictedEntityManager");
WikiDirectory d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 4l)
.getSingleResult();
assert d.getName().equals("DDD");
assert d.getPath().size() == 3;
assert d.getPath().get(0).getId().equals(1l);
assert d.getPath().get(1).getId().equals(3l);
assert d.getPath().get(2).getId().equals(4l);
}
}.run();
}
@Test
public void updateDirectoryById() throws Exception {
new FacesRequest() {
protected void invokeApplication() throws Exception {
EntityManager em = (EntityManager) getInstance("restrictedEntityManager");
WikiDirectory d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 1l)
.getSingleResult();
d.setName("AAA2");
em.flush();
em.clear();
d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 1l)
.getSingleResult();
assert d.getName().equals("AAA2");
}
}.run();
}
/* TODO: Requires (now deprecated) database cascading, deletion nees to go through DirectoryHome
@Test
public void deleteDirectoryById() throws Exception {
new FacesRequest() {
protected void invokeApplication() throws Exception {
EntityManager em = (EntityManager) getInstance("restrictedEntityManager");
WikiDirectory d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 4l)
.getSingleResult();
em.remove(d);
em.flush();
em.clear();
d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 1l)
.getSingleResult();
assert d.getName().equals("AAA");
assert d.getNodeInfo().getNsLeft().equals(1l);
assert d.getNodeInfo().getNsRight().equals(997l);
em.clear();
d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 3l)
.getSingleResult();
assert d.getName().equals("CCC");
assert d.getNodeInfo().getNsLeft().equals(4l);
assert d.getNodeInfo().getNsRight().equals(7l);
em.clear();
d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 5l)
.getSingleResult();
assert d.getName().equals("EEE");
assert d.getNodeInfo().getNsLeft().equals(5l);
assert d.getNodeInfo().getNsRight().equals(6l);
}
}.run();
}
@Test
public void deleteDirectoryTreeById() throws Exception {
new FacesRequest() {
protected void invokeApplication() throws Exception {
EntityManager em = (EntityManager) getInstance("restrictedEntityManager");
WikiDirectory d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 3l)
.getSingleResult();
em.remove(d);
em.flush();
em.clear();
d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 1l)
.getSingleResult();
assert d.getName().equals("AAA");
assert d.getNodeInfo().getNsLeft().equals(1l);
assert d.getNodeInfo().getNsRight().equals(993l);
em.clear();
d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 2l)
.getSingleResult();
assert d.getName().equals("BBB");
assert d.getNodeInfo().getNsLeft().equals(2l);
assert d.getNodeInfo().getNsRight().equals(3l);
em.clear();
try {
d = null;
d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 3l)
.getSingleResult();
} catch (Exception ex) {} finally {
assert d == null;
}
em.clear();
try {
d = null;
d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 4l)
.getSingleResult();
} catch (Exception ex) {} finally {
assert d == null;
}
em.clear();
try {
d = null;
d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 5l)
.getSingleResult();
} catch (Exception ex) {} finally {
assert d == null;
}
}
}.run();
}
*/
@Test
public void insertDirectoryById() throws Exception {
new FacesRequest() {
protected void invokeApplication() throws Exception {
EntityManager em = (EntityManager) getInstance("restrictedEntityManager");
WikiDirectory d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 3l)
.getSingleResult();
WikiDirectory newDir = new WikiDirectory();
newDir.setName("FFF");
newDir.setWikiname("FFF");
newDir.setAreaNumber(d.getAreaNumber());
newDir.setCreatedBy(em.find(User.class, 1l));
newDir.setParent(d);
em.persist(newDir);
em.flush();
em.clear();
d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 1l)
.getSingleResult();
assert d.getName().equals("AAA");
em.clear();
d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 3l)
.getSingleResult();
assert d.getName().equals("CCC");
em.clear();
d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", newDir.getId())
.getSingleResult();
assert d.getName().equals("FFF");
}
}.run();
}
@Test
public void findParents() throws Exception {
new FacesRequest() {
protected void invokeApplication() throws Exception {
EntityManager em = (EntityManager) getInstance("restrictedEntityManager");
WikiDirectory d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 4l)
.getSingleResult();
List<WikiDirectory> parents = d.getParentsRecursive();
Assert.assertEquals(parents.size(), 2);
Assert.assertEquals(parents.get(0).getId(), new Long(3));
Assert.assertEquals(parents.get(1).getId(), new Long(1));
}
}.run();
new FacesRequest() {
protected void invokeApplication() throws Exception {
EntityManager em = (EntityManager) getInstance("restrictedEntityManager");
WikiDirectory d = (WikiDirectory)
em.createQuery("select d from WikiDirectory d where d.id = :id")
.setParameter("id", 3l)
.getSingleResult();
List<WikiDirectory> parents = d.getParentsRecursive();
Assert.assertEquals(parents.size(), 1);
Assert.assertEquals(parents.get(0).getId(), new Long(1));
}
}.run();
}
}