[jboss-cvs] jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing ...

Christian Bauer christian at hibernate.org
Tue Dec 18 23:29:24 EST 2007


  User: cbauer  
  Date: 07/12/18 23:29:24

  Modified:    examples/wiki/src/test/org/jboss/seam/wiki/test/editing          
                        BasicNodeOperations.java
  Added:       examples/wiki/src/test/org/jboss/seam/wiki/test/editing          
                        EditMenu.java EditMacros.java Linking.java
                        Commenting.java Tagging.java
                        DocumentHistoryTests.java Uploading.java
  Removed:     examples/wiki/src/test/org/jboss/seam/wiki/test/editing          
                        NestedNodes.xml OptionalNodeOperations.java
  Log:
  Major rewrite of the most of the application
  
  Revision  Changes    Path
  1.5       +76 -256   jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing/BasicNodeOperations.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: BasicNodeOperations.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing/BasicNodeOperations.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -b -r1.4 -r1.5
  --- BasicNodeOperations.java	9 Nov 2007 15:18:13 -0000	1.4
  +++ BasicNodeOperations.java	19 Dec 2007 04:29:24 -0000	1.5
  @@ -8,45 +8,23 @@
   
   import org.dbunit.operation.DatabaseOperation;
   import org.hibernate.StatelessSession;
  +import org.hibernate.Session;
   import org.hibernate.ejb.HibernateEntityManagerFactory;
  -import org.jboss.seam.log.Log;
  -import org.jboss.seam.log.Logging;
  +import org.jboss.seam.core.Conversation;
  +import org.jboss.seam.faces.Redirect;
   import org.jboss.seam.wiki.core.action.DirectoryHome;
   import org.jboss.seam.wiki.core.action.DocumentHome;
  -import org.jboss.seam.wiki.core.dao.NodeDAO;
  -import org.jboss.seam.wiki.core.model.Node;
  -import org.jboss.seam.wiki.core.nestedset.NestedSetNodeWrapper;
  -import org.jboss.seam.wiki.core.nestedset.NestedSetResultTransformer;
  +import org.jboss.seam.wiki.core.model.WikiDirectory;
  +import org.jboss.seam.wiki.core.model.WikiDocument;
  +import org.jboss.seam.wiki.core.model.WikiNode;
   import org.jboss.seam.wiki.test.util.DBUnitSeamTest;
  -import org.jboss.seam.wiki.util.WikiUtil;
  -import org.jboss.seam.core.Conversation;
  -import org.jboss.seam.faces.Redirect;
  -import org.jboss.seam.Component;
   import org.testng.annotations.Test;
   
  -import java.util.Comparator;
  -
   public class BasicNodeOperations extends DBUnitSeamTest {
   
  -    private Log log = Logging.getLog(BasicNodeOperations.class);
  -
  -    private static final Long TEST_WIKI_ROOT_ID = 1l;
  -
  -    private static final Long TEST_DIRECTORY1_ID = 100l;
  -    private static final Long TEST_DOCUMENT1_ID = 101l;
  -    private static final Long TEST_DOCUMENT2_ID = 102l;
  -    private static final Long TEST_DOCUMENT3_ID = 103l;
  -    private static final Long TEST_DIRECTORY2_ID = 104l;
  -    private static final Long TEST_DOCUMENT5_ID = 105l;
  -    private static final Long TEST_DOCUMENT6_ID = 106l;
  -    private static final Long TEST_DOCUMENT7_ID = 107l;
  -
       protected void prepareDBUnitOperations() {
           beforeTestOperations.add(
  -                new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.xml")
  -        );
  -        beforeTestOperations.add(
  -                new DataSetOperation("org/jboss/seam/wiki/test/editing/NestedNodes.xml", DatabaseOperation.INSERT)
  +                new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
           );
       }
   
  @@ -55,8 +33,8 @@
   
           final String conversationId = new NonFacesRequest("/docEdit_d.xhtml") {
               protected void beforeRequest() {
  -                setParameter("documentId", TEST_DOCUMENT1_ID.toString());
  -                setParameter("parentDirectoryId", TEST_DIRECTORY1_ID.toString());
  +                setParameter("documentId", "6");
  +                setParameter("parentDirectoryId", "3");
               }
           }.run();
   
  @@ -70,8 +48,7 @@
                   assert Conversation.instance().isLongRunning();
   
                   DocumentHome docHome = (DocumentHome)getInstance("documentHome");
  -                assert checkNestedSetNodeInMemory( docHome.getInstance(), 9, 10);
  -                assert checkNestedSetNodeInMemory( docHome.getParentDirectory(), 8, 23);
  +                assert docHome.getInstance().getId().equals(6l);
   
                   assert invokeMethod("#{documentHome.remove}").equals("removed");
   
  @@ -80,17 +57,8 @@
                   Redirect.instance().setViewId("/dirDisplay.xhtml");
                   Redirect.instance().execute();
   
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 21);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 9, 10);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 11, 12);
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 13, 18);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 14, 15);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 16, 17);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 19, 20);
  -                assert checkNestedSetNodeInMemory( (Node)getValue("#{documentHome.parentDirectory}"), 8, 21);
  -                assert !checkNodeInDatabase(TEST_DOCUMENT1_ID);
  -
  -                displayNodeTree( (NodeDAO)getValue("#{nodeDAO}"), (Node)getValue("#{documentHome.parentDirectory}") );
  +                assert checkNestedSetNodeInDatabase(3l, 4, 9);
  +                assert !checkDocumentInDatabase(6l);
               }
   
           }.run();
  @@ -101,8 +69,8 @@
   
           final String conversationId = new NonFacesRequest("/dirEdit_d.xhtml") {
               protected void beforeRequest() {
  -                setParameter("directoryId", TEST_DIRECTORY2_ID.toString());
  -                setParameter("parentDirectoryId", TEST_DIRECTORY1_ID.toString());
  +                setParameter("directoryId", "2");
  +                setParameter("parentDirectoryId", "1");
               }
           }.run();
   
  @@ -113,20 +81,6 @@
               }
   
               protected void invokeApplication() throws Exception {
  -                DirectoryHome dirHome = (DirectoryHome)getInstance("directoryHome");
  -                dirHome.init(); // TODO: Seam test doesn't call page actions
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 23);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 20);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 21, 22);
  -
  -                assert checkNestedSetNodeInMemory( dirHome.getInstance(), 15, 20);
  -                assert checkNestedSetNodeInMemory( dirHome.getParentDirectory(), 8, 23);
  -
                   assert invokeMethod("#{directoryHome.remove}").equals("removed");
   
                   // TODO: SeamTest doesn't do navigation but we don't want to have /dirEdit_d.xhtml in the RENDER RESPONSE
  @@ -134,28 +88,19 @@
                   Redirect.instance().setViewId("/dirDisplay.xhtml");
                   Redirect.instance().execute();
   
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 17);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 15, 16);
  -                assert checkNestedSetNodeInMemory( (Node)getValue("#{directoryHome.parentDirectory}"), 8, 17);
  -                assert !checkNodeInDatabase(TEST_DIRECTORY2_ID);
  -                assert !checkNodeInDatabase(TEST_DOCUMENT5_ID);
  -                assert !checkNodeInDatabase(TEST_DOCUMENT6_ID);
  -
  -                displayNodeTree( (NodeDAO)getValue("#{nodeDAO}"), (Node)getValue("#{directoryHome.parentDirectory}") );
  +                assert checkNestedSetNodeInDatabase(1l, 1, 997);
  +                assert !checkDirectoryInDatabase(2l);
               }
   
           }.run();
       }
   
       @Test
  -    public void createDocumentInArea() throws Exception {
  +    public void createDocument() throws Exception {
   
           final String conversationId = new NonFacesRequest("/docEdit_d.xhtml") {
               protected void beforeRequest() {
  -                setParameter("parentDirectoryId", TEST_DIRECTORY1_ID.toString());
  +                setParameter("parentDirectoryId", "3");
               }
           }.run();
   
  @@ -168,261 +113,136 @@
               protected void invokeApplication() throws Exception {
   
                   DocumentHome docHome = (DocumentHome)getInstance("documentHome");
  -                docHome.getInstance().setName("Testname");
  -                docHome.getInstance().setReadAccessLevel(0);
  -                docHome.getInstance().setWriteAccessLevel(0);
  -                docHome.getInstance().setEnableComments(false);
  -                docHome.setFormContent("Testcontent");
  -
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 23);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 20);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 21, 22);
  -
  -                assert checkNestedSetNodeInMemory( docHome.getParentDirectory(), 8, 23);
  +                docHome.getInstance().setName("Test Name");
  +                docHome.setFormContent("Test Content");
   
                   assert invokeMethod("#{documentHome.persist}").equals("persisted");
   
               }
   
               protected void renderResponse() throws Exception {
  +                WikiDocument newNode = (WikiDocument)getValue("#{documentHome.instance}");
   
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 25);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 20);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 21, 22);
  -                Node newNode = (Node)getValue("#{documentHome.instance}");
  -                assert checkNodeInDatabase(newNode.getId());
  -                assert checkNestedSetNodeInMemory(newNode, 23, 24);
  -                assert checkNestedSetNodeInDatabase(newNode.getId(), 23, 24);
  -
  -                Node parentDir = (Node)getValue("#{documentHome.parentDirectory}");
  -                assert checkNestedSetNodeInMemory(parentDir, 8, 25);
  -
  -                displayNodeTree( (NodeDAO)getValue("#{nodeDAO}"), parentDir );
  +                assert checkNestedSetNodeInDatabase(3l, 4, 9);
  +                assert newNode.getAreaNumber().equals(3l);
  +                assert newNode.getCreatedBy().getId().equals(2l);
  +                assert newNode.getParent().getId().equals(3l);
  +                assert newNode.getWikiname().equals("TestName");
  +                assert newNode.getReadAccessLevel() == 0;
  +                assert newNode.getWriteAccessLevel() == 0;
  +                assert newNode.getLastModifiedBy() == null;
  +                assert newNode.getLastModifiedOn() == null;
  +                assert newNode.getTags().size() == 0;
  +                assert checkDocumentInDatabase(newNode.getId());
               }
   
           }.run();
       }
   
       @Test
  -    public void createDocumentInSubdirectory() throws Exception {
  -
  -        final String conversationId = new NonFacesRequest("/docEdit_d.xhtml") {
  -            protected void beforeRequest() {
  -                setParameter("parentDirectoryId", TEST_DIRECTORY2_ID.toString());
  -            }
  -        }.run();
  -
  -        new FacesRequest("/docEdit_d.xhtml") {
  -
  -            protected void beforeRequest() {
  -                setParameter("cid", conversationId);
  -            }
  -
  -            protected void invokeApplication() throws Exception {
  -                DocumentHome docHome = (DocumentHome)getInstance("documentHome");
  -
  -                docHome.getInstance().setName("Testname");
  -                docHome.getInstance().setReadAccessLevel(0);
  -                docHome.getInstance().setWriteAccessLevel(0);
  -                docHome.getInstance().setEnableComments(false);
  -                docHome.setFormContent("Testcontent");
  -
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 23);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 20);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 21, 22);
  -
  -                assert checkNestedSetNodeInMemory( docHome.getParentDirectory(), 15, 20);
  -
  -                assert invokeMethod("#{documentHome.persist}").equals("persisted");
  -            }
  -
  -            protected void renderResponse() throws Exception {
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 25);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 22);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 23, 24);
  -                Node newNode = (Node)getValue("#{documentHome.instance}");
  -                assert checkNodeInDatabase(newNode.getId());
  -                assert checkNestedSetNodeInMemory(newNode, 20, 21);
  -                assert checkNestedSetNodeInDatabase(newNode.getId(), 20, 21);
  -
  -                Node parentDir = (Node)getValue("#{documentHome.parentDirectory}");
  -                assert checkNestedSetNodeInMemory(parentDir, 15, 22);
  -
  -                displayNodeTree( (NodeDAO)getValue("#{nodeDAO}"), parentDir );
  -            }
  -
  -        }.run();
  -    }
  -
  -    @Test
  -    public void moveDirectoryLeft() throws Exception {
  +    public void setDefaultDocument() throws Exception {
   
           final String conversationId = new NonFacesRequest("/dirEdit_d.xhtml") {
               protected void beforeRequest() {
  -                setParameter("directoryId", TEST_DIRECTORY1_ID.toString());
  -                setParameter("parentDirectoryId", TEST_WIKI_ROOT_ID.toString());
  +                setParameter("directoryId", "4");
  +                setParameter("parentDirectoryId", "3");
               }
           }.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");
  +                assert dirHome.getInstance().getId().equals(4l); // Init!
   
  -                // Move the TEST_DIRECTORY2 (position 3) to position 1
  -                WikiUtil.shiftListElement(dirHome.getInstance().getChildren(), 3, 1);
  +                // Just take the first one, these should be ordered by name, but there is only one there
  +                WikiDocument defaultDocument = dirHome.getChildDocuments().get(0);
  +                dirHome.getInstance().setDefaultFile(defaultDocument);
  +                newDefaultDocumentId = defaultDocument.getId();
   
                   assert invokeMethod("#{directoryHome.update}").equals("updated");
               }
   
               protected void renderResponse() throws Exception {
  -
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 23);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 21, 22);
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 20);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
  -
                   DirectoryHome dirHome = (DirectoryHome)getInstance("directoryHome");
  -
  -                assert dirHome.getInstance().getChildren().get(0).getId().equals(TEST_DOCUMENT1_ID);
  -                assert checkNestedSetNodeInMemory(dirHome.getInstance().getChildren().get(0), 9, 10);
  -
  -                displayNodeTree( (NodeDAO)getValue("#{nodeDAO}"), (Node)getValue("#{directoryHome.instance}") );
  -
  +                assert dirHome.getInstance().getDefaultFile().getId().equals(newDefaultDocumentId);
               }
  -
           }.run();
       }
   
  -
       @Test
  -    public void moveDocumentRight() throws Exception {
  +    public void changeDefaultDocument() throws Exception {
   
           final String conversationId = new NonFacesRequest("/dirEdit_d.xhtml") {
               protected void beforeRequest() {
  -                setParameter("directoryId", TEST_DIRECTORY1_ID.toString());
  -                setParameter("parentDirectoryId", TEST_WIKI_ROOT_ID.toString());
  +                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");
  +                assert dirHome.getInstance().getId().equals(3l); // Init!
   
  -                // Move the TEST_DOCUMENT2 (position 1) to position 3
  -                WikiUtil.shiftListElement(dirHome.getInstance().getChildren(), 1, 3);
  +                // Switch from first to second, these are ordered by name, "One", "Two"
  +                WikiDocument defaultDocument = dirHome.getChildDocuments().get(1);
  +                dirHome.getInstance().setDefaultFile(defaultDocument);
  +                newDefaultDocumentId = defaultDocument.getId();
   
                   assert invokeMethod("#{directoryHome.update}").equals("updated");
               }
   
               protected void renderResponse() throws Exception {
  -
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY1_ID, 8, 23);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT1_ID, 9, 10);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT2_ID, 11, 12);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT3_ID, 13, 14);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT7_ID, 21, 22);
  -                assert checkNestedSetNodeInDatabase(TEST_DIRECTORY2_ID, 15, 20);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT5_ID, 16, 17);
  -                assert checkNestedSetNodeInDatabase(TEST_DOCUMENT6_ID, 18, 19);
  -
                   DirectoryHome dirHome = (DirectoryHome)getInstance("directoryHome");
  -
  -                assert dirHome.getInstance().getChildren().get(0).getId().equals(TEST_DOCUMENT1_ID);
  -                assert checkNestedSetNodeInMemory(dirHome.getInstance().getChildren().get(0), 9, 10);
  -
  -                displayNodeTree( (NodeDAO)getValue("#{nodeDAO}"), (Node)getValue("#{directoryHome.instance}") );
  +                assert dirHome.getInstance().getDefaultFile().getId().equals(newDefaultDocumentId);
  +                assert newDefaultDocumentId.equals(7l);
               }
  -
           }.run();
       }
   
  -    /* ############################################################################################################## */
  -
  -    private boolean checkNestedSetNodeInMemory(Node node, long left, long right) throws Exception {
  -        return node.getNsLeft() == left && node.getNsRight() == right;
  +    private boolean checkNestedSetNodeInDatabase(long nodeId, long left, long right) throws Exception {
  +        Session s = getHibernateSession();
  +        WikiDirectory dir = (WikiDirectory)s.createQuery("select d from WikiDirectory d  left join fetch d.parent where d.id = :id").setParameter("id", nodeId).uniqueResult();
  +        s.close();
  +        return dir.getNodeInfo().getNsLeft() == left && dir.getNodeInfo().getNsRight() == right;
       }
   
  -    private boolean checkNestedSetNodeInDatabase(long nodeId, long left, long right) throws Exception {
  -        StatelessSession ss = getStatelessSession();
  -        Node node = (Node)ss.createQuery("select n from Node n left join fetch n.parent where n.id = :id").setParameter("id", nodeId).uniqueResult();
  -        ss.close();
  -        return node.getNsLeft() == left && node.getNsRight() == right;
  +    private boolean checkDirectoryInDatabase(long nodeId) throws Exception {
  +        Session s = getHibernateSession();
  +        WikiDirectory dir = (WikiDirectory ) s.createQuery("select d from WikiDirectory d left join fetch d.parent where d.id = :id").setParameter("id", nodeId).uniqueResult();
  +        s.close();
  +        return dir != null;
       }
   
  -    private boolean checkNodeInDatabase(long nodeId) throws Exception {
  -        StatelessSession ss = getStatelessSession();
  -        Node node = (Node)ss.createQuery("select n from Node n left join fetch n.parent where n.id = :id").setParameter("id", nodeId).uniqueResult();
  -        ss.close();
  -        return node != null;
  +    private boolean checkDocumentInDatabase(long nodeId) throws Exception {
  +        Session s = getHibernateSession();
  +        WikiDocument doc = (WikiDocument) s.createQuery("select d from WikiDocument d left join fetch d.parent left join fetch d.tags where d.id = :id").setParameter("id", nodeId).uniqueResult();
  +        s.close();
  +        return doc != null;
       }
   
  -    private StatelessSession getStatelessSession() throws Exception {
  +    private Session getHibernateSession() throws Exception {
           org.jboss.ejb3.entity.InjectedEntityManagerFactory jbossEMF =
                   (org.jboss.ejb3.entity.InjectedEntityManagerFactory) getInitialContext().lookup("java:/entityManagerFactories/wiki");
  -        return ((HibernateEntityManagerFactory) jbossEMF.getDelegate()).getSessionFactory().openStatelessSession();
  -    }
  -
  -    private void displayNodeTree(NodeDAO dao, Node startNode) {
  -        if (log.isTraceEnabled()) {
  -
  -            Comparator<NestedSetNodeWrapper<Node>> comp =
  -                new Comparator<NestedSetNodeWrapper<Node>>() {
  -                    public int compare(NestedSetNodeWrapper<Node> o, NestedSetNodeWrapper<Node> o2) {
  -                        return o.getWrappedNode().getDisplayPosition().compareTo(o2.getWrappedNode().getDisplayPosition());
  -                    }
  -                };
  -            NestedSetNodeWrapper<Node> startNodeWrapper = new NestedSetNodeWrapper<Node>(startNode, comp);
  -            NestedSetResultTransformer<Node> transformer = new NestedSetResultTransformer<Node>(startNodeWrapper);
  -            dao.appendNestedSetNodes(transformer, null, false);
  -
  -            log.trace("######################################## TREE BEGIN #####################################################");
  -            displayNodes(startNodeWrapper);
  -            log.trace("######################################## TREE END   #####################################################");
  -        }
  -    }
  -    private void displayNodes(NestedSetNodeWrapper<Node> startNode) {
  -        StringBuilder levelMarkers = new StringBuilder();
  -        for (int i = 1; i <= startNode.getLevel(); i++) {
  -            levelMarkers.append("#");
  -        }
  -        log.trace(levelMarkers.toString() + " " + startNode);
  -        for (NestedSetNodeWrapper<Node> next : startNode.getWrappedChildren()) {
  -            displayNodes(next);
  -        }
  +        return ((HibernateEntityManagerFactory) jbossEMF.getDelegate()).getSessionFactory().openSession();
       }
   
   }
  
  
  
  1.1      date: 2007/12/19 04:29:24;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing/EditMenu.java
  
  Index: EditMenu.java
  ===================================================================
  /*
   * 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.wiki.test.util.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");
                  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");
                  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");
                  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");
                  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");
                  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");
                  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");
                  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");
                  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");
                  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();
      }
  
  }
  
  
  
  1.1      date: 2007/12/19 04:29:24;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing/EditMacros.java
  
  Index: EditMacros.java
  ===================================================================
  /*
   * 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.DocumentHome;
  import org.jboss.seam.wiki.core.model.WikiDocument;
  import org.jboss.seam.wiki.core.model.WikiUpload;
  import org.jboss.seam.wiki.core.model.WikiMacro;
  import org.jboss.seam.wiki.test.util.DBUnitSeamTest;
  import org.testng.annotations.Test;
  
  public class EditMacros extends DBUnitSeamTest {
  
      protected void prepareDBUnitOperations() {
          beforeTestOperations.add(
              new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
          );
      }
  
      @Test
      public void marshallMacros() 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");
                  assert docHome.getInstance().getId().equals(6l); // Init!
  
                  assert docHome.getInstance().getHeaderMacros().size() == 2;
                  assert docHome.getInstance().getContentMacros().size() == 2;
                  assert docHome.getInstance().getFooterMacros().size() == 2;
  
                  WikiMacro macro = new WikiMacro("contentMacro1");
                  boolean macroFound = false;
                  for (WikiMacro wikiMacro : docHome.getInstance().getContentMacros()) {
                      if (wikiMacro.equals(macro)) {
                          assert wikiMacro.getParams().size()==2;
                          assert wikiMacro.getParams().get("param1").equals("value one");
                          assert wikiMacro.getParams().get("param2").equals("value two");
                          macroFound = true;
                      }
                  }
                  assert macroFound;
  
              }
  
          }.run();
      }
  
      @Test
      public void editMacros() 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");
                  assert docHome.getInstance().getId().equals(6l); // Init!
  
                  docHome.setFormContent("[<=contentMacro3<param=value>]");
  
                  assert docHome.getInstance().getHeaderMacros().size() == 2;
                  assert docHome.getInstance().getContentMacros().size() == 1;
                  assert docHome.getInstance().getFooterMacros().size() == 2;
  
                  WikiMacro macro = new WikiMacro("contentMacro3");
                  boolean macroFound = false;
                  for (WikiMacro wikiMacro : docHome.getInstance().getContentMacros()) {
                      if (wikiMacro.equals(macro)) {
                          assert wikiMacro.getParams().size()==1;
                          assert wikiMacro.getParams().get("param").equals("value");
                          macroFound = true;
                      }
                  }
                  assert macroFound;
              }
  
          }.run();
      }
  
  }
  
  
  1.1      date: 2007/12/19 04:29:24;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing/Linking.java
  
  Index: Linking.java
  ===================================================================
  /*
   * 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.DocumentHome;
  import org.jboss.seam.wiki.core.model.WikiDocument;
  import org.jboss.seam.wiki.core.model.WikiUpload;
  import org.jboss.seam.wiki.test.util.DBUnitSeamTest;
  import org.testng.annotations.Test;
  
  public class Linking extends DBUnitSeamTest {
  
      protected void prepareDBUnitOperations() {
          beforeTestOperations.add(
              new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
          );
          beforeTestOperations.add(
              new DataSetOperation("org/jboss/seam/wiki/test/UploadData.dbunit.xml", DatabaseOperation.INSERT)
          );
      }
  
      @Test
      public void linkToKnownProtocols() 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");
                  assert docHome.getInstance().getId().equals(6l); // Init!
  
                  docHome.setFormContent("[=>http://foo.bar]");
                  assert docHome.getInstance().getContent().equals("[=>http://foo.bar]");
                  assert docHome.getFormContent().equals("[=>http://foo.bar]");
  
                  docHome.setFormContent("[=>https://foo.bar]");
                  assert docHome.getInstance().getContent().equals("[=>https://foo.bar]");
                  assert docHome.getFormContent().equals("[=>https://foo.bar]");
  
                  docHome.setFormContent("[=>ftp://foo.bar]");
                  assert docHome.getInstance().getContent().equals("[=>ftp://foo.bar]");
                  assert docHome.getFormContent().equals("[=>ftp://foo.bar]");
  
                  docHome.setFormContent("[=>mailto:foo at bar.tld]");
                  assert docHome.getInstance().getContent().equals("[=>mailto:foo at bar.tld]");
                  assert docHome.getFormContent().equals("[=>mailto:foo at bar.tld]");
  
                  docHome.setFormContent("[Foo Bar=>http://foo.bar]");
                  assert docHome.getInstance().getContent().equals("[Foo Bar=>http://foo.bar]");
                  assert docHome.getFormContent().equals("[Foo Bar=>http://foo.bar]");
  
                  docHome.setFormContent("[Foo Bar=>https://foo.bar]");
                  assert docHome.getInstance().getContent().equals("[Foo Bar=>https://foo.bar]");
                  assert docHome.getFormContent().equals("[Foo Bar=>https://foo.bar]");
  
                  docHome.setFormContent("[Foo Bar=>ftp://foo.bar]");
                  assert docHome.getInstance().getContent().equals("[Foo Bar=>ftp://foo.bar]");
                  assert docHome.getFormContent().equals("[Foo Bar=>ftp://foo.bar]");
  
                  docHome.setFormContent("[Foo Bar=>mailto:foo at bar.tld]");
                  assert docHome.getInstance().getContent().equals("[Foo Bar=>mailto:foo at bar.tld]");
                  assert docHome.getFormContent().equals("[Foo Bar=>mailto:foo at bar.tld]");
  
              }
  
          }.run();
      }
  
      @Test
      public void linkToDocuments() 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");
                  assert docHome.getInstance().getId().equals(6l); // Init!
  
                  docHome.setFormContent("[=>Two]");
                  assert docHome.getInstance().getContent().equals("[=>wiki://7]");
                  assert docHome.getFormContent().equals("[=>Two]");
  
                  docHome.setFormContent("[=>Four]");
                  assert docHome.getInstance().getContent().equals("[=>Four]");
                  assert docHome.getFormContent().equals("[=>Four]");
  
                  docHome.setFormContent("[=>BBB|Four]");
                  assert docHome.getInstance().getContent().equals("[=>wiki://9]");
                  assert docHome.getFormContent().equals("[=>BBB|Four]");
  
                  docHome.setFormContent("[Foo Bar=>Two]");
                  assert docHome.getInstance().getContent().equals("[Foo Bar=>wiki://7]");
                  assert docHome.getFormContent().equals("[Foo Bar=>Two]");
  
                  docHome.setFormContent("[Foo Bar=>Four]");
                  assert docHome.getInstance().getContent().equals("[Foo Bar=>Four]");
                  assert docHome.getFormContent().equals("[Foo Bar=>Four]");
  
                  docHome.setFormContent("[Foo Bar=>BBB|Four]");
                  assert docHome.getInstance().getContent().equals("[Foo Bar=>wiki://9]");
                  assert docHome.getFormContent().equals("[Foo Bar=>BBB|Four]");
  
              }
  
          }.run();
      }
  
      @Test
      public void linkToUploads() 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");
                  assert docHome.getInstance().getId().equals(6l); // Init!
  
                  docHome.setFormContent("[=>Two]");
                  assert docHome.getInstance().getContent().equals("[=>wiki://7]");
                  assert docHome.getFormContent().equals("[=>Two]");
  
                  docHome.setFormContent("[=>BBB|Test Image]");
                  assert docHome.getInstance().getContent().equals("[=>wiki://30]");
                  assert docHome.getFormContent().equals("[=>BBB|Test Image]");
  
              }
  
          }.run();
      }
  
      @Test
      public void linkSourceTargetTracking() 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");
                  assert docHome.getInstance().getId().equals(6l); // Init!
  
                  assert docHome.getInstance().getOutgoingLinks().size() == 0;
                  docHome.setFormContent("[=>Two] and [=>Three] and [=>BBB|Test Image]");
  
                  assert invokeMethod("#{documentHome.update}").equals("updated");
  
                  assert docHome.getInstance().getContent().equals("[=>wiki://7] and [=>wiki://8] and [=>wiki://30]");
                  assert docHome.getInstance().getOutgoingLinks().size() == 3;
  
                  docHome.getEntityManager().clear();
                  WikiDocument d = (WikiDocument)
                          docHome.getEntityManager().createQuery("select d from WikiDocument d left join fetch d.incomingLinks where d.id = :id")
                                  .setParameter("id", 7l)
                                  .getSingleResult();
                  assert d.getIncomingLinks().size() == 1;
                  docHome.getEntityManager().clear();
                  d = (WikiDocument)
                          docHome.getEntityManager().createQuery("select d from WikiDocument d left join fetch d.incomingLinks where d.id = :id")
                                  .setParameter("id", 8l)
                                  .getSingleResult();
                  assert d.getIncomingLinks().size() == 2;
                  docHome.getEntityManager().clear();
                  WikiUpload f = (WikiUpload)
                          docHome.getEntityManager().createQuery("select f from WikiUpload f left join fetch f.incomingLinks where f.id = :id")
                                  .setParameter("id", 30l)
                                  .getSingleResult();
                  assert f.getIncomingLinks().size() == 1;
              }
  
          }.run();
      }
  
  
  }
  
  
  1.1      date: 2007/12/19 04:29:24;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing/Commenting.java
  
  Index: Commenting.java
  ===================================================================
  /*
   * 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.wiki.core.action.CommentHome;
  import org.jboss.seam.wiki.core.action.CommentQuery;
  import org.jboss.seam.wiki.core.model.User;
  import org.jboss.seam.wiki.core.model.WikiDocument;
  import org.jboss.seam.wiki.core.model.WikiDirectory;
  import org.jboss.seam.wiki.core.dao.WikiNodeDAO;
  import org.jboss.seam.wiki.test.util.DBUnitSeamTest;
  import org.jboss.seam.contexts.Contexts;
  import org.testng.annotations.Test;
  
  public class Commenting extends DBUnitSeamTest {
  
      protected void prepareDBUnitOperations() {
          beforeTestOperations.add(
              new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
          );
      }
  
      @Test
      public void postComment() throws Exception {
  
          new FacesRequest("/docDisplay_d.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("documentId", "6");
                  setParameter("parentDirectoryId", "3");
              }
  
              protected void updateModelValues() throws Exception {
                  assert getValue("#{documentHome.instance.id}").equals(6l);
              }
  
              protected void invokeApplication() throws Exception {
  
                  CommentHome commentHome = (CommentHome)getInstance("commentHome");
  
                  commentHome.newComment();
  
                  commentHome.getInstance().setFromUserName("Foo");
                  commentHome.getInstance().setFromUserHomepage("http://foo.bar");
                  commentHome.getInstance().setFromUserEmail("foo at bar.tld");
                  commentHome.getInstance().setSubject("Some Subject");
                  commentHome.getInstance().setContent("Some Content");
  
                  invokeMethod("#{commentHome.persist}");
              }
  
              protected void renderResponse() throws Exception {
                  CommentQuery commentQuery = (CommentQuery)getInstance("commentQuery");
                  assert commentQuery.getComments().size() == 7;
  
                  assert commentQuery.getComments().get(0).getId().equals(10l);
                  assert commentQuery.getComments().get(1).getId().equals(11l);
                  assert commentQuery.getComments().get(2).getId().equals(12l);
                  assert commentQuery.getComments().get(3).getId().equals(13l);
                  assert commentQuery.getComments().get(4).getId().equals(14l);
                  assert commentQuery.getComments().get(5).getId().equals(15l);
  
                  assert commentQuery.getComments().get(6).getCreatedBy().getUsername().equals(User.GUEST_USERNAME);
                  assert commentQuery.getComments().get(6).getFromUserName().equals("Foo");
                  assert commentQuery.getComments().get(6).getFromUserHomepage().equals("http://foo.bar");
                  assert commentQuery.getComments().get(6).getFromUserEmail().equals("foo at bar.tld");
                  assert commentQuery.getComments().get(6).getSubject().equals("Some Subject");
                  assert commentQuery.getComments().get(6).getContent().equals("Some Content");
  
              }
  
          }.run();
      }
  
      @Test
      public void deleteComment() throws Exception {
  
          loginAdmin();
  
          new FacesRequest("/docDisplay_d.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("documentId", "6");
                  setParameter("parentDirectoryId", "3");
              }
  
              protected void updateModelValues() throws Exception {
                  assert getValue("#{documentHome.instance.id}").equals(6l);
              }
  
              protected void invokeApplication() throws Exception {
                  invokeMethod("#{commentHome.remove(15)}");
              }
  
              protected void renderResponse() throws Exception {
                  CommentQuery commentQuery = (CommentQuery)getInstance("commentQuery");
                  assert commentQuery.getComments().size() == 5;
  
                  assert commentQuery.getComments().get(0).getId().equals(10l);
                  assert commentQuery.getComments().get(1).getId().equals(11l);
                  assert commentQuery.getComments().get(2).getId().equals(12l);
                  assert commentQuery.getComments().get(3).getId().equals(13l);
                  assert commentQuery.getComments().get(4).getId().equals(14l);
              }
  
          }.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();
      }
  
  
  }
  
  
  1.1      date: 2007/12/19 04:29:24;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing/Tagging.java
  
  Index: Tagging.java
  ===================================================================
  /*
   * 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.wiki.core.action.DocumentHome;
  import org.jboss.seam.wiki.core.action.TagQuery;
  import org.jboss.seam.wiki.core.action.UploadHome;
  import org.jboss.seam.wiki.core.model.WikiFile;
  import org.jboss.seam.wiki.test.util.DBUnitSeamTest;
  import org.testng.annotations.Test;
  
  import java.util.List;
  
  public class Tagging extends DBUnitSeamTest {
  
      protected void prepareDBUnitOperations() {
          beforeTestOperations.add(
              new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
          );
          beforeTestOperations.add(
              new DataSetOperation("org/jboss/seam/wiki/test/UploadData.dbunit.xml", DatabaseOperation.INSERT)
          );
      }
  
      @Test
      public void tagDocument() 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 {
                  DocumentHome docHome = (DocumentHome)getInstance("documentHome");
  
                  assert docHome.getInstance().getId().equals(6l); // Init!
  
                  assert docHome.getTagString().equals("Tag One");
                  assert docHome.getInstance().getTags().size() == 1;
                  docHome.setTagString(docHome.getTagString() + ", New Tag");
                  assert invokeMethod("#{documentHome.update}").equals("updated");
              }
  
              protected void renderResponse() throws Exception {
                  DocumentHome docHome = (DocumentHome)getInstance("documentHome");
                  assert docHome.getInstance().getTags().size() == 2;
                  assert docHome.getInstance().getTagsAsList().get(0).equals("New Tag");
                  assert docHome.getInstance().getTagsAsList().get(1).equals("Tag One");
  
                  TagQuery tagQuery = (TagQuery)getInstance("tagQuery");
                  tagQuery.setTag("New Tag");
                  List<WikiFile> taggedFiles = tagQuery.getTaggedFiles();
                  assert taggedFiles.size() == 1;
                  assert taggedFiles.get(0).getId().equals(6l);
              }
          }.run();
      }
  
      @Test
      public void tagUpload() throws Exception {
  
          final String conversationId = new NonFacesRequest("/uploadEdit_d.xhtml") {
              protected void beforeRequest() {
                  setParameter("uploadId", "30");
                  setParameter("parentDirectoryId", "2");
              }
          }.run();
  
          new FacesRequest("/uploadEdit_d.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("cid", conversationId);
              }
  
              protected void invokeApplication() throws Exception {
                  UploadHome uploadHome = (UploadHome)getInstance("uploadHome");
                  assert uploadHome.getInstance().getId().equals(30l); // Init!
  
                  assert uploadHome.getInstance().getTags().size() == 0;
                  uploadHome.setTagString("New Tag");
                  assert invokeMethod("#{uploadHome.update}").equals("updated");
              }
  
              protected void renderResponse() throws Exception {
                  UploadHome uploadHome = (UploadHome)getInstance("uploadHome");
                  assert uploadHome.getInstance().getTags().size() == 1;
                  assert uploadHome.getInstance().getTagsAsList().get(0).equals("New Tag");
  
                  TagQuery tagQuery = (TagQuery)getInstance("tagQuery");
                  tagQuery.setTag("New Tag");
                  List<WikiFile> taggedFiles = tagQuery.getTaggedFiles();
                  assert taggedFiles.size() == 1;
                  assert taggedFiles.get(0).getId().equals(30l);
              }
          }.run();
      }
  
  }
  
  
  1.1      date: 2007/12/19 04:29:24;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing/DocumentHistoryTests.java
  
  Index: DocumentHistoryTests.java
  ===================================================================
  /*
   * 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.DocumentHome;
  import org.jboss.seam.wiki.core.dao.WikiNodeDAO;
  import org.jboss.seam.wiki.core.model.WikiDocument;
  import org.jboss.seam.wiki.core.model.WikiFile;
  import org.jboss.seam.wiki.test.util.DBUnitSeamTest;
  import org.testng.annotations.Test;
  
  public class DocumentHistoryTests extends DBUnitSeamTest {
  
      protected void prepareDBUnitOperations() {
          beforeTestOperations.add(
                  new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
          );
      }
  
      @Test
      public void checkRevisions() throws Exception {
  
          new NonFacesRequest("/wiki.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("nodeId", "6");
              }
  
              protected void renderResponse() throws Exception {
                  DocumentHome docHome = (DocumentHome)getInstance("documentHome");
                  assert docHome.getInstance().getId().equals(6l); // Init!
  
                  WikiDocument doc = (WikiDocument)getValue("#{currentDocument}");
                  assert doc != null;
                  assert doc.getId().equals(6l);
  
                  assert doc.getRevision() == 3;
  
                  assert docHome.isHistoricalFilesPresent();
                  assert docHome.getHistoricalFiles().size() == 3;
  
                  // Sorted by revision descending
                  assert docHome.getHistoricalFiles().get(0).getRevision() == 2;
                  assert docHome.getHistoricalFiles().get(0).getId().equals(6l);
                  assert docHome.getHistoricalFiles().get(0).getLastModifiedByUsername().equals("admin");
                  assert docHome.getHistoricalFiles().get(0).getLastModifiedOn() != null;
                  assert !docHome.getHistoricalFiles().get(0).getLastModifiedOn().equals(doc.getLastModifiedOn());
  
                  assert docHome.getHistoricalFiles().get(1).getRevision() == 1;
                  assert docHome.getHistoricalFiles().get(0).getId().equals(6l);
                  assert docHome.getHistoricalFiles().get(1).getLastModifiedByUsername().equals("guest");
                  assert docHome.getHistoricalFiles().get(1).getLastModifiedOn() != null;
                  assert !docHome.getHistoricalFiles().get(1).getLastModifiedOn().equals(doc.getLastModifiedOn());
  
                  assert docHome.getHistoricalFiles().get(2).getRevision() == 0;
                  assert docHome.getHistoricalFiles().get(0).getId().equals(6l);
                  assert docHome.getHistoricalFiles().get(2).getLastModifiedByUsername().equals("admin");
                  assert docHome.getHistoricalFiles().get(2).getLastModifiedOn() == null;
              }
  
          }.run();
      }
  
      @Test
      public void createDocumentCheckRevision() throws Exception {
  
          final String conversationId = new NonFacesRequest("/docEdit_d.xhtml") {
              protected void beforeRequest() {
                  setParameter("parentDirectoryId", "3");
              }
          }.run();
  
          new FacesRequest("/docEdit_d.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("cid", conversationId);
              }
  
              protected void invokeApplication() throws Exception {
                  DocumentHome docHome = (DocumentHome)getInstance("documentHome");
                  docHome.getInstance().setName("Test Name");
                  docHome.setFormContent("Test Content");
  
                  assert invokeMethod("#{documentHome.persist}").equals("persisted");
  
              }
  
              protected void renderResponse() throws Exception {
                  WikiFile newFile = (WikiFile)getValue("#{documentHome.instance}");
  
                  // Shouldn't have any historical data
                  WikiNodeDAO wikiNodeDAO = (WikiNodeDAO)getInstance("wikiNodeDAO");
                  assert wikiNodeDAO.findHistoricalFiles(newFile).size() == 0;
                  assert wikiNodeDAO.findNumberOfHistoricalFiles(newFile).equals(0l);
              }
  
          }.run();
      }
  
      @Test
      public void updateDocumentCheckRevisions() throws Exception {
  
          loginAdmin();
  
          final String conversationId = new NonFacesRequest("/docEdit_d.xhtml") {
              protected void beforeRequest() {
                  setParameter("documentId", "6");
                  setParameter("parentDirectoryId", "3");
              }
          }.run();
  
          new FacesRequest("/docEdit_d.xhtml") {
  
              String oldContent;
  
              protected void beforeRequest() {
                  setParameter("cid", conversationId);
              }
  
              protected void invokeApplication() throws Exception {
                  assert Conversation.instance().isLongRunning();
  
                  DocumentHome docHome = (DocumentHome)getInstance("documentHome");
                  assert docHome.getInstance().getId().equals(6l); // Init!
  
                  docHome.getFormContent(); // Initialize historical revision
                  docHome.setFormContent("New text");
                  docHome.setMinorRevision(false);
  
                  assert invokeMethod("#{documentHome.update}").equals("updated");
              }
  
          }.run();
  
          new NonFacesRequest("/wiki.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("nodeId", "6");
              }
  
              protected void renderResponse() throws Exception {
                  DocumentHome docHome = (DocumentHome)getInstance("documentHome");
                  assert docHome.getInstance().getId().equals(6l); // Init!
  
                  assert docHome.isHistoricalFilesPresent();
                  assert docHome.getHistoricalFiles().size() == 4;
  
                  // Sorted by revision descending
                  assert docHome.getHistoricalFiles().get(0).getRevision() == 3;
                  assert docHome.getHistoricalFiles().get(0).getId().equals(6l);
                  assert docHome.getHistoricalFiles().get(0).getLastModifiedByUsername().equals("admin");
                  assert docHome.getHistoricalFiles().get(0).getLastModifiedOn() != null;
  
                  assert docHome.getHistoricalFiles().get(1).getRevision() == 2;
                  assert docHome.getHistoricalFiles().get(0).getId().equals(6l);
                  assert docHome.getHistoricalFiles().get(1).getLastModifiedByUsername().equals("admin");
                  assert docHome.getHistoricalFiles().get(1).getLastModifiedOn() != null;
  
                  assert docHome.getHistoricalFiles().get(2).getRevision() == 1;
                  assert docHome.getHistoricalFiles().get(0).getId().equals(6l);
                  assert docHome.getHistoricalFiles().get(2).getLastModifiedByUsername().equals("guest");
                  assert docHome.getHistoricalFiles().get(2).getLastModifiedOn() != null;
  
                  assert docHome.getHistoricalFiles().get(3).getRevision() == 0;
                  assert docHome.getHistoricalFiles().get(0).getId().equals(6l);
                  assert docHome.getHistoricalFiles().get(3).getLastModifiedByUsername().equals("admin");
                  assert docHome.getHistoricalFiles().get(3).getLastModifiedOn() == null;
              }
  
          }.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();
      }
  
  }
  
  
  
  1.1      date: 2007/12/19 04:29:24;  author: cbauer;  state: Exp;jboss-seam/examples/wiki/src/test/org/jboss/seam/wiki/test/editing/Uploading.java
  
  Index: Uploading.java
  ===================================================================
  package org.jboss.seam.wiki.test.editing;
  
  import org.dbunit.operation.DatabaseOperation;
  import org.jboss.seam.wiki.core.upload.Uploader;
  import org.jboss.seam.wiki.core.upload.editor.WikiUploadEditor;
  import org.jboss.seam.wiki.core.action.UploadHome;
  import org.jboss.seam.wiki.test.util.DBUnitSeamTest;
  import org.testng.annotations.Test;
  import org.hibernate.StatelessSession;
  import org.hibernate.ejb.HibernateEntityManagerFactory;
  
  import java.util.List;
  
  public class Uploading extends DBUnitSeamTest {
  
      protected void prepareDBUnitOperations() {
          beforeTestOperations.add(
              new DataSetOperation("org/jboss/seam/wiki/test/WikiBaseData.dbunit.xml", DatabaseOperation.CLEAN_INSERT)
          );
          beforeTestOperations.add(
              new DataSetOperation("org/jboss/seam/wiki/test/UploadData.dbunit.xml", DatabaseOperation.INSERT)
          );
      }
  
      @Test
      public void createUpload() throws Exception {
  
          final String conversationId = new NonFacesRequest("/uploadCreate_d.xhtml") {
              protected void beforeRequest() {
                  setParameter("parentDirectoryId", "2");
              }
          }.run();
  
          new FacesRequest("/uploadCreate_d.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("cid", conversationId);
              }
  
              protected void invokeApplication() throws Exception {
  
                  Uploader uploader = (Uploader) getInstance("uploader");
  
                  assert uploader.getParentDirectoryId().equals(2l);
  
                  byte[] uploadData = getBinaryFile("testupload2.zip");
                  uploader.setData(uploadData);
                  uploader.setContentType("application/zip");
                  uploader.setFilename("testupload2.zip");
  
                  assert uploader.uploadNewInstance().equals("WikiUpload");
  
                  assert uploader.getUpload().getContentType().equals("application/zip");
                  assert uploader.getUpload().getFilesize() == uploadData.length;
                  assert uploader.getUpload().getFilename().equals("testupload2.zip");
                  assert uploader.getUpload().getFilenameWithoutExtension().equals("testupload2");
                  assert uploader.getUpload().getExtension().equals("zip");
                  assert uploader.getUpload().getData() == uploadData;
  
              }
  
          }.run();
  
          new FacesRequest("/uploadEdit_d.xhtml") {
  
              protected void beforeRequest() {
                  setParameter("cid", conversationId);
                  setParameter("parentDirectoryId", "2");
              }
  
              protected void invokeApplication() throws Exception {
  
                  UploadHome uploadHome = (UploadHome)getInstance("uploadHome");
                  uploadHome.setEdit(true);
  
                  assert uploadHome.getInstance().getFilename().equals("testupload2.zip");
                  assert uploadHome.getUploadEditor().getClass().equals(WikiUploadEditor.class);
                  assert uploadHome.getUploadEditor().getIncludeName().equals("wikiUploadEditor");
  
                  assert invokeMethod("#{uploadHome.persist}").equals("persisted");
              }
  
              protected void renderResponse() throws Exception {
                  StatelessSession ss = getStatelessSession();
                  List<String> uploads =
                          ss.createQuery("select wu.filename from WikiUpload wu where wu.parent.id = :parent order by wu.createdOn desc ")
                          .setParameter("parent" , 2l).list();
  
                  assert uploads.size() == 3;
                  assert uploads.get(0).equals("testupload2.zip");
              }
          }.run();
      }
  
      private StatelessSession getStatelessSession() throws Exception {
          org.jboss.ejb3.entity.InjectedEntityManagerFactory jbossEMF =
                  (org.jboss.ejb3.entity.InjectedEntityManagerFactory) getInitialContext().lookup("java:/entityManagerFactories/wiki");
          return ((HibernateEntityManagerFactory) jbossEMF.getDelegate()).getSessionFactory().openStatelessSession();
      }
  
  
  }
  
  
  



More information about the jboss-cvs-commits mailing list