63b902b062f5834f3c61ba6c1a732579f0fa67bc
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / UnfollowSonePageTest.kt
1 package net.pterodactylus.sone.web.pages
2
3 import net.pterodactylus.sone.test.*
4 import net.pterodactylus.sone.web.*
5 import net.pterodactylus.util.web.Method.*
6 import org.hamcrest.MatcherAssert.*
7 import org.hamcrest.Matchers.*
8 import org.junit.*
9 import org.mockito.Mockito.*
10
11 /**
12  * Unit test for [UnfollowSonePage].
13  */
14 class UnfollowSonePageTest: WebPageTest(::UnfollowSonePage) {
15
16         @Test
17         fun `page returns correct path`() {
18             assertThat(page.path, equalTo("unfollowSone.html"))
19         }
20
21         @Test
22         fun `page requires login`() {
23             assertThat(page.requiresLogin(), equalTo(true))
24         }
25
26         @Test
27         fun `page returns correct page title`() {
28             addTranslation("Page.UnfollowSone.Title", "unfollow page title")
29                 assertThat(page.getPageTitle(soneRequest), equalTo("unfollow page title"))
30         }
31
32         @Test
33         fun `get request does not redirect`() {
34                 verifyNoRedirect { }
35         }
36
37         @Test
38         fun `post request unfollows a single sone and redirects to return page`() {
39                 setMethod(POST)
40                 addHttpRequestPart("returnPage", "return.html")
41                 addHttpRequestPart("sone", "sone-id")
42                 verifyRedirect("return.html") {
43                         verify(core).unfollowSone(currentSone, "sone-id")
44                 }
45         }
46
47         @Test
48         fun `post request unfollows two sones and redirects to return page`() {
49                 setMethod(POST)
50                 addHttpRequestPart("returnPage", "return.html")
51                 addHttpRequestPart("sone", "sone-id1, sone-id2")
52                 verifyRedirect("return.html") {
53                         verify(core).unfollowSone(currentSone, "sone-id1")
54                         verify(core).unfollowSone(currentSone, "sone-id2")
55                 }
56         }
57
58         @Test
59         fun `page can be created by dependency injection`() {
60             assertThat(baseInjector.getInstance<UnfollowSonePage>(), notNullValue())
61         }
62
63 }