KickJava   Java API By Example, From Geeks To Geeks.

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


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 package org.apache.roller.business;
19
20 import java.sql.Timestamp JavaDoc;
21 import java.util.Calendar JavaDoc;
22 import java.util.Date JavaDoc;
23 import java.util.List JavaDoc;
24 import junit.framework.Test;
25 import junit.framework.TestCase;
26 import junit.framework.TestSuite;
27 import org.apache.commons.logging.Log;
28 import org.apache.commons.logging.LogFactory;
29 import org.apache.roller.RollerException;
30 import org.apache.roller.TestUtils;
31 import org.apache.roller.model.PropertiesManager;
32 import org.apache.roller.model.RefererManager;
33 import org.apache.roller.model.RollerFactory;
34 import org.apache.roller.model.UserManager;
35 import org.apache.roller.pojos.RefererData;
36 import org.apache.roller.pojos.RollerPropertyData;
37 import org.apache.roller.pojos.UserData;
38 import org.apache.roller.pojos.WebsiteData;
39 import org.apache.roller.pojos.WebsiteDisplayData;
40 import org.apache.roller.util.DateUtil;
41
42
43 /**
44  * Test Roller Referer Management.
45  */

46 public class RefererTest extends TestCase {
47     
48     public static Log log = LogFactory.getLog(RefererTest.class);
49     
50     UserData testUser = null;
51     WebsiteData testWeblog = null;
52     WebsiteData testWeblog2 = null;
53     
54     int count = 20;
55     String JavaDoc testDay;
56     String JavaDoc origSpamWords;
57     
58     
59     public RefererTest(String JavaDoc name) {
60         super(name);
61     }
62     
63     
64     public static Test suite() {
65         return new TestSuite(RefererTest.class);
66     }
67     
68     
69     /**
70      * All tests in this suite require a user and a weblog.
71      */

72     public void setUp() throws Exception JavaDoc {
73         
74         try {
75             testUser = TestUtils.setupUser("referTestUser");
76             testWeblog = TestUtils.setupWeblog("referTestWeblog1", testUser);
77             testWeblog2 = TestUtils.setupWeblog("referTestWeblog2", testUser);
78             
79             // add "spamtest" to refererSpamWords
80
PropertiesManager pmgr = RollerFactory.getRoller().getPropertiesManager();
81             RollerPropertyData spamprop = pmgr.getProperty("spam.blacklist");
82             this.origSpamWords = spamprop.getValue();
83             spamprop.setValue(spamprop.getValue() + ", spamtest");
84             pmgr.saveProperty(spamprop);
85             
86             // add a number of referers to play with
87
RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
88             Calendar JavaDoc lCalendar = Calendar.getInstance();
89             lCalendar.setTime(new Date JavaDoc());
90             for (int i = 0; i < count; i++) {
91                 lCalendar.add(Calendar.DATE, -1);
92                 Timestamp JavaDoc day = new Timestamp JavaDoc(lCalendar.getTime().getTime());
93                 testDay = DateUtil.format8chars(day);
94                 
95                 rmgr.processReferrer("http://test"+i, "http://test"+i,
96                     testWeblog.getHandle(), null, testDay);
97                 if (i % 2 == 0) { // half the referrers from weblog 2
98
rmgr.processReferrer("http://test"+i, "http://test"+i,
99                         testWeblog2.getHandle(), null, testDay);
100                 }
101             }
102             
103             TestUtils.endSession(true);
104             
105         } catch (Exception JavaDoc ex){
106             log.error(ex);
107             throw new Exception JavaDoc("Test setup failed", ex);
108         }
109     }
110     
111     public void tearDown() throws Exception JavaDoc {
112         
113         try {
114             // reset refererSpamWords to original value
115
PropertiesManager pmgr = RollerFactory.getRoller().getPropertiesManager();
116             RollerPropertyData spamprop = pmgr.getProperty("spam.blacklist");
117             spamprop.setValue(this.origSpamWords);
118             pmgr.saveProperty(spamprop);
119             
120             TestUtils.teardownWeblog(testWeblog.getId());
121             TestUtils.teardownWeblog(testWeblog2.getId());
122             TestUtils.teardownUser(testUser.getId());
123             
124             TestUtils.endSession(true);
125             
126         } catch (Exception JavaDoc ex) {
127             log.error(ex);
128             throw new Exception JavaDoc("Test teardown failed", ex);
129         }
130     }
131     
132     
133     /**
134      * Test basic persistence operations ... Create, Update, Delete
135      */

136     public void testRefererCRUD() throws Exception JavaDoc {
137         
138         RefererManager mgr = RollerFactory.getRoller().getRefererManager();
139         RefererData referer = null;
140         
141         RefererData testReferer = new RefererData();
142         testReferer.setWebsite(testWeblog);
143         testReferer.setDateString("20060420");
144         testReferer.setRefererUrl("blah");
145         testReferer.setRefererPermalink("blah");
146         testReferer.setRequestUrl("foo");
147         testReferer.setTitle("lksdjf");
148         testReferer.setTotalHits(new Integer JavaDoc(3));
149         testReferer.setDayHits(new Integer JavaDoc(2));
150         testReferer.setVisible(Boolean.TRUE);
151         testReferer.setDuplicate(Boolean.FALSE);
152         testReferer.setExcerpt("");
153         
154         // save referer
155
mgr.saveReferer(testReferer);
156         String JavaDoc id = testReferer.getId();
157         TestUtils.endSession(true);
158         
159         // check that create was successful
160
referer = null;
161         referer = mgr.getReferer(id);
162         assertNotNull(referer);
163         assertEquals(testReferer, referer);
164         
165         // update referer
166
referer.setTitle("testtesttest");
167         mgr.saveReferer(referer);
168         TestUtils.endSession(true);
169         
170         // check that update was successful
171
referer = null;
172         referer = mgr.getReferer(id);
173         assertNotNull(referer);
174         assertEquals("testtesttest", referer.getTitle());
175         
176         // delete referer
177
mgr.removeReferer(referer);
178         TestUtils.endSession(true);
179         
180         // check that delete was successful
181
referer = null;
182         referer = mgr.getReferer(id);
183         assertNull(referer);
184     }
185     
186     
187     public void testGetReferersToDate() throws Exception JavaDoc {
188         
189         RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
190         
191         List JavaDoc referers = rmgr.getReferersToDate(testWeblog, testDay);
192         assertEquals("Should be one Referer.", referers.size(), 1);
193     }
194     
195     
196     public void testRefererProcessing() throws RollerException {
197         
198         RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
199         
200         List JavaDoc refs = rmgr.getReferers(testWeblog);
201         assertEquals("number of referers should equal count", count, refs.size());
202         
203         int hits = rmgr.getDayHits(testWeblog);
204         assertEquals("There should be one fewer hits than referers", count, hits);
205     }
206     
207     
208     public void testApplyRefererFilters() throws Exception JavaDoc {
209         
210         log.info("Test apply referers (global)");
211         
212         RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
213         
214         List JavaDoc refs = rmgr.getReferers(testWeblog);
215         assertEquals(count, refs.size());
216         
217         PropertiesManager pmgr = RollerFactory.getRoller().getPropertiesManager();
218         RollerPropertyData spamprop = pmgr.getProperty("spam.blacklist");
219         String JavaDoc origWords = spamprop.getValue();
220         spamprop.setValue(spamprop.getValue() + ", test");
221         pmgr.saveProperty(spamprop);
222         TestUtils.endSession(true);
223         
224         rmgr.applyRefererFilters();
225         TestUtils.endSession(true);
226         
227         refs = rmgr.getReferers(testWeblog);
228         assertEquals(0, refs.size());
229         
230         spamprop = pmgr.getProperty("spam.blacklist");
231         spamprop.setValue(origWords);
232         pmgr.saveProperty(spamprop);
233         TestUtils.endSession(true);
234     }
235     
236     
237     public void testApplyRefererFiltersWebsite() throws Exception JavaDoc {
238         
239         log.info("Test apply referers (weblog)");
240         
241         RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
242         
243         List JavaDoc refs = rmgr.getReferers(testWeblog);
244         assertEquals(count, refs.size());
245         String JavaDoc origWords = null;
246         
247         UserManager umgr = RollerFactory.getRoller().getUserManager();
248         testWeblog = umgr.getWebsite(testWeblog.getId());
249         origWords = testWeblog.getBlacklist();
250         testWeblog.setBlacklist("test");
251         umgr.saveWebsite(testWeblog);
252         TestUtils.endSession(true);
253         
254         rmgr.applyRefererFilters(testWeblog);
255         TestUtils.endSession(true);
256         
257         refs = rmgr.getReferers(testWeblog);
258         assertEquals(0, refs.size());
259     }
260     
261     public void testGetDaysPopularWebsites() throws Exception JavaDoc {
262         log.info("Test apply referers (weblog)");
263         RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
264         
265         List JavaDoc sites = rmgr.getDaysPopularWebsites(0, 1);
266         assertEquals(1, sites.size());
267         
268         sites = rmgr.getDaysPopularWebsites(1, 1);
269         assertEquals(1, sites.size());
270         
271         sites = rmgr.getDaysPopularWebsites(0, 20);
272         assertEquals(2, sites.size());
273         
274         WebsiteDisplayData site1 = (WebsiteDisplayData)sites.get(0);
275         assertEquals(testWeblog.getHandle(), site1.getWebsiteHandle());
276         assertEquals(count, site1.getHits().intValue());
277         
278         WebsiteDisplayData site2 = (WebsiteDisplayData)sites.get(1);
279         assertEquals(testWeblog2.getHandle(), site2.getWebsiteHandle());
280         assertEquals(count/2, site2.getHits().intValue());
281     }
282 }
283
284
Popular Tags