/* * 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.jboss.seam.mock.DBUnitSeamTest; import org.jboss.seam.wiki.core.model.WikiDocument; import org.jboss.seam.wiki.core.model.WikiComment; import org.jboss.seam.wiki.core.model.User; import org.jboss.seam.wiki.util.WikiUtil; import org.dbunit.operation.DatabaseOperation; import org.testng.annotations.Test; import static org.testng.Assert.assertEquals; import javax.persistence.EntityManager; import java.util.List; public class CommentTests extends DBUnitSeamTest { protected void prepareDBUnitOperations() { beforeTestOperations.add( new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT) ); } @Test public void findAllComments() throws Exception { new FacesRequest() { protected void invokeApplication() throws Exception { EntityManager em = (EntityManager) getInstance("restrictedEntityManager"); WikiDocument d = (WikiDocument) em.createQuery("select d from WikiDocument d where d.id = :id") .setParameter("id", 6l) .getSingleResult(); assert d.getName().equals("One"); List<WikiComment> comments = em.createQuery("select c from WikiComment c where c.parent = :doc order by c.createdOn asc") .setParameter("doc", d) .getResultList(); assert comments.size() == 6; assert comments.get(0).getName().equals("One.Comment11967298211870"); assert comments.get(1).getSubject().equals("Two"); assert comments.get(2).getSubject().equals("Three"); assert comments.get(3).getSubject().equals("Four"); assert comments.get(4).getSubject().equals("Five"); assert comments.get(5).getSubject().equals("Six"); } }.run(); } @Test public void insertCommentNewThread() throws Exception { new FacesRequest() { protected void invokeApplication() throws Exception { EntityManager em = (EntityManager) getInstance("restrictedEntityManager"); WikiDocument d = (WikiDocument) em.createQuery("select d from WikiDocument d where d.id = :id") .setParameter("id", 6l) .getSingleResult(); assert d.getName().equals("One"); WikiComment newComment = new WikiComment(); newComment.setAreaNumber(d.getAreaNumber()); newComment.setDerivedName(d); newComment.setWikiname(WikiUtil.convertToWikiName(newComment.getName())); newComment.setCreatedBy(em.find(User.class, 1l)); newComment.setSubject("Seven"); newComment.setContent("Testcomment Seven"); newComment.setUseWikiText(true); newComment.setParent(d); em.persist(newComment); em.flush(); em.clear(); List<WikiComment> comments = em.createQuery("select c from WikiComment c where c.parent = :doc order by c.createdOn asc") .setParameter("doc", d) .getResultList(); assert comments.size() == 7; assert comments.get(0).getName().equals("One.Comment11967298211870"); assert comments.get(1).getSubject().equals("Two"); assert comments.get(2).getSubject().equals("Three"); assert comments.get(3).getSubject().equals("Four"); assert comments.get(4).getSubject().equals("Five"); assert comments.get(5).getSubject().equals("Six"); assert comments.get(6).getSubject().equals("Seven"); assert comments.get(6).getId().equals(newComment.getId()); } }.run(); } @Test public void findCommentParent() throws Exception { new FacesRequest() { protected void invokeApplication() throws Exception { EntityManager em = (EntityManager) getInstance("restrictedEntityManager"); WikiComment comment = (WikiComment) em.createQuery("select c from WikiComment c where c.id = :id") .setParameter("id", 13l) .getSingleResult(); assert comment.getSubject().equals("Four"); assert comment.getParent().getId().equals(6l); assertEquals(comment.getPermURL(".lace"), "6.lace#comment13"); assertEquals(comment.getWikiURL(), "CCC/One#comment13"); } }.run(); } }