🔥 Remove possibility to fetch a custom edition
[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.*
4 import net.pterodactylus.sone.test.*
5 import net.pterodactylus.sone.web.*
6 import net.pterodactylus.sone.web.page.*
7 import net.pterodactylus.util.web.Method.*
8 import org.hamcrest.MatcherAssert.*
9 import org.hamcrest.Matchers.*
10 import org.junit.*
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(::RescuePage) {
19
20         private val soneRescuer = mock<SoneRescuer>()
21
22         @Before
23         fun setupSoneRescuer() {
24                 whenever(core.getSoneRescuer(currentSone)).thenReturn(soneRescuer)
25         }
26
27         @Test
28         fun `page returns correct path`() {
29                 assertThat(page.path, equalTo("rescue.html"))
30         }
31
32         @Test
33         fun `page requires login`() {
34                 assertThat(page.requiresLogin(), equalTo(true))
35         }
36
37         @Test
38         fun `page returns correct title`() {
39                 addTranslation("Page.Rescue.Title", "rescue page title")
40                 assertThat(page.getPageTitle(soneRequest), equalTo("rescue page title"))
41         }
42
43         @Test
44         fun `get request sets rescuer in template context`() {
45                 verifyNoRedirect {
46                         assertThat(templateContext["soneRescuer"], equalTo<Any>(soneRescuer))
47                 }
48         }
49
50         @Test
51         fun `post request redirects to rescue page`() {
52                 setMethod(POST)
53                 verifyRedirect("rescue.html")
54         }
55
56         @Test
57         fun `post request with fetch starts next fetch`() {
58                 setMethod(POST)
59                 addHttpRequestPart("fetch", "true")
60                 verifyRedirect("rescue.html") {
61                         verify(soneRescuer).startNextFetch()
62                 }
63         }
64
65         @Test
66         fun `page can be created by dependency injection`() {
67                 assertThat(baseInjector.getInstance<RescuePage>(), notNullValue())
68         }
69
70         @Test
71         fun `page is annotated with correct menuname`() {
72                 assertThat(page.menuName, equalTo("Rescue"))
73         }
74
75         @Test
76         fun `page is annotated with correct template path`() {
77                 assertThat(page.templatePath, equalTo("/templates/rescue.html"))
78         }
79
80 }