Merge branch 'release-0.9.6'
[Sone.git] / src / test / java / net / pterodactylus / sone / web / BookmarkPageTest.java
1 package net.pterodactylus.sone.web;
2
3 import static net.pterodactylus.sone.web.WebTestUtils.redirectsTo;
4 import static org.hamcrest.MatcherAssert.assertThat;
5 import static org.hamcrest.Matchers.is;
6 import static org.mockito.ArgumentMatchers.any;
7 import static org.mockito.Mockito.mock;
8 import static org.mockito.Mockito.never;
9 import static org.mockito.Mockito.verify;
10
11 import net.pterodactylus.sone.data.Post;
12 import net.pterodactylus.util.web.Method;
13
14 import org.junit.Test;
15
16 /**
17  * Unit test for {@link BookmarkPage}.
18  *
19  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
20  */
21 public class BookmarkPageTest extends WebPageTest {
22
23         private final BookmarkPage page = new BookmarkPage(template, webInterface);
24
25         @Test
26         public void pathIsSetCorrectly() {
27                 assertThat(page.getPath(), is("bookmark.html"));
28         }
29
30         @Test
31         public void getRequestDoesNotBookmarkAnythingAndDoesNotRedirect() throws Exception {
32                 page.processTemplate(freenetRequest, templateContext);
33                 verify(core, never()).bookmarkPost(any(Post.class));
34         }
35
36         @Test
37         public void postIsBookmarkedCorrectly() throws Exception {
38                 setupRequest();
39                 Post post = mock(Post.class);
40                 addPost("post-id", post);
41                 expectedException.expect(redirectsTo("return-page.html"));
42                 try {
43                         page.processTemplate(freenetRequest, templateContext);
44                 } finally {
45                         verify(core).bookmarkPost(post);
46                 }
47         }
48
49         private void setupRequest() {
50                 request("", Method.POST);
51                 addHttpRequestParameter("post", "post-id");
52                 addHttpRequestParameter("returnPage", "return-page.html");
53         }
54
55         @Test
56         public void nonExistentPostIsNotBookmarked() throws Exception {
57                 setupRequest();
58                 addPost("post-id", null);
59                 expectedException.expect(redirectsTo("return-page.html"));
60                 try {
61                         page.processTemplate(freenetRequest, templateContext);
62                 } finally {
63                         verify(core, never()).bookmarkPost(any(Post.class));
64                 }
65         }
66
67 }