blob: f7b2f7f939d336ba40d47163d8ada52ba7440637 [file] [log] [blame]
/*
* 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.weblogger.business;
import java.util.List;
import junit.framework.TestCase;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.TestUtils;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.weblogger.pojos.WeblogCategory;
import org.apache.roller.weblogger.pojos.WeblogEntry;
import org.apache.roller.weblogger.pojos.WeblogEntry.PubStatus;
import org.apache.roller.weblogger.pojos.Weblog;
/**
* Test Weblog Category related business operations.
*/
public class WeblogCategoryFunctionalityTest extends TestCase {
public static Log log = LogFactory.getLog(WeblogCategoryFunctionalityTest.class);
User testUser = null;
Weblog testWeblog = null;
WeblogCategory cat1 = null;
WeblogCategory cat2 = null;
WeblogCategory cat3 = null;
WeblogCategory testCat = null;
/**
* All tests in this suite require a user and a weblog.
*/
public void setUp() {
log.info("BEGIN");
try {
// setup weblogger
TestUtils.setupWeblogger();
testUser = TestUtils.setupUser("categoryTestUser");
testWeblog = TestUtils.setupWeblog("categoryTestWeblog", testUser);
// setup several categories for testing
cat1 = TestUtils.setupWeblogCategory(testWeblog, "catTest-cat1");
cat2 = TestUtils.setupWeblogCategory(testWeblog, "catTest-cat2");
cat3 = TestUtils.setupWeblogCategory(testWeblog, "catTest-cat3");
// a simple test cat at the root level
testCat = TestUtils.setupWeblogCategory(testWeblog, "catTest-testCat");
TestUtils.endSession(true);
} catch (Throwable t) {
log.error("ERROR in setup", t);
}
log.info("END");
}
public void tearDown() {
log.info("BEGIN");
try {
TestUtils.teardownWeblog(testWeblog.getId());
TestUtils.teardownUser(testUser.getUserName());
TestUtils.endSession(true);
} catch (Throwable t) {
log.error("ERROR in teardown", t);
}
log.info("END");
}
/**
* Test the hasCategory() method on WeblogCategory.
*/
public void testHasCategory() throws Exception {
log.info("BEGIN");
// check that root has category
assertTrue(testWeblog.hasCategory(testCat.getName()));
log.info("END");
}
/**
* Lookup category by id.
*/
public void testLookupCategoryById() throws Exception {
log.info("BEGIN");
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
WeblogCategory cat = mgr.getWeblogCategory(testCat.getId());
assertNotNull(cat);
assertEquals(cat, testCat);
log.info("END");
}
/**
* Lookup category by name.
*/
public void testLookupCategoryByName() throws Exception {
log.info("BEGIN");
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
testWeblog = TestUtils.getManagedWebsite(testWeblog);
WeblogCategory cat = mgr.getWeblogCategoryByName(testWeblog, "catTest-cat1");
assertNotNull(cat);
assertEquals(cat, cat1);
cat = mgr.getWeblogCategoryByName(testWeblog, "catTest-cat3");
assertNotNull(cat);
assertEquals(cat, cat3);
// test lazy lookup, specifying just a name without slashes
cat = mgr.getWeblogCategoryByName(testWeblog, "catTest-cat1");
assertNotNull(cat);
assertEquals(cat, cat1);
log.info("END");
}
/**
* Lookup all categories for a weblog.
*/
public void testLookupAllCategoriesByWeblog() throws Exception {
log.info("BEGIN");
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
testWeblog = TestUtils.getManagedWebsite(testWeblog);
List cats = mgr.getWeblogCategories(testWeblog);
assertNotNull(cats);
assertEquals(5, cats.size());
log.info("END");
}
/**
* Test moving entries in category to new category.
*/
public void testMoveWeblogCategoryContents() throws Exception {
log.info("BEGIN");
WeblogEntryManager mgr = WebloggerFactory.getWeblogger().getWeblogEntryManager();
WeblogEntry e1 = null;
WeblogEntry e2 = null;
try {
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
// add some categories and entries to test with
WeblogCategory c1 = new WeblogCategory(testWeblog, "c1", null, null);
mgr.saveWeblogCategory(c1);
WeblogCategory dest = new WeblogCategory(testWeblog, "dest", null, null);
mgr.saveWeblogCategory(dest);
TestUtils.endSession(true);
c1 = mgr.getWeblogCategory(c1.getId());
dest = mgr.getWeblogCategory(dest.getId());
testWeblog = TestUtils.getManagedWebsite(testWeblog);
testUser = TestUtils.getManagedUser(testUser);
e1 = TestUtils.setupWeblogEntry("e1", c1, testWeblog, testUser);
e2 = TestUtils.setupWeblogEntry("e2", c1, PubStatus.DRAFT, testWeblog, testUser);
TestUtils.endSession(true);
// need to query for cats again since session was closed
c1 = mgr.getWeblogCategory(c1.getId());
dest = mgr.getWeblogCategory(dest.getId());
// verify number of entries in each category
assertEquals(0, dest.retrieveWeblogEntries(true).size());
assertEquals(0, dest.retrieveWeblogEntries(false).size());
assertEquals(2, c1.retrieveWeblogEntries(false).size());
assertEquals(1, c1.retrieveWeblogEntries(true).size());
// move contents of source category c1 to destination category dest
mgr.moveWeblogCategoryContents(c1, dest);
mgr.saveWeblogCategory(c1);
TestUtils.endSession(true);
// after move, verify number of entries in each category
dest = mgr.getWeblogCategory(dest.getId());
c1 = mgr.getWeblogCategory(c1.getId());
// Hierarchy is flattened under dest
assertEquals(2, dest.retrieveWeblogEntries(false).size());
assertEquals(1, dest.retrieveWeblogEntries(true).size());
// c1 category should be empty now
assertEquals(0, c1.retrieveWeblogEntries(false).size());
} finally {
mgr.removeWeblogEntry(TestUtils.getManagedWeblogEntry(e1));
mgr.removeWeblogEntry(TestUtils.getManagedWeblogEntry(e2));
}
log.info("END");
}
}