Package org.apache.roller.business

Source Code of org.apache.roller.business.BookmarkTest

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  The ASF licenses this file to You
* under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.  For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/

package org.apache.roller.business;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.RollerException;
import org.apache.roller.TestUtils;
import org.apache.roller.business.BookmarkManager;
import org.apache.roller.business.Roller;
import org.apache.roller.business.RollerFactory;
import org.apache.roller.pojos.BookmarkData;
import org.apache.roller.pojos.FolderData;
import org.apache.roller.pojos.UserData;
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.util.Utilities;


/**
* Test Roller Bookmark Management.
*/
public class BookmarkTest extends TestCase {
   
    public static Log log = LogFactory.getLog(BookmarkTest.class);
   
    UserData testUser = null;
    WebsiteData testWeblog = null;
   
   
    public BookmarkTest(String name) {
        super(name);
    }
   
   
    public static Test suite() {
        return new TestSuite(BookmarkTest.class);
    }
   
   
    /**
     * All tests in this suite require a user and a weblog.
     */
    public void setUp() throws Exception {
       
        try {
            testUser = TestUtils.setupUser("bkmrkTestUser");
            testWeblog = TestUtils.setupWeblog("bkmrkTestWeblog", testUser);
            TestUtils.endSession(true);
        } catch (Exception ex) {
            log.error(ex);
            throw new Exception("Test setup failed", ex);
        }
    }
   
    public void tearDown() throws Exception {
       
        try {
            TestUtils.teardownWeblog(testWeblog.getId());
            TestUtils.teardownUser(testUser.getId());
            TestUtils.endSession(true);
        } catch (Exception ex) {
            log.error(ex);
            throw new Exception("Test teardown failed", ex);
        }
    }
   
    public Roller getRoller() {
        return RollerFactory.getRoller();
    }
   
   
    public void testAddBookmarkToFolder() throws Exception {
       
        BookmarkManager bmgr = getRoller().getBookmarkManager();
        FolderData folder = null;
        BookmarkData bookmark1 = null, bookmark2 = null;
       
        FolderData root = bmgr.getRootFolder(testWeblog);
       
        folder = new FolderData();
        folder.setName("TestFolder1");
        folder.setDescription("created by testAddBookmarkToFolder()");
        folder.setWebsite(testWeblog);
        folder.setParent(root);
        bmgr.saveFolder(folder);
       
        // Add bookmark by adding to folder
        bookmark1 = new BookmarkData(
                folder,
                "TestBookmark1",
                "created by testAddBookmarkToFolder()",
                "http://www.example.com",
                "http://www.example.com/rss.xml",
                new Integer(1),
                new Integer(12),
                "test.jpg");
        folder.addBookmark(bookmark1);
       
        // Add another bookmark
        bookmark2 = new BookmarkData(
                folder,
                "TestBookmark2",
                "created by testAddBookmarkToFolder()",
                "http://www.example.com",
                "http://www.example.com/rss.xml",
                new Integer(1),
                new Integer(12),
                "test.jpf");
        folder.addBookmark(bookmark2);
       
        TestUtils.endSession(true);
       
        FolderData testFolder = null;
        BookmarkData bookmarkb = null, bookmarka = null;
       
        // See that two bookmarks were stored
        testFolder = bmgr.getFolder(folder.getId());
        assertEquals(2, testFolder.getBookmarks().size());
        bookmarka = (BookmarkData)testFolder.getBookmarks().iterator().next();
        bookmarkb = (BookmarkData)testFolder.getBookmarks().iterator().next();
        // Remove one bookmark
        testFolder.removeBookmark(bookmarka);
        bmgr.removeBookmark(bookmarka);
        TestUtils.endSession(true);
       
        // Folder should now contain one bookmark
        testFolder = bmgr.getFolder(folder.getId());
        assertEquals(1, testFolder.getBookmarks().size());
        TestUtils.endSession(true);
       
        // Remove folder
        testFolder = bmgr.getFolder(folder.getId());
        bmgr.removeFolder(testFolder);
        TestUtils.endSession(true);
       
        // Folder and one remaining bookmark should be gone
        assertNull( bmgr.getBookmark(bookmarkb.getId()) );
        assertNull( bmgr.getFolder(folder.getId()) );
    }
   
   
    public void testBookmarkImport() throws Exception {
        importBookmarks("/bookmarks.opml");
    }
   
   
    public void importBookmarks(String fileName) throws Exception {
       
        InputStream fis = this.getClass().getResourceAsStream(fileName);
        getRoller().getBookmarkManager().importBookmarks(
                testWeblog, "ZZZ_imports_ZZZ", fileToString(fis));
        TestUtils.endSession(true);
       
        FolderData fd = null;
       
        fd = getRoller().getBookmarkManager().getFolder(testWeblog, "ZZZ_imports_ZZZ");
        assertTrue("no bookmarks found", fd.retrieveBookmarks(true).size() > 0 );
        getRoller().getBookmarkManager().removeFolder(fd);
        TestUtils.endSession(true);
    }
   
   
    public String fileToString( InputStream is ) throws java.io.IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String s = null;
        StringBuffer sb = new StringBuffer();
        while ( (s=br.readLine()) != null ) {
            sb.append( s );
        }
        return sb.toString();
    }
   
   
    /**
     * Creates folder tree like this:
     *    root/
     *       dest/
     *       f1/
     *          b1
     *          f2/
     *             f3/
     */
    public void testMoveFolderContents() throws Exception {
       
        BookmarkManager bmgr = getRoller().getBookmarkManager();
       
        FolderData root = bmgr.getRootFolder(testWeblog);
       
        FolderData dest = new FolderData();
        dest.setName("dest");
        dest.setParent(root);
        dest.setWebsite(testWeblog);
        bmgr.saveFolder(dest);
       
        // create source folder f1
        FolderData f1 = new FolderData();
        f1.setName("f1");
        f1.setParent(root);
        f1.setWebsite(testWeblog);
        bmgr.saveFolder(f1);
       
        // create bookmark b1 inside source folder f1
        BookmarkData b1 = new BookmarkData(
                f1, "b1", "testbookmark",
                "http://example.com", "http://example.com/rss",
                new Integer(1), new Integer(1), "image.gif");
        f1.addBookmark(b1);
       
        // create folder f2 inside f1
        FolderData f2 = new FolderData();
        f2.setName("f2");
        f2.setParent(f1);
        f2.setWebsite(testWeblog);
        bmgr.saveFolder(f2);
       
        // create bookmark b2 inside folder f2
        BookmarkData b2 = new BookmarkData(
                f2, "b2", "testbookmark",
                "http://example.com", "http://example.com/rss",
                new Integer(1), new Integer(1), "image.gif");
        f2.addBookmark(b2);
       
        // create folder f3 inside folder f2
        FolderData f3 = new FolderData();
        f3.setName("f3");
        f3.setParent(f2);
        f3.setWebsite(testWeblog);
        bmgr.saveFolder(f3);
       
        // crete bookmark b3 inside folder f3
        BookmarkData b3 = new BookmarkData(
                f3, "b3", "testbookmark",
                "http://example.com", "http://example.com/rss",
                new Integer(1), new Integer(1), "image.gif");
        f3.addBookmark(b3);
       
        TestUtils.endSession(true);
       
        // test that parent cannot be moved into child
        boolean safe = false;
        try {
           
            // Move folder into one of it's children
            f1 = bmgr.getFolder(f1.getId());
            f3 = bmgr.getFolder(f3.getId());
            bmgr.moveFolderContents(f1, f3);
            //f3.save();
            //f1.save();
            TestUtils.endSession(true);
        } catch (RollerException e) {
            safe = true;
        }
        assertTrue(safe);
       
        // verify number of entries in each folder
        dest = bmgr.getFolder(dest.getId());
        f1 = bmgr.getFolder(f1.getId());
        assertEquals(0, dest.retrieveBookmarks(true).size());
        assertEquals(0, dest.retrieveBookmarks(false).size());
        assertEquals(1, f1.retrieveBookmarks(false).size());
       
        List f1list = f1.retrieveBookmarks(true);
        assertEquals(3, f1list.size());
       
        // move contents of source category c1 to destination catetory dest
        f1.moveContents(dest);
        bmgr.saveFolder(f1);
        bmgr.saveFolder(dest);
        TestUtils.endSession(true);
       
        // after move, verify number of entries in eacch folder
        dest = bmgr.getFolder(dest.getId());
        f1 = bmgr.getFolder(f1.getId());
        assertEquals(3, dest.retrieveBookmarks(true).size());
        assertEquals(3, dest.retrieveBookmarks(false).size());
        assertEquals(0, f1.retrieveBookmarks(true).size());
        assertEquals(0, f1.retrieveBookmarks(false).size());
    }
   
   
    /** Test bookmark folder paths. */
    public void testPaths() throws Exception {
       
        BookmarkManager bmgr = getRoller().getBookmarkManager();
       
        try {
            FolderData root = bmgr.getRootFolder(testWeblog);
           
            FolderData f1 = new FolderData();
            f1.setName("f1");
            f1.setParent(root);
            f1.setWebsite(testWeblog);
            bmgr.saveFolder(f1);
           
            FolderData f2 = new FolderData();
            f2.setName("f2");
            f2.setParent(f1);
            f2.setWebsite(testWeblog);
            bmgr.saveFolder(f2);
           
            FolderData f3 = new FolderData();
            f3.setName("f3");
            f3.setParent(f2);
            f3.setWebsite(testWeblog);
            bmgr.saveFolder(f3);
           
            TestUtils.endSession(true);
        } catch (RollerException e) {
            TestUtils.endSession(true);
            log.error(e);
        }
       
        try {
           
            assertEquals("f1",bmgr.getFolderByPath(testWeblog, null, "/f1").getName());
            assertEquals("f2",bmgr.getFolderByPath(testWeblog, null, "/f1/f2").getName());
            assertEquals("f3",bmgr.getFolderByPath(testWeblog, null, "/f1/f2/f3").getName());
           
            FolderData f3 = bmgr.getFolderByPath(testWeblog, null, "/f1/f2/f3");
            String pathString = bmgr.getPath(f3);
            String[] pathArray = Utilities.stringToStringArray(pathString,"/");
            assertEquals("f1", pathArray[0]);
            assertEquals("f2", pathArray[1]);
            assertEquals("f3", pathArray[2]);
           
        } catch (RollerException e) {
            TestUtils.endSession(true);
            log.error(e);
        }
    }
   
   
    /** Ensure that duplicate folder name will throw RollerException */
    public void testUniquenessOfFolderNames() throws Exception {
       
        boolean exception = false;
        FolderData f3 = null;
        BookmarkManager bmgr = getRoller().getBookmarkManager();
        try {
            FolderData root = bmgr.getRootFolder(testWeblog);
           
            FolderData f1 = new FolderData();
            f1.setName("f1");
            f1.setParent(root);
            f1.setWebsite(testWeblog);
            bmgr.saveFolder(f1);
           
            // first child folder
            FolderData f2 = new FolderData();
            f2.setName("f2");
            f2.setParent(f1);
            f2.setWebsite(testWeblog);
            bmgr.saveFolder(f2);
           
            TestUtils.endSession(true);
           
            // child folder with same name as first
            f3 = new FolderData();
            f3.setName("f2");
            f3.setParent(f1);
            f3.setWebsite(testWeblog);
            bmgr.saveFolder(f3);
           
            TestUtils.endSession(true);
        } catch (RollerException e) {
            exception = true;
        }
       
        assertTrue(exception);
    }
   
}
TOP

Related Classes of org.apache.roller.business.BookmarkTest

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.