Package org.jboss.seam.wiki.test.plugin

Source Code of org.jboss.seam.wiki.test.plugin.ForumHomeTests

/*
* JBoss, Home of Professional Open Source
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jboss.seam.wiki.test.plugin;

import org.dbunit.operation.DatabaseOperation;
import org.hibernate.Session;
import org.hibernate.ejb.HibernateEntityManagerFactory;
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.wiki.core.dao.WikiNodeDAO;
import org.jboss.seam.wiki.core.model.*;
import org.jboss.seam.wiki.plugin.forum.ForumHome;
import org.jboss.seam.mock.DBUnitSeamTest;
import org.testng.annotations.Test;

public class ForumHomeTests 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/ForumData.dbunit.xml", DatabaseOperation.INSERT)
        );
    }

    @Test
    public void addForum() throws Exception {

        loginAdmin();

        final String conversationId = new FacesRequest() {

            protected void updateModelValues() throws Exception {
                WikiNodeDAO nodeDAO = (WikiNodeDAO)getInstance(WikiNodeDAO.class);
                WikiDirectory forumDir = nodeDAO.findWikiDirectory(100l);
                Contexts.getPageContext().set("currentDirectory", forumDir);
            }

            protected void invokeApplication() throws Exception {
                ForumHome home = (ForumHome)getInstance(ForumHome.class);
                home.newForum();
            }
        }.run();

        new FacesRequest() {

            protected void beforeRequest() {
                setParameter("cid", conversationId);
            }

            protected void updateModelValues() throws Exception {
                WikiNodeDAO nodeDAO = (WikiNodeDAO)getInstance(WikiNodeDAO.class);
                WikiDirectory forumDir = nodeDAO.findWikiDirectory(100l);
                Contexts.getPageContext().set("currentDirectory", forumDir);
            }

            protected void invokeApplication() throws Exception {
                ForumHome home = (ForumHome)getInstance(ForumHome.class);

                home.getInstance().setName("New Forum");
                home.getInstance().setDescription("This is a new forum");

                assert invokeMethod("#{forumHome.persist}") == null;
            }

            protected void renderResponse() throws Exception {
                Long newId = (Long)getValue("#{forumHome.instance.id}");

                WikiNodeDAO nodeDAO = (WikiNodeDAO)getInstance(WikiNodeDAO.class);
                WikiDirectory newForum = nodeDAO.findWikiDirectory(newId);

                assert newForum.getAreaNumber().equals(100l);

                assert newForum.getFeed() != null;

                Session s = getHibernateSession();
                WikiMenuItem newMenuItem = (WikiMenuItem)s
                        .createQuery("select m from WikiMenuItem m where m.directory.id = :dir")
                        .setParameter("dir", newId)
                        .uniqueResult();
                assert newMenuItem.getDisplayPosition() == 2l;
                s.close();

                WikiDocument defaultDoc = (WikiDocument)newForum.getDefaultFile();
                assert defaultDoc.getName().equals("New Forum Forum");
                assert defaultDoc.getAreaNumber().equals(100l);
                assert defaultDoc.getWikiname().equals("NewForumForum");
                assert defaultDoc.isNameAsTitle();
                assert defaultDoc.getReadAccessLevel() == 0;
                assert defaultDoc.getWriteAccessLevel() == Role.ADMINROLE_ACCESSLEVEL;
                assert defaultDoc.getCreatedBy().getUsername().equals(User.ADMIN_USERNAME);
                assert !defaultDoc.isEnableCommentForm();
                assert !defaultDoc.isEnableComments();
                assert !defaultDoc.isEnableCommentsOnFeeds();
                assert defaultDoc.getHeaderMacrosString().contains("clearBackground");
                assert defaultDoc.getHeaderMacrosString().contains("hideControls");
                assert defaultDoc.getHeaderMacrosString().contains("hideComments");
                assert defaultDoc.getHeaderMacrosString().contains("hideTags");
                assert defaultDoc.getHeaderMacrosString().contains("hideComments");
                assert defaultDoc.getHeaderMacrosString().contains("clearBackground");
                assert defaultDoc.getContentMacrosString().contains("forumTopics");
                assert defaultDoc.getFooterMacrosString() == 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();
    }

    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().openSession();
    }


}
TOP

Related Classes of org.jboss.seam.wiki.test.plugin.ForumHomeTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.