Package org.jboss.seam.wiki.test.editing

Source Code of org.jboss.seam.wiki.test.editing.DocumentHistoryTests

/*
* 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.mock.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.class);
                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.class);
                docHome.getInstance().setName("Test Name");
                docHome.getTextEditor().setValue("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.class);
                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.class);
                assert docHome.getInstance().getId().equals(6l); // Init!

                docHome.syncInstanceToEditor(docHome.getParentNode().getId(), docHome.getInstance());
                docHome.getTextEditor().setValue("New text");
                docHome.syncEditorToInstance(docHome.getParentNode().getId(), docHome.getInstance());
                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.class);
                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();
    }

}
TOP

Related Classes of org.jboss.seam.wiki.test.editing.DocumentHistoryTests

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.