Move web pages to their own package
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / RescuePageTest.kt
1 package net.pterodactylus.sone.web.pages
2
3 import net.pterodactylus.sone.core.SoneRescuer
4 import net.pterodactylus.sone.test.mock
5 import net.pterodactylus.sone.test.whenever
6 import net.pterodactylus.sone.web.pages.RescuePage
7 import net.pterodactylus.util.web.Method.GET
8 import net.pterodactylus.util.web.Method.POST
9 import org.hamcrest.MatcherAssert.assertThat
10 import org.hamcrest.Matchers.equalTo
11 import org.junit.Before
12 import org.junit.Test
13 import org.mockito.ArgumentMatchers.anyLong
14 import org.mockito.Mockito.never
15 import org.mockito.Mockito.verify
16
17 /**
18  * Unit test for [RescuePage].
19  */
20 class RescuePageTest : WebPageTest() {
21
22         private val page = RescuePage(template, webInterface)
23
24         private val soneRescuer = mock<SoneRescuer>()
25
26         override fun getPage() = page
27
28         @Before
29         fun setupSoneRescuer() {
30                 whenever(core.getSoneRescuer(currentSone)).thenReturn(soneRescuer)
31         }
32
33         @Test
34         fun `get request sets rescuer in template context`() {
35                 request("", GET)
36                 page.handleRequest(freenetRequest, templateContext)
37                 assertThat(templateContext["soneRescuer"], equalTo<Any>(soneRescuer))
38         }
39
40         @Test
41         fun `post request redirects to rescue page`() {
42                 request("", POST)
43                 verifyRedirect("rescue.html")
44         }
45
46         @Test
47         fun `post request with fetch and invalid edition starts next fetch`() {
48                 request("", POST)
49                 addHttpRequestParameter("fetch", "true")
50                 verifyRedirect("rescue.html") {
51                         verify(soneRescuer, never()).setEdition(anyLong())
52                         verify(soneRescuer).startNextFetch()
53                 }
54         }
55
56         @Test
57         fun `post request with fetch and valid edition sets edition and starts next fetch`() {
58                 request("", POST)
59                 addHttpRequestParameter("fetch", "true")
60                 addHttpRequestParameter("edition", "123")
61                 verifyRedirect("rescue.html") {
62                         verify(soneRescuer).setEdition(123L)
63                         verify(soneRescuer).startNextFetch()
64                 }
65         }
66
67 }