Clover Coverage Report - Pebble 2.5-SNAPSHOT
Coverage timestamp: Sat Jun 12 2010 09:39:29 EST
98   224   7   14
0   119   0,07   7
7     1  
1    
This report was generated with an evaluation server license. Purchase Clover or configure your license.
 
  TitlePermalinkProviderTest       Line # 45 98 0% 7 0 100% 1.0
 
  (12)
 
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.permalink;
33   
34    import net.sourceforge.pebble.domain.BlogEntry;
35    import net.sourceforge.pebble.domain.BlogService;
36    import net.sourceforge.pebble.api.permalink.PermalinkProvider;
37   
38    import java.text.SimpleDateFormat;
39   
40    /**
41    * Tests for the TitlePermalinkProvider class.
42    *
43    * @author Simon Brown
44    */
 
45    public class TitlePermalinkProviderTest extends PermalinkProviderSupportTestCase {
46   
47    /**
48    * Gets a PermalinkProvider instance.
49    *
50    * @return a PermalinkProvider instance
51    */
 
52  24 toggle protected PermalinkProvider getPermalinkProvider() {
53  24 return new TitlePermalinkProvider();
54    }
55   
56    /**
57    * Tests that a permalink can be generated for a blog entry.
58    */
 
59  2 toggle public void testBlogEntryPermalink() throws Exception {
60  2 BlogService service = new BlogService();
61  2 BlogEntry blogEntry = new BlogEntry(blog);
62  2 service.putBlogEntry(blogEntry);
63   
64  2 SimpleDateFormat sdf = new SimpleDateFormat("yyyy'/'MM'/'dd'/'");
65  2 sdf.setTimeZone(blog.getTimeZone());
66  2 String prefix = "/";
67  2 prefix += sdf.format(blogEntry.getDate());
68  2 String suffix = ".html";
69   
70  2 blogEntry.setTitle("Here is a title");
71  2 assertEquals(prefix + "here_is_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
72   
73  2 blogEntry.setTitle("Here's a title");
74  2 assertEquals(prefix + "heres_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
75   
76  2 blogEntry.setTitle("Here's a title!");
77  2 assertEquals(prefix + "heres_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
78   
79  2 blogEntry.setTitle("Here_is_a_title");
80  2 assertEquals(prefix + "here_is_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
81   
82  2 blogEntry.setTitle("Here-is-a-title");
83  2 assertEquals(prefix + "here_is_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
84   
85  2 blogEntry.setTitle("Here is a title");
86  2 assertEquals(prefix + "here_is_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
87   
88  2 blogEntry.setTitle("Here is : a title");
89  2 assertEquals(prefix + "here_is_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
90   
91  2 blogEntry.setTitle("Here is/a title");
92  2 assertEquals(prefix + "here_is_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
93   
94  2 blogEntry.setTitle("Here is\\a title");
95  2 assertEquals(prefix + "here_is_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
96   
97  2 blogEntry.setTitle("Here is, a title");
98  2 assertEquals(prefix + "here_is_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
99   
100  2 blogEntry.setTitle("Here is; a title");
101  2 assertEquals(prefix + "here_is_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
102   
103  2 blogEntry.setTitle("Here is a title.");
104  2 assertEquals(prefix + "here_is_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
105   
106  2 blogEntry.setTitle(":Here is a title.");
107  2 assertEquals(prefix + "here_is_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
108   
109  2 blogEntry.setTitle("Here is. a title");
110  2 assertEquals(prefix + "here_is_a_title" + suffix, permalinkProvider.getPermalink(blogEntry));
111   
112  2 blogEntry.setTitle(null);
113  2 assertEquals(prefix + blogEntry.getId() + suffix, permalinkProvider.getPermalink(blogEntry));
114   
115  2 blogEntry.setTitle("");
116  2 assertEquals(prefix + blogEntry.getId() + suffix, permalinkProvider.getPermalink(blogEntry));
117   
118  2 blogEntry.setTitle("./:!@ÔøΩ$%^&*()");
119  2 assertEquals(prefix + blogEntry.getId() + suffix, permalinkProvider.getPermalink(blogEntry));
120    }
121   
122    /**
123    * Tests that a permalink can be generated for a blog entry when there are
124    * duplicate titles for the same day.
125    */
 
126  2 toggle public void testBlogEntryPermalinkForEntriesWithSameTitle() throws Exception {
127  2 BlogService service = new BlogService();
128   
129  2 BlogEntry blogEntry1 = new BlogEntry(blog);
130  2 blogEntry1.setTitle("A Title");
131  2 service.putBlogEntry(blogEntry1);
132   
133  2 SimpleDateFormat sdf = new SimpleDateFormat("yyyy'/'MM'/'dd'/'");
134  2 sdf.setTimeZone(blog.getTimeZone());
135  2 String prefix = "/";
136  2 prefix += sdf.format(blogEntry1.getDate());
137  2 String suffix = ".html";
138  2 assertEquals(prefix + "a_title" + suffix, permalinkProvider.getPermalink(blogEntry1));
139   
140    // now add another with the same name
141  2 BlogEntry blogEntry2 = new BlogEntry(blog);
142  2 blogEntry2.setTitle("A Title");
143  2 service.putBlogEntry(blogEntry2);
144   
145  2 assertEquals(prefix + "a_title" + suffix, permalinkProvider.getPermalink(blogEntry1));
146  2 assertEquals(prefix + "a_title_" + blogEntry2.getId() + suffix, permalinkProvider.getPermalink(blogEntry2));
147    }
148   
149    /**
150    * Tests that a blog entry permalink is recognised.
151    */
 
152  2 toggle public void testIsBlogEntryPermalink() {
153  2 assertTrue(permalinkProvider.isBlogEntryPermalink("/2004/01/01/blog_entry_title.html"));
154  2 assertFalse(permalinkProvider.isBlogEntryPermalink("/someotherpage.html"));
155  2 assertFalse(permalinkProvider.isBlogEntryPermalink(""));
156  2 assertFalse(permalinkProvider.isBlogEntryPermalink(null));
157    }
158   
159    /**
160    * Tests that the correct blog entry can be found from a permalink.
161    */
 
162  2 toggle public void testGetBlogEntry() throws Exception {
163  2 BlogService service = new BlogService();
164   
165  2 BlogEntry blogEntry1 = new BlogEntry(blog);
166  2 blogEntry1.setTitle("A Title");
167  2 service.putBlogEntry(blogEntry1);
168   
169  2 BlogEntry blogEntry2 = new BlogEntry(blog);
170  2 blogEntry2.setTitle("Some other title");
171  2 service.putBlogEntry(blogEntry2);
172   
173  2 BlogEntry blogEntry3 = new BlogEntry(blog);
174  2 blogEntry3.setTitle("Some other itle");
175  2 service.putBlogEntry(blogEntry3);
176   
177  2 String uri = permalinkProvider.getPermalink(blogEntry1);
178  2 assertEquals(blogEntry1, permalinkProvider.getBlogEntry(uri));
179  2 uri = permalinkProvider.getPermalink(blogEntry2);
180  2 assertEquals(blogEntry2, permalinkProvider.getBlogEntry(uri));
181  2 uri = permalinkProvider.getPermalink(blogEntry3);
182  2 assertEquals(blogEntry3, permalinkProvider.getBlogEntry(uri));
183    }
184   
185    /**
186    * Tests that the correct aggregated blog entry can be found from a permalink.
187    */
 
188  2 toggle public void testGetAggregatedBlogEntry() throws Exception {
189  2 BlogService service = new BlogService();
190   
191  2 BlogEntry blogEntry = new BlogEntry(blog);
192  2 blogEntry.setTitle("A Title");
193  2 blogEntry.setOriginalPermalink("http://www.someotherdomain.com/blog/abc.html");
194  2 service.putBlogEntry(blogEntry);
195   
196  2 String uri = permalinkProvider.getPermalink(blogEntry);
197  2 assertEquals(blogEntry, permalinkProvider.getBlogEntry(uri));
198    }
199   
200    /**
201    * Tests that a permalink is changed when the blog entry title changes.
202    */
 
203  2 toggle public void testBlogEntryPermalinkChangesWithTitle() throws Exception {
204  2 blog.setPermalinkProvider(new TitlePermalinkProvider());
205   
206  2 BlogService service = new BlogService();
207   
208  2 BlogEntry blogEntry = new BlogEntry(blog);
209  2 service.putBlogEntry(blogEntry);
210   
211  2 SimpleDateFormat sdf = new SimpleDateFormat("yyyy'/'MM'/'dd'/'");
212  2 sdf.setTimeZone(blog.getTimeZone());
213  2 String prefix = blog.getUrl();
214  2 prefix += sdf.format(blogEntry.getDate());
215  2 String suffix = ".html";
216   
217  2 blogEntry.setTitle("Here is a title");
218  2 assertEquals(prefix + "here_is_a_title" + suffix, blogEntry.getPermalink());
219   
220  2 blogEntry.setTitle("Here is a new title");
221  2 assertEquals(prefix + "here_is_a_new_title" + suffix, blogEntry.getPermalink());
222    }
223   
224    }