Package org.infoglue.cms.controllers

Source Code of org.infoglue.cms.controllers.CategoryControllerTest

/* ===============================================================================
*
* Part of the InfoGlue Content Management Platform (www.infoglue.org)
*
* ===============================================================================
*
*  Copyright (C)
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2, as published by the
* Free Software Foundation. See the file LICENSE.html for more information.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
* Place, Suite 330 / Boston, MA 02111-1307 / USA.
*
* ===============================================================================
*
* $Id: CategoryControllerTest.java,v 1.3 2008/06/04 07:19:51 mattias Exp $
*/
package org.infoglue.cms.controllers;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.infoglue.cms.controllers.kernel.impl.simple.CategoryController;
import org.infoglue.cms.controllers.kernel.impl.simple.ContentCategoryController;
import org.infoglue.cms.controllers.kernel.impl.simple.InfoGluePrincipalControllerProxy;
import org.infoglue.cms.entities.content.ContentCategoryVO;
import org.infoglue.cms.entities.management.CategoryVO;
import org.infoglue.cms.util.CmsPropertyHandler;
import org.infoglue.cms.util.InfoGlueTestCase;

/**
* @author Frank Febbraro (frank@phase2technology.com)
*/
public class CategoryControllerTest extends InfoGlueTestCase
{
  private CategoryVO testCategory;
  private ArrayList extraCategories = new ArrayList();
  private CategoryController testController = CategoryController.getController();

  private ContentCategoryController contentCategoryStore = ContentCategoryController.getController();
 
  protected void setUp() throws Exception
  {
    super.setUp();
    testCategory = new CategoryVO();
    testCategory.setName(getName());
    testCategory.setDescription(getName() + " description");

    testCategory = testController.save(testCategory);
  }

  protected void tearDown() throws Exception
  {
    testController.delete(testCategory.getId());
    assertRemoved();

    for (Iterator i = extraCategories.iterator(); i.hasNext();)
      testController.delete(((CategoryVO)i.next()).getId());

    assertTrue("ContentCateogries were not removed as part of Category delete",
           contentCategoryStore.findByCategory(testCategory.getId()).isEmpty());
  }

  public void testFindById() throws Exception
  {
    CategoryVO found = testController.findById(testCategory.getId());
    assertEquals("Category data found does not match the created data", testCategory, found);
  }

  public void testUpdate() throws Exception
  {
    CategoryVO updater = testController.findById(testCategory.getId());
    updater.setName("Updated Name");
    testController.save(updater);

    CategoryVO found = testController.findById(updater.getId());
    assertEquals("Category data found does not match the updated data", updater, found);
  }

  public void testFindByParent() throws Exception
  {
    CategoryVO one = new CategoryVO();
    one.setName("FindByParentExtraOne");
    one.setDescription("Extra one description");
    one.setParentId(testCategory.getId());
    one = testController.save(one);
    testCategory.getChildren().add(one);

    CategoryVO two = new CategoryVO();
    two.setName("FindByParentExtraTwo");
    two.setDescription("Extra two description");
    two.setParentId(testCategory.getId());
    two = testController.save(two);
    testCategory.getChildren().add(two);

    List categories = testController.findByParent(testCategory.getId());
    assertTrue("Extra Category One was not found", categories.contains(one));
    assertTrue("Extra Category Two was not found", categories.contains(two));
  }


  public void testFindActiveByParent() throws Exception
  {
    CategoryVO one = new CategoryVO();
    one.setName("FindByParentExtraOne");
    one.setDescription("Extra one description");
    one.setParentId(testCategory.getId());
    one = testController.save(one);
    testCategory.getChildren().add(one);

    CategoryVO two = new CategoryVO();
    two.setName("FindByParentExtraTwo");
    two.setDescription("Extra two description");
    two.setParentId(testCategory.getId());
    two.setActive(false);
    two = testController.save(two);
    testCategory.getChildren().add(two);

    List categories = testController.findActiveByParent(testCategory.getId());
    assertTrue("Extra Category One was not found", categories.contains(one));
    assertFalse("Extra Inactive Category Two was found", categories.contains(two));
  }


  public void testFindRootCategories() throws Exception
  {
    CategoryVO nonRoot = new CategoryVO();
    nonRoot.setName("NonRoot");
    nonRoot.setDescription("NonRoot description");
    nonRoot.setParentId(testCategory.getId());
    nonRoot = testController.save(nonRoot);

    CategoryVO otherRoot = new CategoryVO();
    otherRoot.setName("FindByParentExtraTwo");
    otherRoot.setDescription("Extra two description");
    otherRoot = testController.save(otherRoot);
    extraCategories.add(otherRoot);

    List categories = testController.findRootCategories();
    assertTrue("Test Category was not found", categories.contains(testCategory));
    assertTrue("Other Root Category was not found", categories.contains(otherRoot));
    assertFalse("NonRoot Category was found", categories.contains(nonRoot));

    // For cleanup tests
    testCategory.getChildren().add(nonRoot);
  }

  public void testFindWithChildren() throws Exception
  {
    CategoryVO one = new CategoryVO();
    one.setName("FindWithChildrenExtraOne");
    one.setDescription("Extra one description");
    one.setParentId(testCategory.getId());
    one = testController.save(one);
    testCategory.getChildren().add(one);

    CategoryVO two = new CategoryVO();
    two.setName("FindWithChildrenExtraTwo");
    two.setDescription("Extra two description");
    two.setParentId(testCategory.getId());
    two = testController.save(two);
    testCategory.getChildren().add(two);

    CategoryVO found = testController.findWithChildren(testCategory.getId());
    assertEquals("Category data found does not match the created data", testCategory, found);
    assertTrue("Extra Category One was not a child", found.getChildren().contains(one));
    assertTrue("Extra Category Two was not a child", found.getChildren().contains(two));
  }

  public void testDeleteContentCategories() throws Exception
  {
    ContentCategoryVO cc = new ContentCategoryVO();
    cc.setContentVersionId(new Integer(-999));
    cc.setAttributeName(getName());
    cc.setCategory(testCategory);
    cc = contentCategoryStore.save(cc, InfoGluePrincipalControllerProxy.getController().getTestPrincipal());

    List found = contentCategoryStore.findByCategory(testCategory.getId());
    assertEquals("Wrong number of ContentCategories found", 1, found.size());
    assertTrue("ContentCategory not found by Category", found.contains(cc));
  }

  public void testMoveCategory() throws Exception
  {
    CategoryVO one = new CategoryVO();
    one.setName("MoveCategoryExtraOne");
    one.setDescription("Extra one description");
    one.setParentId(testCategory.getId());
    one = testController.save(one);

    CategoryVO otherRoot = new CategoryVO();
    otherRoot.setName("MoveCategoryParentExtraTwo");
    otherRoot.setDescription("Extra two description");
    otherRoot = testController.save(otherRoot);
    extraCategories.add(otherRoot);

    // test original setup
    List categories = testController.findByParent(testCategory.getId());
    assertTrue("Before Move - Child Category was not found by original parent", categories.contains(one));
    categories = testController.findByParent(otherRoot.getId());
    assertFalse("Before Move - Child Category was found by new parent", categories.contains(one));

    one = testController.moveCategory(one.getId(), otherRoot.getId());

    // test new setup
    categories = testController.findByParent(testCategory.getId());
    assertFalse("After Move - Child Category was found by old parent", categories.contains(one));
    categories = testController.findByParent(otherRoot.getId());
    assertTrue("After Move - Child Category was not found by new parent", categories.contains(one));
  }

  // Make sure it was removed from the DB
  private void assertRemoved()
  {
    try
    {
      testController.findById(testCategory.getId());
      fail("The Category was not deleted");
    }
    catch(Exception e)
    { /* expected */ }

    for (Iterator iter = testCategory.getChildren().iterator(); iter.hasNext();)
    {
      try
      {
        testController.findById(((CategoryVO) iter.next()).getId());
        fail("A Category child was not deleted");
      }
      catch(Exception e)
      { /* expected */ }
    }
  }
}
TOP

Related Classes of org.infoglue.cms.controllers.CategoryControllerTest

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.