001: package org.drools.repository;
002:
003: import java.util.Iterator;
004: import java.util.List;
005:
006: import javax.jcr.ItemNotFoundException;
007:
008: import org.drools.repository.RulesRepository;
009: import org.drools.repository.CategoryItem;
010:
011: import junit.framework.TestCase;
012:
013: public class CategoryItemTest extends TestCase {
014:
015: public void testTagItem() {
016:
017: final CategoryItem root = getRepo().loadCategory("/");
018:
019: root.addCategory("TestTag", "nothing to see");
020:
021: CategoryItem tagItem1 = getRepo().loadCategory("TestTag");
022: assertNotNull(tagItem1);
023: assertEquals("TestTag", tagItem1.getName());
024:
025: CategoryItem tagItem2 = getRepo().loadCategory("TestTag");
026: assertNotNull(tagItem2);
027: assertEquals("TestTag", tagItem2.getName());
028: assertEquals(tagItem1, tagItem2);
029:
030: List originalCats = getRepo().loadCategory("/").getChildTags(); //listCategoryNames();
031: assertTrue(originalCats.size() > 0);
032:
033: CategoryItem rootCat = (CategoryItem) originalCats.get(0);
034: assertNotNull(rootCat.getName());
035: assertNotNull(rootCat.getFullPath());
036:
037: root.addCategory("FootestTagItem", "nothing");
038:
039: List cats = root.getChildTags();
040: assertEquals(originalCats.size() + 1, cats.size());
041:
042: boolean found = false;
043: for (Iterator iter = cats.iterator(); iter.hasNext();) {
044: CategoryItem element = (CategoryItem) iter.next();
045: if (element.getName().equals("FootestTagItem")) {
046: found = true;
047: break;
048: }
049: }
050:
051: assertTrue(found);
052:
053: }
054:
055: public void testCreateCateories() throws Exception {
056: RulesRepository repo = getRepo();
057:
058: //load the root
059: CategoryItem root = repo.loadCategory("/");
060:
061: CategoryItem item = root.addCategory("testCreateCategories",
062: "this is a top level one");
063: assertEquals("testCreateCategories", item.getName());
064: assertEquals("testCreateCategories", item.getFullPath());
065:
066: item = repo.loadCategory("testCreateCategories");
067: assertEquals("testCreateCategories", item.getName());
068:
069: item.remove();
070: repo.save();
071:
072: try {
073: repo.loadCategory("testCreateCategories");
074: fail("this should not exist");
075: } catch (RulesRepositoryException e) {
076: assertNotNull(e.getCause());
077: }
078: }
079:
080: public void testGetChildTags() {
081: CategoryItem tagItem1 = getRepo().loadCategory("TestTag");
082: assertNotNull(tagItem1);
083: assertEquals("TestTag", tagItem1.getName());
084:
085: List childTags = tagItem1.getChildTags();
086: assertNotNull(childTags);
087: assertEquals(0, childTags.size());
088:
089: tagItem1.addCategory("TestChildTag1", "description");
090:
091: childTags = tagItem1.getChildTags();
092: assertNotNull(childTags);
093: assertEquals(1, childTags.size());
094: assertEquals("TestChildTag1", ((CategoryItem) childTags.get(0))
095: .getName());
096:
097: tagItem1.addCategory("AnotherChild", "ignore me");
098:
099: childTags = tagItem1.getChildTags();
100: assertNotNull(childTags);
101: assertEquals(2, childTags.size());
102: }
103:
104: public void testGetChildTag() {
105: CategoryItem root = getRepo().loadCategory("/");
106: CategoryItem tagItem1 = root.addCategory("testGetChildTag",
107: "yeah");
108: assertNotNull(tagItem1);
109: assertEquals("testGetChildTag", tagItem1.getName());
110:
111: //test that child is added if not already in existence
112: List childTags = tagItem1.getChildTags();
113: assertNotNull(childTags);
114: assertEquals(0, childTags.size());
115:
116: CategoryItem childTagItem1 = tagItem1.addCategory(
117: "TestChildTag1", "woo");
118: assertNotNull(childTagItem1);
119: assertEquals("TestChildTag1", childTagItem1.getName());
120:
121: //test that if already there, it is returned
122: CategoryItem childTagItem2 = getRepo().loadCategory(
123: "testGetChildTag/TestChildTag1");
124: assertNotNull(childTagItem2);
125: assertEquals("TestChildTag1", childTagItem2.getName());
126: assertEquals(childTagItem1, childTagItem2);
127: }
128:
129: public void testGetFullPath() {
130:
131: CategoryItem root = getRepo().loadCategory("/");
132:
133: CategoryItem tagItem1 = root.addCategory("testGetFullPath",
134: "foo");
135: assertNotNull(tagItem1);
136: assertEquals("testGetFullPath", tagItem1.getFullPath());
137:
138: CategoryItem childTagItem1 = tagItem1.addCategory(
139: "TestChildTag1", "foo");
140: assertNotNull(childTagItem1);
141: assertEquals("testGetFullPath/TestChildTag1", childTagItem1
142: .getFullPath());
143:
144: CategoryItem childTagItem2 = childTagItem1.addCategory(
145: "TestChildTag2", "wee");
146: assertNotNull(childTagItem2);
147: assertEquals("testGetFullPath/TestChildTag1/TestChildTag2",
148: childTagItem2.getFullPath());
149:
150: }
151:
152: public void testRemoveCategoryUneeded() {
153: RulesRepository repo = getRepo();
154: repo.loadCategory("/").addCategory("testRemoveCat", "a");
155: AssetItem as = repo.loadDefaultPackage().addAsset(
156: "testRemoveCategory", "a", "testRemoveCat", "drl");
157: as.checkin("a");
158: as.updateCategoryList(new String[] {});
159:
160: as.checkin("a");
161:
162: as = repo.loadDefaultPackage().loadAsset("testRemoveCategory");
163: assertEquals(0, as.getCategories().size());
164:
165: repo.loadCategory("testRemoveCat").remove();
166: repo.save();
167:
168: }
169:
170: private RulesRepository getRepo() {
171: return RepositorySessionUtil.getRepository();
172: }
173: }
|