Package org.apache.roller.business

Source Code of org.apache.roller.business.RefererTest

/*
* 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.business;

import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.RollerException;
import org.apache.roller.TestUtils;
import org.apache.roller.business.PropertiesManager;
import org.apache.roller.business.referrers.RefererManager;
import org.apache.roller.business.RollerFactory;
import org.apache.roller.business.UserManager;
import org.apache.roller.pojos.RefererData;
import org.apache.roller.pojos.RollerPropertyData;
import org.apache.roller.pojos.UserData;
import org.apache.roller.pojos.WebsiteData;
import org.apache.roller.pojos.WebsiteDisplayData;
import org.apache.roller.util.DateUtil;


/**
* Test Roller Referer Management.
*/
public class RefererTest extends TestCase {
   
    public static Log log = LogFactory.getLog(RefererTest.class);
   
    UserData testUser = null;
    WebsiteData testWeblog = null;
    WebsiteData testWeblog2 = null;
   
    int count = 20;
    String testDay;
    String origSpamWords;
   
   
    public RefererTest(String name) {
        super(name);
    }
   
   
    public static Test suite() {
        return new TestSuite(RefererTest.class);
    }
   
   
    /**
     * All tests in this suite require a user and a weblog.
     */
    public void setUp() throws Exception {
       
        try {
            testUser = TestUtils.setupUser("referTestUser");
            testWeblog = TestUtils.setupWeblog("referTestWeblog1", testUser);
            testWeblog2 = TestUtils.setupWeblog("referTestWeblog2", testUser);
           
            // add "spamtest" to refererSpamWords
            PropertiesManager pmgr = RollerFactory.getRoller().getPropertiesManager();
            RollerPropertyData spamprop = pmgr.getProperty("spam.blacklist");
            this.origSpamWords = spamprop.getValue();
            spamprop.setValue(spamprop.getValue() + ", spamtest");
            pmgr.saveProperty(spamprop);
           
            // add a number of referers to play with
            RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
            Calendar lCalendar = Calendar.getInstance();
            lCalendar.setTime(new Date());
            for (int i = 0; i < count; i++) {
                lCalendar.add(Calendar.DATE, -1);
                Timestamp day = new Timestamp(lCalendar.getTime().getTime());
                testDay = DateUtil.format8chars(day);
               
                rmgr.processReferrer("http://test"+i, "http://test"+i,
                    testWeblog.getHandle(), null, testDay);
                if (i % 2 == 0) { // half the referrers from weblog 2
                    rmgr.processReferrer("http://test"+i, "http://test"+i,
                        testWeblog2.getHandle(), null, testDay);
                }
            }
           
            TestUtils.endSession(true);
           
        } catch (Exception ex){
            log.error(ex);
            throw new Exception("Test setup failed", ex);
        }
    }
   
    public void tearDown() throws Exception {
       
        try {
            // reset refererSpamWords to original value
            PropertiesManager pmgr = RollerFactory.getRoller().getPropertiesManager();
            RollerPropertyData spamprop = pmgr.getProperty("spam.blacklist");
            spamprop.setValue(this.origSpamWords);
            pmgr.saveProperty(spamprop);
           
            TestUtils.teardownWeblog(testWeblog.getId());
            TestUtils.teardownWeblog(testWeblog2.getId());
            TestUtils.teardownUser(testUser.getId());
           
            TestUtils.endSession(true);
           
        } catch (Exception ex) {
            log.error(ex);
            throw new Exception("Test teardown failed", ex);
        }
    }
   
   
    /**
     * Test basic persistence operations ... Create, Update, Delete
     */
    public void testRefererCRUD() throws Exception {
       
        RefererManager mgr = RollerFactory.getRoller().getRefererManager();
        RefererData referer = null;
       
        RefererData testReferer = new RefererData();
        testReferer.setWebsite(testWeblog);
        testReferer.setDateString("20060420");
        testReferer.setRefererUrl("blah");
        testReferer.setRefererPermalink("blah");
        testReferer.setRequestUrl("foo");
        testReferer.setTitle("lksdjf");
        testReferer.setTotalHits(new Integer(3));
        testReferer.setDayHits(new Integer(2));
        testReferer.setVisible(Boolean.TRUE);
        testReferer.setDuplicate(Boolean.FALSE);
        testReferer.setExcerpt("");
       
        // save referer
        mgr.saveReferer(testReferer);
        String id = testReferer.getId();
        TestUtils.endSession(true);
       
        // check that create was successful
        referer = null;
        referer = mgr.getReferer(id);
        assertNotNull(referer);
        assertEquals(testReferer, referer);
       
        // update referer
        referer.setTitle("testtesttest");
        mgr.saveReferer(referer);
        TestUtils.endSession(true);
       
        // check that update was successful
        referer = null;
        referer = mgr.getReferer(id);
        assertNotNull(referer);
        assertEquals("testtesttest", referer.getTitle());
       
        // delete referer
        mgr.removeReferer(referer);
        TestUtils.endSession(true);
       
        // check that delete was successful
        referer = null;
        referer = mgr.getReferer(id);
        assertNull(referer);
    }
   
   
    public void testGetReferersToDate() throws Exception {
       
        RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
       
        List referers = rmgr.getReferersToDate(testWeblog, testDay);
        assertEquals("Should be one Referer.", referers.size(), 1);
    }
   
   
    public void testRefererProcessing() throws RollerException {
       
        RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
       
        List refs = rmgr.getReferers(testWeblog);
        assertEquals("number of referers should equal count", count, refs.size());
       
        int hits = rmgr.getDayHits(testWeblog);
        assertEquals("There should be one fewer hits than referers", count, hits);
    }
   
   
    public void testApplyRefererFilters() throws Exception {
       
        log.info("Test apply referers (global)");
       
        RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
       
        List refs = rmgr.getReferers(testWeblog);
        assertEquals(count, refs.size());
       
        PropertiesManager pmgr = RollerFactory.getRoller().getPropertiesManager();
        RollerPropertyData spamprop = pmgr.getProperty("spam.blacklist");
        String origWords = spamprop.getValue();
        spamprop.setValue(spamprop.getValue() + ", test");
        pmgr.saveProperty(spamprop);
        TestUtils.endSession(true);
       
        rmgr.applyRefererFilters();
        TestUtils.endSession(true);
       
        refs = rmgr.getReferers(testWeblog);
        assertEquals(0, refs.size());
       
        spamprop = pmgr.getProperty("spam.blacklist");
        spamprop.setValue(origWords);
        pmgr.saveProperty(spamprop);
        TestUtils.endSession(true);
    }
   
   
    public void testApplyRefererFiltersWebsite() throws Exception {
       
        log.info("Test apply referers (weblog)");
       
        RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
       
        List refs = rmgr.getReferers(testWeblog);
        assertEquals(count, refs.size());
        String origWords = null;
       
        UserManager umgr = RollerFactory.getRoller().getUserManager();
        testWeblog = umgr.getWebsite(testWeblog.getId());
        origWords = testWeblog.getBlacklist();
        testWeblog.setBlacklist("test");
        umgr.saveWebsite(testWeblog);
        TestUtils.endSession(true);
       
        rmgr.applyRefererFilters(testWeblog);
        TestUtils.endSession(true);
       
        refs = rmgr.getReferers(testWeblog);
        assertEquals(0, refs.size());
    }
   
    public void testGetDaysPopularWebsites() throws Exception {
        log.info("Test apply referers (weblog)");
        RefererManager rmgr = RollerFactory.getRoller().getRefererManager();
       
        List sites = rmgr.getDaysPopularWebsites(0, 1);
        assertEquals(1, sites.size());
       
        sites = rmgr.getDaysPopularWebsites(1, 1);
        assertEquals(1, sites.size());
       
        sites = rmgr.getDaysPopularWebsites(0, 20);
        assertEquals(2, sites.size());
       
        WebsiteDisplayData site1 = (WebsiteDisplayData)sites.get(0);
        assertEquals(testWeblog.getHandle(), site1.getWebsiteHandle());
        assertEquals(count, site1.getHits().intValue());
       
        WebsiteDisplayData site2 = (WebsiteDisplayData)sites.get(1);
        assertEquals(testWeblog2.getHandle(), site2.getWebsiteHandle());
        assertEquals(count/2, site2.getHits().intValue());
    }
}

TOP

Related Classes of org.apache.roller.business.RefererTest

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.