Package com.salas.bb.domain

Source Code of com.salas.bb.domain.TestDirectFeedEvents

// BlogBridge -- RSS feed reader, manager, and web based service
// Copyright (C) 2002-2006 by R. Pito Salas
//
// This program is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free Software Foundation;
// either version 2 of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
// without even 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
//
// Contact: R. Pito Salas
// mailto:pitosalas@users.sourceforge.net
// More information: about BlogBridge
// http://www.blogbridge.com
// http://sourceforge.net/projects/blogbridge
//
// $Id: TestDirectFeedEvents.java,v 1.8 2007/08/29 14:29:53 spyromus Exp $
//

package com.salas.bb.domain;

import com.salas.bb.tags.TestUtils;
import org.jmock.Mock;
import org.jmock.MockObjectTestCase;

import java.net.URL;

/**
* This suite contains the tests for <code>DirectFeed</code> class which
* are targeted on checking of correct event firing and handling.
*/
public class TestDirectFeedEvents extends MockObjectTestCase
{
    private static URL testURL1;
    private static URL testURL2;

    private Mock listener;
    private DirectFeed feed;
    private static final String METHOD_PROPERTY_CHANGED = "propertyChanged";

    protected void setUp()
        throws Exception
    {
        super.setUp();

        listener = new Mock(IFeedListener.class);

        feed = new DirectFeed();
        feed.addListener((IFeedListener)listener.proxy());

        synchronized (TestDirectFeedEvents.class)
        {
            if (testURL1 == null) testURL1 = new URL("file://test1");
            if (testURL2 == null) testURL2 = new URL("file://test2");
        }
    }

    // ---------------------------------------------------------------------------------------------
    // Tests
    // ---------------------------------------------------------------------------------------------

    /**
     * Tests firing change in XML URL property.
     * Tests avoing of duplicate events.
     */
    public void testXmlURLPC()
    {
        // Setting URL
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_XML_URL), NULL, eq(testURL1));

        feed.setXmlURL(testURL1);
        feed.setXmlURL(testURL1);

        // Reseting URL
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_XML_URL), eq(testURL1), NULL);

        feed.setXmlURL(null);
        feed.setXmlURL(null);

        listener.verify();
    }

    /**
     * Tests firing change in Rating property.
     * Tests avoing of duplicate events.
     */
    public void testRatingPC()
    {
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_RATING), eq(DirectFeed.RATING_NOT_SET), eq(DirectFeed.RATING_MIN));
        expectFirstChange();

        feed.setRating(DirectFeed.RATING_MIN);
        feed.setRating(DirectFeed.RATING_MIN);

        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_RATING), eq(DirectFeed.RATING_MIN), eq(DirectFeed.RATING_MAX));

        feed.setRating(DirectFeed.RATING_MAX);
        feed.setRating(DirectFeed.RATING_MAX);

        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_RATING), eq(DirectFeed.RATING_MAX), eq(DirectFeed.RATING_NOT_SET));

        feed.setRating(DirectFeed.RATING_NOT_SET);
        feed.setRating(DirectFeed.RATING_NOT_SET);

        listener.verify();
    }

    private void expectFirstChange()
    {
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_LAST_UPDATE_TIME), eq(-1l), not(eq(-1l)));
    }

    private void expectSecondChange()
    {
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_LAST_UPDATE_TIME), not(eq(-1l)), not(eq(-1l)));
    }

    /**
     * Tests firing change in Dead flag.
     * Tests avoing of duplicate events.
     */
    public void testDeadPC()
    {
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_DEAD), eq(Boolean.valueOf(DirectFeed.DEFAULT_DEAD)),
            eq(Boolean.valueOf(!DirectFeed.DEFAULT_DEAD)));

        feed.setDead(!DirectFeed.DEFAULT_DEAD);
        feed.setDead(!DirectFeed.DEFAULT_DEAD);

        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_DEAD), eq(Boolean.valueOf(!DirectFeed.DEFAULT_DEAD)),
            eq(Boolean.valueOf(DirectFeed.DEFAULT_DEAD)));

        feed.setDead(DirectFeed.DEFAULT_DEAD);
        feed.setDead(DirectFeed.DEFAULT_DEAD);

        listener.verify();
    }

    /**
     * Tests firing change in Title property on custom title setting.
     */
    public void testSetCustomTitle()
    {
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_CUSTOM_TITLE), NULL, eq("A"));
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_TITLE), NULL, eq("A"));
        expectFirstChange();

        feed.setCustomTitle("A");
        feed.setCustomTitle("A");

        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_CUSTOM_TITLE), eq("A"), NULL);
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_TITLE), eq("A"), NULL);

        feed.setCustomTitle(null);
        feed.setCustomTitle(null);

        listener.verify();
    }

    /**
     * Tests firing change in Description property on custom description setting.
     */
    public void testSetCustomDescription()
    {
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_CUSTOM_DESCRIPTION), NULL, eq("A"));
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_DESCRIPTION), NULL, eq("A"));
        expectFirstChange();

        feed.setCustomDescription("A");
        feed.setCustomDescription("A");

        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_CUSTOM_DESCRIPTION), eq("A"), NULL);
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_DESCRIPTION), eq("A"), NULL);

        feed.setCustomDescription(null);
        feed.setCustomDescription(null);

        listener.verify();
    }

    /**
     * Tests firing change in Author property on custom author setting.
     */
    public void testSetCustomAuthor()
    {
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_AUTHOR), NULL, eq("A"));
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_CUSTOM_AUTHOR), NULL, eq("A"));
        expectFirstChange();

        feed.setCustomAuthor("A");
        feed.setCustomAuthor("A");

        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_AUTHOR), eq("A"), NULL);
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_CUSTOM_AUTHOR), eq("A"), NULL);
        expectSecondChange();

        TestUtils.sleepABit();
        feed.setCustomAuthor(null);
        feed.setCustomAuthor(null);

        listener.verify();
    }

    /**
     * Tests setting base title.
     */
    public void testSetBaseTitle()
    {
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_BASE_TITLE), NULL, eq("A"));
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_TITLE), NULL, eq("A"));

        feed.setBaseTitle("A");
        feed.setBaseTitle("A");

        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_BASE_TITLE), eq("A"), NULL);
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_TITLE), eq("A"), NULL);

        feed.setBaseTitle(null);
        feed.setBaseTitle(null);

        listener.verify();
    }

    /**
     * Tests setting base title which the custom title is set -- no events for title property
     * change should be fired.
     */
    public void testSetBaseTitleNonOverriding()
    {
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_CUSTOM_TITLE), NULL, eq("B"));
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_TITLE), NULL, eq("B"));
        expectFirstChange();

        feed.setCustomTitle("B");

        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_BASE_TITLE), NULL, eq("A"));

        feed.setBaseTitle("A");

        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_BASE_TITLE), eq("A"), NULL);

        feed.setBaseTitle(null);

        listener.verify();
    }

    /**
     * Tests setting the base description.
     */
    public void testSetBaseDescription()
    {
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_BASE_DESCRIPTION), NULL, eq("A"));
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_DESCRIPTION), NULL, eq("A"));

        feed.setBaseDescription("A");
        feed.setBaseDescription("A");

        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_BASE_DESCRIPTION), eq("A"), NULL);
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_DESCRIPTION), eq("A"), NULL);

        feed.setBaseDescription(null);
        feed.setBaseDescription(null);

        listener.verify();
    }

    /**
     * Tests setting the base author.
     */
    public void testSetBaseAuthor()
    {
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_AUTHOR), NULL, eq("A"));
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_BASE_AUTHOR), NULL, eq("A"));

        feed.setBaseAuthor("A");
        feed.setBaseAuthor("A");

        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_AUTHOR), eq("A"), NULL);
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_BASE_AUTHOR), eq("A"), NULL);

        feed.setBaseAuthor(null);
        feed.setBaseAuthor(null);

        listener.verify();
    }

    /**
     * Tests setting the last meta-data update time directly at feed.
     */
    public void testChangeMetaDataUpdateTimeDirect()
    {
        long time = 1;
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_LAST_METADATA_UPDATE_TIME), eq(new Long(-1)), eq(new Long(time)));

        feed.setLastMetaDataUpdateTime(time);

        listener.verify();
    }

    /**
     * Tests setting the last meta-data update time at meta-data object associate with feed.
     */
    public void testChangeMetaDataUpdateTimeIndirect()
    {
        long time = 1;
        listener.expects(once()).method(METHOD_PROPERTY_CHANGED).with(same(feed),
            eq(DirectFeed.PROP_LAST_METADATA_UPDATE_TIME), eq(new Long(-1)), eq(new Long(time)));

        feed.getMetaDataHolder().setLastUpdateTime(time);

        listener.verify();
    }
}
TOP

Related Classes of com.salas.bb.domain.TestDirectFeedEvents

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.