Clover Coverage Report - Pebble 2.5-SNAPSHOT
Coverage timestamp: Sat Jun 12 2010 09:39:29 EST
68   244   27   2,52
0   132   0,4   27
27     1  
1    
This report was generated with an evaluation server license. Purchase Clover or configure your license.
 
  TrackBackTest       Line # 43 68 0% 27 39 58,9% 0.58947366
 
  (18)
 
1    /*
2    * Copyright (c) 2003-2006, Simon Brown
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions are met:
7    *
8    * - Redistributions of source code must retain the above copyright
9    * notice, this list of conditions and the following disclaimer.
10    *
11    * - Redistributions in binary form must reproduce the above copyright
12    * notice, this list of conditions and the following disclaimer in
13    * the documentation and/or other materials provided with the
14    * distribution.
15    *
16    * - Neither the name of Pebble nor the names of its contributors may
17    * be used to endorse or promote products derived from this software
18    * without specific prior written permission.
19    *
20    * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21    * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22    * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23    * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24    * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25    * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26    * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27    * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28    * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29    * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30    * POSSIBILITY OF SUCH DAMAGE.
31    */
32    package net.sourceforge.pebble.domain;
33   
34    import net.sourceforge.pebble.api.event.trackback.TrackBackEvent;
35    import net.sourceforge.pebble.api.event.trackback.TrackBackListener;
36   
37   
38    /**
39    * Tests for the TrackBack class.
40    *
41    * @author Simon Brown
42    */
 
43    public class TrackBackTest extends SingleBlogTestCase {
44   
45    private TrackBack trackback;
46   
 
47  18 toggle protected void setUp() throws Exception {
48  18 super.setUp();
49   
50  18 trackback = new BlogEntry(blog).createTrackBack("Title", "Excerpt", "http://www.somedomain.com", "Some blog", "127.0.0.1");
51  18 trackback.setEventsEnabled(true);
52    }
53   
54    /**
55    * Test that a TrackBack instance can be created correctly.
56    */
 
57  2 toggle public void testConstructionOfSimpleInstance() {
58  2 assertNotNull(trackback);
59  2 assertEquals("Title", trackback.getTitle());
60  2 assertEquals("Excerpt", trackback.getExcerpt());
61  2 assertEquals("http://www.somedomain.com", trackback.getUrl());
62  2 assertEquals("Some blog", trackback.getBlogName());
63  2 assertEquals("127.0.0.1", trackback.getIpAddress());
64  2 assertNotNull(trackback.getDate());
65  2 assertEquals(trackback.getDate().getTime(), trackback.getId());
66  2 assertNotNull(trackback.getBlogEntry());
67  2 assertEquals(State.APPROVED, trackback.getState());
68  2 assertEquals("t/" + trackback.getBlogEntry().getId() + "/" + trackback.getId(), trackback.getGuid());
69    }
70   
71    /**
72    * Tests that the title is set appropriately.
73    */
 
74  2 toggle public void testTitle() {
75  2 assertEquals("Title", trackback.getTitle());
76    }
77   
78    /**
79    * Tests that the title defaults to the URL is not specified.
80    */
 
81  2 toggle public void testTitleDefaultsToUrlWhenNotSpecified() {
82  2 trackback.setTitle("");
83  2 assertEquals("http://www.somedomain.com", trackback.getTitle());
84   
85  2 trackback.setTitle(null);
86  2 assertEquals("http://www.somedomain.com", trackback.getTitle());
87    }
88   
89    /**
90    * Tests that the excerpt can't be null.
91    */
 
92  2 toggle public void testExcerptNeverNull() {
93  2 trackback.setExcerpt("");
94  2 assertEquals("", trackback.getExcerpt());
95   
96  2 trackback.setExcerpt(null);
97  2 assertEquals("", trackback.getExcerpt());
98    }
99   
100    /**
101    * Tests that the blog name can't be null.
102    */
 
103  2 toggle public void testBlogNameNeverNull() {
104  2 trackback.setBlogName("");
105  2 assertEquals("", trackback.getBlogName());
106   
107  2 trackback.setBlogName(null);
108  2 assertEquals("", trackback.getBlogName());
109    }
110   
111    /**
112    * Tests the permalink for a TrackBack.
113    */
 
114  2 toggle public void testPermalink() {
115  2 assertEquals(trackback.getBlogEntry().getPermalink() + "#trackback" + trackback.getId(), trackback.getPermalink());
116    }
117   
118    /**
119    * Tests that a TrackBack can be cloned.
120    */
 
121  2 toggle public void testClone() {
122  2 TrackBack clonedTrackBack = (TrackBack)trackback.clone();
123   
124  2 assertEquals(trackback.getTitle(), clonedTrackBack.getTitle());
125  2 assertEquals(trackback.getExcerpt(), clonedTrackBack.getExcerpt());
126  2 assertEquals(trackback.getUrl(), clonedTrackBack.getUrl());
127  2 assertEquals(trackback.getBlogName(), clonedTrackBack.getBlogName());
128  2 assertEquals(trackback.getIpAddress(), clonedTrackBack.getIpAddress());
129  2 assertEquals(trackback.getDate(), clonedTrackBack.getDate());
130  2 assertEquals(trackback.getId(), clonedTrackBack.getId());
131  2 assertEquals(trackback.getState(), clonedTrackBack.getState());
132  2 assertEquals(trackback.getBlogEntry(), clonedTrackBack.getBlogEntry());
133    }
134   
135    /**
136    * Tests that listeners are not fired when a TrackBack is marked as pending.
137    */
 
138  2 toggle public void testListenersFiredWhenTrackBackMarkedAsPending() {
139   
140  2 TrackBackListener listener = new TrackBackListener() {
 
141  0 toggle public void trackBackAdded(TrackBackEvent event) {
142  0 fail();
143    }
144   
 
145  0 toggle public void trackBackRemoved(TrackBackEvent event) {
146  0 fail();
147    }
148   
 
149  0 toggle public void trackBackApproved(TrackBackEvent event) {
150  0 fail();
151    }
152   
 
153  0 toggle public void trackBackRejected(TrackBackEvent event) {
154  0 fail();
155    }
156    };
157   
158  2 blog.getEventListenerList().addTrackBackListener(listener);
159  2 trackback.setPending();
160    }
161   
162    /**
163    * Tests that a TrackBackEvent can be vetoed.
164    */
 
165  0 toggle public void trackBackEventCanBeVetoed() {
166    // create 2 listeners, veto the event in the first and
167    // fail if the second receives the event
168   
169  0 trackback.setPending();
170   
171  0 TrackBackListener listener1 = new TrackBackListener() {
 
172  0 toggle public void trackBackAdded(TrackBackEvent event) {
173  0 fail();
174    }
175   
 
176  0 toggle public void trackBackRemoved(TrackBackEvent event) {
177  0 fail();
178    }
179   
 
180  0 toggle public void trackBackApproved(TrackBackEvent event) {
181  0 event.veto();
182    }
183   
 
184  0 toggle public void trackBackRejected(TrackBackEvent event) {
185  0 fail();
186    }
187    };
188   
189  0 TrackBackListener listener2 = new TrackBackListener() {
 
190  0 toggle public void trackBackAdded(TrackBackEvent event) {
191  0 fail();
192    }
193   
 
194  0 toggle public void trackBackRemoved(TrackBackEvent event) {
195  0 fail();
196    }
197   
 
198  0 toggle public void trackBackApproved(TrackBackEvent event) {
199  0 fail();
200    }
201   
 
202  0 toggle public void trackBackRejected(TrackBackEvent event) {
203  0 fail();
204    }
205    };
206   
207  0 blog.getEventListenerList().addTrackBackListener(listener1);
208  0 blog.getEventListenerList().addTrackBackListener(listener2);
209   
210  0 trackback.setApproved();
211    }
212   
213    /**
214    * Tests that listeners are not fired when a cloned TrackBack is approved.
215    * Why? Because manipulating comments from a blog entry decorator will
216    * generate excess events if not disabled.
217    */
 
218  2 toggle public void testListenersNotFiredWhenClonedTrackBackApproved() {
219  2 trackback.setPending();
220  2 trackback = (TrackBack)trackback.clone();
221   
222  2 TrackBackListener listener = new TrackBackListener() {
 
223  0 toggle public void trackBackAdded(TrackBackEvent event) {
224  0 fail();
225    }
226   
 
227  0 toggle public void trackBackRemoved(TrackBackEvent event) {
228  0 fail();
229    }
230   
 
231  0 toggle public void trackBackApproved(TrackBackEvent event) {
232  0 fail();
233    }
234   
 
235  0 toggle public void trackBackRejected(TrackBackEvent event) {
236  0 fail();
237    }
238    };
239   
240  2 blog.getEventListenerList().addTrackBackListener(listener);
241  2 trackback.setApproved();
242    }
243   
244    }