KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > roller > business > WeblogCategoryTest


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

18 /*
19  * WeblogCategoryTest.java
20  *
21  * Created on April 13, 2006, 10:07 PM
22  */

23
24 package org.apache.roller.business;
25
26 import java.util.List JavaDoc;
27 import junit.framework.Test;
28 import junit.framework.TestCase;
29 import junit.framework.TestSuite;
30 import org.apache.commons.logging.Log;
31 import org.apache.commons.logging.LogFactory;
32 import org.apache.roller.TestUtils;
33 import org.apache.roller.model.RollerFactory;
34 import org.apache.roller.model.WeblogManager;
35 import org.apache.roller.pojos.UserData;
36 import org.apache.roller.pojos.WeblogCategoryData;
37 import org.apache.roller.pojos.WeblogEntryData;
38 import org.apache.roller.pojos.WebsiteData;
39 import org.apache.roller.util.Utilities;
40
41
42 /**
43  * Test Weblog Category related business operations.
44  */

45 public class WeblogCategoryTest extends TestCase {
46     
47     public static Log log = LogFactory.getLog(WeblogCategoryTest.class);
48     
49     UserData testUser = null;
50     WebsiteData testWeblog = null;
51     
52     
53     public WeblogCategoryTest() {
54     }
55     
56     
57     public static Test suite() {
58         return new TestSuite(WeblogCategoryTest.class);
59     }
60     
61     
62     /**
63      * All tests in this suite require a user and a weblog.
64      */

65     public void setUp() throws Exception JavaDoc {
66         
67         log.info("Setup "+this.getClass().getName());
68         
69         try {
70             testUser = TestUtils.setupUser("entryTestUser");
71             testWeblog = TestUtils.setupWeblog("entryTestWeblog", testUser);
72             TestUtils.endSession(true);
73         } catch (Exception JavaDoc ex) {
74             log.error(ex);
75             throw new Exception JavaDoc("Test setup failed", ex);
76         }
77     }
78     
79     public void tearDown() throws Exception JavaDoc {
80         
81         log.info("Teardown "+this.getClass().getName());
82         
83         try {
84             TestUtils.teardownWeblog(testWeblog.getId());
85             TestUtils.teardownUser(testUser.getId());
86             TestUtils.endSession(true);
87         } catch (Exception JavaDoc ex) {
88             log.error(ex);
89             throw new Exception JavaDoc("Test teardown failed", ex);
90         }
91     }
92     
93     
94     /**
95      * Test basic persistence operations ... Create, Update, Delete.
96      */

97     public void testWeblogCategoryCRUD() throws Exception JavaDoc {
98         
99         WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
100         WeblogCategoryData cat = null;
101         List JavaDoc cats = null;
102         
103         // we need to know how many categories we start the test with
104
int numCats = mgr.getRootWeblogCategory(testWeblog).getWeblogCategories().size();
105         
106         // add a new category
107
WeblogCategoryData newCat = new WeblogCategoryData();
108         newCat.setName("catTestCategory");
109         newCat.setParent(testWeblog.getDefaultCategory());
110         newCat.setWebsite(testWeblog);
111         mgr.saveWeblogCategory(newCat);
112         String JavaDoc id = newCat.getId();
113         TestUtils.endSession(true);
114         
115         // make sure category was added
116
cat = null;
117         cat = mgr.getWeblogCategory(id);
118         assertNotNull(cat);
119         assertEquals(newCat, cat);
120         
121         // make sure category count increased
122
testWeblog = RollerFactory.getRoller().getUserManager().getWebsite(testWeblog.getId());
123         assertEquals(numCats+1, mgr.getRootWeblogCategory(testWeblog).getWeblogCategories().size());
124         
125         // update category
126
cat.setName("testtest");
127         mgr.saveWeblogCategory(cat);
128         TestUtils.endSession(true);
129         
130         // verify category was updated
131
cat = null;
132         cat = mgr.getWeblogCategory(id);
133         assertNotNull(cat);
134         assertEquals("testtest", cat.getName());
135         
136         // remove category
137
mgr.removeWeblogCategory(cat);
138         TestUtils.endSession(true);
139         
140         // make sure category was removed
141
cat = null;
142         mgr.getWeblogCategory(id);
143         assertNull(cat);
144         
145         // make sure category count decreased
146
testWeblog = RollerFactory.getRoller().getUserManager().getWebsite(testWeblog.getId());
147         assertEquals(numCats, mgr.getRootWeblogCategory(testWeblog).getWeblogCategories().size());
148     }
149     
150     
151     /**
152      * Test lookup mechanisms ...
153      */

154     public void testWeblogCategoryLookups() throws Exception JavaDoc {
155         
156     }
157     
158     
159     public void testWeblogCategoryPaths() throws Exception JavaDoc {
160         
161         WeblogCategoryData root = null;
162         WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
163         
164         root = mgr.getRootWeblogCategory(testWeblog);
165         
166         WeblogCategoryData f1 = new WeblogCategoryData();
167         f1.setName("f1");
168         f1.setParent(root);
169         f1.setWebsite(testWeblog);
170         mgr.saveWeblogCategory(f1);
171         
172         WeblogCategoryData f2 = new WeblogCategoryData();
173         f2.setName("f2");
174         f2.setParent(f1);
175         f2.setWebsite(testWeblog);
176         mgr.saveWeblogCategory(f2);
177         
178         WeblogCategoryData f3 = new WeblogCategoryData();
179         f3.setName("f3");
180         f3.setParent(f2);
181         f3.setWebsite(testWeblog);
182         mgr.saveWeblogCategory(f3);
183         
184         TestUtils.endSession(true);
185         
186         // check count of descendents and ancestors
187
f1 = mgr.getWeblogCategory(f1.getId());
188         assertEquals(2, f1.getAllDescendentAssocs().size());
189         assertEquals(1, f1.getAncestorAssocs().size());
190         
191         f2 = mgr.getWeblogCategory(f2.getId());
192         assertEquals(1, f2.getAllDescendentAssocs().size());
193         assertEquals(2, f2.getAncestorAssocs().size());
194         
195         f3 = mgr.getWeblogCategory(f3.getId());
196         assertEquals(0, f3.getAllDescendentAssocs().size());
197         assertEquals(3, f3.getAncestorAssocs().size());
198         
199         // test get by path
200
assertEquals("f1",
201                 mgr.getWeblogCategoryByPath(testWeblog, null, "f1").getName());
202         
203         assertEquals("f1",
204                 mgr.getWeblogCategoryByPath(testWeblog, null, "/f1").getName());
205         
206         assertEquals("f2",
207                 mgr.getWeblogCategoryByPath(testWeblog, null, "/f1/f2").getName());
208         
209         assertEquals("f3",
210                 mgr.getWeblogCategoryByPath(testWeblog, null, "/f1/f2/f3").getName());
211         
212         // test path creation
213
f3 = mgr.getWeblogCategoryByPath(testWeblog, null, "/f1/f2/f3");
214         String JavaDoc pathString = mgr.getPath(f3);
215         String JavaDoc[] pathArray = Utilities.stringToStringArray(pathString,"/");
216         assertEquals("f1", pathArray[0]);
217         assertEquals("f2", pathArray[1]);
218         assertEquals("f3", pathArray[2]);
219     }
220     
221     
222     public void testMoveWeblogCategory() throws Exception JavaDoc {
223         
224         WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
225         
226         // add some categories and entries to test with
227
WeblogCategoryData dest = new WeblogCategoryData();
228         dest.setName("c0");
229         dest.setParent(mgr.getRootWeblogCategory(testWeblog));
230         dest.setWebsite(testWeblog);
231         mgr.saveWeblogCategory(dest);
232         
233         WeblogCategoryData c1 = new WeblogCategoryData();
234         c1.setName("c1");
235         c1.setParent(mgr.getRootWeblogCategory(testWeblog));
236         c1.setWebsite(testWeblog);
237         mgr.saveWeblogCategory(c1);
238         
239         WeblogCategoryData c2 = new WeblogCategoryData();
240         c2.setName("c2");
241         c2.setParent(c1);
242         c2.setWebsite(testWeblog);
243         mgr.saveWeblogCategory(c2);
244         
245         WeblogCategoryData c3 = new WeblogCategoryData();
246         c3.setName("c3");
247         c3.setParent(c2);
248         c3.setWebsite(testWeblog);
249         mgr.saveWeblogCategory(c3);
250         
251         TestUtils.endSession(true);
252         
253         c1 = mgr.getWeblogCategory(c1.getId());
254         c2 = mgr.getWeblogCategory(c2.getId());
255         c3 = mgr.getWeblogCategory(c3.getId());
256         dest = mgr.getWeblogCategory(dest.getId());
257         
258         WeblogEntryData e1 = TestUtils.setupWeblogEntry("e1", c1, testWeblog, testUser);
259         WeblogEntryData e2 = TestUtils.setupWeblogEntry("e2", c2, testWeblog, testUser);
260         WeblogEntryData e3 = TestUtils.setupWeblogEntry("e3", c3, testWeblog, testUser);
261         
262         TestUtils.endSession(true);
263         
264         // verify number of entries in each category
265
assertEquals(0, dest.retrieveWeblogEntries(true).size());
266         assertEquals(0, dest.retrieveWeblogEntries(false).size());
267         assertEquals(1, c1.retrieveWeblogEntries(false).size());
268         assertEquals(3, c1.retrieveWeblogEntries(true).size());
269         
270         // move contents of source category c1 to destination catetory dest
271
c1.setParent(dest);
272         mgr.saveWeblogCategory(c1);
273         TestUtils.endSession(true);
274         
275         // after move, verify number of entries in each category
276
dest = mgr.getWeblogCategory(dest.getId());
277         c1 = mgr.getWeblogCategory(c1.getId());
278         c2 = mgr.getWeblogCategory(c2.getId());
279         c3 = mgr.getWeblogCategory(c3.getId());
280         
281         assertEquals(3, dest.retrieveWeblogEntries(true).size());
282         assertEquals(0, dest.retrieveWeblogEntries(false).size());
283         
284         assertEquals(dest, c1.getParent());
285         assertEquals(c1, c2.getParent());
286         assertEquals(c2, c3.getParent());
287         
288         assertEquals(1, c1.retrieveWeblogEntries(false).size());
289         assertEquals(1, c2.retrieveWeblogEntries(false).size());
290         assertEquals(1, c3.retrieveWeblogEntries(false).size());
291         
292         List JavaDoc entries = c1.retrieveWeblogEntries(true);
293         assertEquals(3, entries.size());
294     }
295     
296     public void testMoveWeblogCategoryContents() throws Exception JavaDoc {
297         
298         WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
299         
300         // add some categories and entries to test with
301
WeblogCategoryData dest = new WeblogCategoryData();
302         dest.setName("c0");
303         dest.setParent(mgr.getRootWeblogCategory(testWeblog));
304         dest.setWebsite(testWeblog);
305         mgr.saveWeblogCategory(dest);
306         
307         WeblogCategoryData c1 = new WeblogCategoryData();
308         c1.setName("c1");
309         c1.setParent(mgr.getRootWeblogCategory(testWeblog));
310         c1.setWebsite(testWeblog);
311         mgr.saveWeblogCategory(c1);
312         
313         WeblogCategoryData c2 = new WeblogCategoryData();
314         c2.setName("c2");
315         c2.setParent(c1);
316         c2.setWebsite(testWeblog);
317         mgr.saveWeblogCategory(c2);
318         
319         WeblogCategoryData c3 = new WeblogCategoryData();
320         c3.setName("c3");
321         c3.setParent(c2);
322         c3.setWebsite(testWeblog);
323         mgr.saveWeblogCategory(c3);
324         
325         TestUtils.endSession(true);
326         
327         c1 = mgr.getWeblogCategory(c1.getId());
328         c2 = mgr.getWeblogCategory(c2.getId());
329         c3 = mgr.getWeblogCategory(c3.getId());
330         dest = mgr.getWeblogCategory(dest.getId());
331         
332         WeblogEntryData e1 = TestUtils.setupWeblogEntry("e1", c1, testWeblog, testUser);
333         WeblogEntryData e2 = TestUtils.setupWeblogEntry("e2", c2, testWeblog, testUser);
334         WeblogEntryData e3 = TestUtils.setupWeblogEntry("e3", c3, testWeblog, testUser);
335         
336         TestUtils.endSession(true);
337         
338         // verify number of entries in each category
339
assertEquals(0, dest.retrieveWeblogEntries(true).size());
340         assertEquals(0, dest.retrieveWeblogEntries(false).size());
341         assertEquals(1, c1.retrieveWeblogEntries(false).size());
342         assertEquals(3, c1.retrieveWeblogEntries(true).size());
343         
344         // move contents of source category c1 to destination category dest
345
mgr.moveWeblogCategoryContents(c1, dest);
346         mgr.saveWeblogCategory(c1);
347         TestUtils.endSession(true);
348         
349         // after move, verify number of entries in each category
350
dest = mgr.getWeblogCategory(dest.getId());
351         c1 = mgr.getWeblogCategory(c1.getId());
352         
353         // Hierarchy is flattened under dest
354
assertEquals(3, dest.retrieveWeblogEntries(true).size());
355         assertEquals(3, dest.retrieveWeblogEntries(false).size());
356         
357         // c1 category should be empty now
358
assertEquals(0, c1.retrieveWeblogEntries(false).size());
359                
360
361     }
362 }
363
Popular Tags