/* * 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.wiki.core.model.WikiDocument; import org.jboss.seam.mock.DBUnitSeamTest; import org.testng.annotations.Test; import javax.persistence.EntityManager; public class DocumentTests extends DBUnitSeamTest { protected void prepareDBUnitOperations() { beforeTestOperations.add( new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT) ); } @Test public void loadDocumentById() 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"); } }.run(); } @Test public void updateDocumentById() 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(); d.setName("One2"); em.flush(); em.clear(); d = (WikiDocument) em.createQuery("select d from WikiDocument d where d.id = :id") .setParameter("id", 6l) .getSingleResult(); assert d.getName().equals("One2"); assert d.getLastModifiedBy() != null; assert d.getLastModifiedOn() != null; } }.run(); } @Test public void deleteDocumentById() throws Exception { new FacesRequest() { protected void invokeApplication() throws Exception { EntityManager em = (EntityManager) getInstance("restrictedEntityManager"); WikiDocument d = (WikiDocument) em.createQuery("select d from WikiDocument d left join fetch d.incomingLinks where d.id = :id") .setParameter("id", 8l) .getSingleResult(); assert d.getIncomingLinks().size() == 1; em.clear(); d = (WikiDocument) em.createQuery("select d from WikiDocument d left join fetch d.incomingLinks where d.id = :id") .setParameter("id", 9l) .getSingleResult(); assert d.getIncomingLinks().size() == 1; em.clear(); d = (WikiDocument) em.createQuery("select d from WikiDocument d where d.id = :id") .setParameter("id", 7l) .getSingleResult(); assert d.getOutgoingLinks().size() == 2; em.remove(d); em.flush(); try { d = null; d = (WikiDocument) em.createQuery("select d from WikiDocument d where d.id = :id") .setParameter("id", 7l) .getSingleResult(); } catch (Exception ex) {} finally { assert d == null; } em.clear(); d = (WikiDocument) em.createQuery("select d from WikiDocument d left join fetch d.incomingLinks where d.id = :id") .setParameter("id", 8l) .getSingleResult(); assert d.getIncomingLinks().size() == 0; em.clear(); d = (WikiDocument) em.createQuery("select d from WikiDocument d left join fetch d.incomingLinks where d.id = :id") .setParameter("id", 9l) .getSingleResult(); assert d.getIncomingLinks().size() == 0; } }.run(); } @Test public void insertDocumentById() 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(); WikiDocument newDoc = new WikiDocument(); newDoc.setName("Four"); newDoc.setWikiname("Four"); newDoc.setAreaNumber(d.getAreaNumber()); newDoc.setCreatedBy(em.find(User.class, 1l)); newDoc.setContent("Testdocument Four"); newDoc.setParent(d); em.persist(newDoc); em.flush(); em.clear(); WikiDocument doc = (WikiDocument) em.createQuery("select d from WikiDocument d where d.id = :id") .setParameter("id", newDoc.getId()) .getSingleResult(); assert doc.getName().equals("Four"); assert doc.getParent().getId().equals(d.getId()); assert doc.getAreaNumber().equals(d.getAreaNumber()); assert doc.getLastModifiedBy() == null; assert doc.getLastModifiedOn() == null; } }.run(); } }