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