Package net.sourceforge.pebble.domain

Source Code of net.sourceforge.pebble.domain.TrackBackTest

/*
* Copyright (c) 2003-2011, Simon Brown
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
*   - Redistributions of source code must retain the above copyright
*     notice, this list of conditions and the following disclaimer.
*
*   - Redistributions in binary form must reproduce the above copyright
*     notice, this list of conditions and the following disclaimer in
*     the documentation and/or other materials provided with the
*     distribution.
*
*   - Neither the name of Pebble nor the names of its contributors may
*     be used to endorse or promote products derived from this software
*     without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
package net.sourceforge.pebble.domain;

import net.sourceforge.pebble.api.event.trackback.TrackBackEvent;
import net.sourceforge.pebble.api.event.trackback.TrackBackListener;


/**
* Tests for the TrackBack class.
*
* @author    Simon Brown
*/
public class TrackBackTest extends SingleBlogTestCase {

  private TrackBack trackback;

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

    trackback = new BlogEntry(blog).createTrackBack("Title", "Excerpt", "http://www.somedomain.com", "Some blog", "127.0.0.1");
    trackback.setEventsEnabled(true);
  }

  /**
   * Test that a TrackBack instance can be created correctly.
   */
  public void testConstructionOfSimpleInstance() {
    assertNotNull(trackback);
    assertEquals("Title", trackback.getTitle());
    assertEquals("Excerpt", trackback.getExcerpt());
    assertEquals("http://www.somedomain.com", trackback.getUrl());
    assertEquals("Some blog", trackback.getBlogName());
    assertEquals("127.0.0.1", trackback.getIpAddress());
    assertNotNull(trackback.getDate());
    assertEquals(trackback.getDate().getTime(), trackback.getId());
    assertNotNull(trackback.getBlogEntry());
    assertEquals(State.APPROVED, trackback.getState());
    assertEquals("t/" + trackback.getBlogEntry().getId() + "/" + trackback.getId(), trackback.getGuid());
  }

  /**
   * Tests that the title is set appropriately.
   */
  public void testTitle() {
    assertEquals("Title", trackback.getTitle());
  }

  /**
   * Tests that the title defaults to the URL is not specified.
   */
  public void testTitleDefaultsToUrlWhenNotSpecified() {
    trackback.setTitle("");
    assertEquals("http://www.somedomain.com", trackback.getTitle());

    trackback.setTitle(null);
    assertEquals("http://www.somedomain.com", trackback.getTitle());
  }

  /**
   * Tests that the excerpt can't be null.
   */
  public void testExcerptNeverNull() {
    trackback.setExcerpt("");
    assertEquals("", trackback.getExcerpt());

    trackback.setExcerpt(null);
    assertEquals("", trackback.getExcerpt());
  }

  /**
   * Tests that the blog name can't be null.
   */
  public void testBlogNameNeverNull() {
    trackback.setBlogName("");
    assertEquals("", trackback.getBlogName());

    trackback.setBlogName(null);
    assertEquals("", trackback.getBlogName());
  }

  /**
   * Tests the permalink for a TrackBack.
   */
  public void testPermalink() {
    assertEquals(trackback.getBlogEntry().getPermalink() + "#trackback" + trackback.getId(), trackback.getPermalink());
  }

  /**
   * Tests that a TrackBack can be cloned.
   */
  public void testClone() {
    TrackBack clonedTrackBack = (TrackBack)trackback.clone();

    assertEquals(trackback.getTitle(), clonedTrackBack.getTitle());
    assertEquals(trackback.getExcerpt(), clonedTrackBack.getExcerpt());
    assertEquals(trackback.getUrl(), clonedTrackBack.getUrl());
    assertEquals(trackback.getBlogName(), clonedTrackBack.getBlogName());
    assertEquals(trackback.getIpAddress(), clonedTrackBack.getIpAddress());
    assertEquals(trackback.getDate(), clonedTrackBack.getDate());
    assertEquals(trackback.getId(), clonedTrackBack.getId());
    assertEquals(trackback.getState(), clonedTrackBack.getState());
    assertEquals(trackback.getBlogEntry(), clonedTrackBack.getBlogEntry());
  }

  /**
   * Tests that listeners are not fired when a TrackBack is marked as pending.
   */
  public void testListenersFiredWhenTrackBackMarkedAsPending() {

    TrackBackListener listener = new TrackBackListener() {
      public void trackBackAdded(TrackBackEvent event) {
        fail();
      }

      public void trackBackRemoved(TrackBackEvent event) {
        fail();
      }

      public void trackBackApproved(TrackBackEvent event) {
        fail();
      }

      public void trackBackRejected(TrackBackEvent event) {
        fail();
      }
    };

    blog.getEventListenerList().addTrackBackListener(listener);
    trackback.setPending();
  }

  /**
   * Tests that a TrackBackEvent can be vetoed.
   */
  public void trackBackEventCanBeVetoed() {
    // create 2 listeners, veto the event in the first and
    // fail if the second receives the event

    trackback.setPending();

    TrackBackListener listener1 = new TrackBackListener() {
      public void trackBackAdded(TrackBackEvent event) {
        fail();
      }

      public void trackBackRemoved(TrackBackEvent event) {
        fail();
      }

      public void trackBackApproved(TrackBackEvent event) {
        event.veto();
      }

      public void trackBackRejected(TrackBackEvent event) {
        fail();
      }
    };

    TrackBackListener listener2 = new TrackBackListener() {
      public void trackBackAdded(TrackBackEvent event) {
        fail();
      }

      public void trackBackRemoved(TrackBackEvent event) {
        fail();
      }

      public void trackBackApproved(TrackBackEvent event) {
        fail();
      }

      public void trackBackRejected(TrackBackEvent event) {
        fail();
      }
    };

    blog.getEventListenerList().addTrackBackListener(listener1);
    blog.getEventListenerList().addTrackBackListener(listener2);

    trackback.setApproved();
  }

  /**
   * Tests that listeners are not fired when a cloned TrackBack is approved.
   * Why? Because manipulating comments from a blog entry decorator will
   * generate excess events if not disabled.
   */
  public void testListenersNotFiredWhenClonedTrackBackApproved() {
    trackback.setPending();
    trackback = (TrackBack)trackback.clone();

    TrackBackListener listener = new TrackBackListener() {
      public void trackBackAdded(TrackBackEvent event) {
        fail();
      }

      public void trackBackRemoved(TrackBackEvent event) {
        fail();
      }

      public void trackBackApproved(TrackBackEvent event) {
        fail();
      }

      public void trackBackRejected(TrackBackEvent event) {
        fail();
      }
    };

    blog.getEventListenerList().addTrackBackListener(listener);
    trackback.setApproved();
  }

}
TOP

Related Classes of net.sourceforge.pebble.domain.TrackBackTest

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.