a5160db0b4bb9c742131170ec9379e9409946b71
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / page / PageToadletFactoryTest.kt
1 package net.pterodactylus.sone.web.page
2
3 import freenet.client.HighLevelSimpleClient
4 import net.pterodactylus.sone.test.mock
5 import net.pterodactylus.sone.test.whenever
6 import net.pterodactylus.util.web.Page
7 import net.pterodactylus.util.web.Response
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.hamcrest.Matchers.equalTo
10 import org.hamcrest.Matchers.nullValue
11 import org.junit.Test
12
13 private val highLevelSimpleClient = mock<HighLevelSimpleClient>()
14 private const val pathPrefix = "/some/prefix/"
15
16 class PageToadletFactoryTest {
17
18         private val pageToadletFactory = PageToadletFactory(highLevelSimpleClient, pathPrefix)
19
20         @Test
21         fun `page toadlet without menu name is created without menu name`() {
22                 val page = mock<Page<FreenetRequest>>()
23                 val pageToadlet = pageToadletFactory.createPageToadlet(page)
24                 assertThat(pageToadlet.menuName, nullValue())
25         }
26
27         @Test
28         fun `page toadlet with menu name is created with menu name`() {
29                 val page = mock<Page<FreenetRequest>>()
30                 val pageToadlet = pageToadletFactory.createPageToadlet(page, "testName")
31                 assertThat(pageToadlet.menuName, equalTo("testName"))
32         }
33
34         @Test
35         fun `path prefix is handed down correctly`() {
36                 val page = mock<Page<FreenetRequest>>().apply {
37                         whenever(path).thenReturn("path")
38                 }
39                 val pageToadlet = pageToadletFactory.createPageToadlet(page)
40                 assertThat(pageToadlet.path(), equalTo("/some/prefix/path"))
41         }
42
43         @Test
44         fun `menu name is added from annotation when no menu name is given`() {
45                 val page = TestPageWithMenuName()
46                 val pageToadlet = pageToadletFactory.createPageToadlet(page)
47                 assertThat(pageToadlet.menuName, equalTo("testName"))
48         }
49
50         @Test
51         fun `menu name from annotation is ignored when menu name is given`() {
52                 val page = TestPageWithMenuName()
53                 val pageToadlet = pageToadletFactory.createPageToadlet(page, "foo")
54                 assertThat(pageToadlet.menuName, equalTo("foo"))
55         }
56
57 }
58
59 @MenuName("testName")
60 private class TestPageWithMenuName : Page<FreenetRequest> {
61
62         override fun getPath() = ""
63         override fun isPrefixPage() = false
64         override fun handleRequest(request: FreenetRequest, response: Response) = response
65
66 }