1 package net.pterodactylus.sone.web.page
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
13 private val highLevelSimpleClient = mock<HighLevelSimpleClient>()
14 private const val pathPrefix = "/some/prefix/"
16 class PageToadletFactoryTest {
18 private val pageToadletFactory = PageToadletFactory(highLevelSimpleClient, pathPrefix)
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())
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"))
35 fun `path prefix is handed down correctly`() {
36 val page = mock<Page<FreenetRequest>>().apply {
37 whenever(path).thenReturn("path")
39 val pageToadlet = pageToadletFactory.createPageToadlet(page)
40 assertThat(pageToadlet.path(), equalTo("/some/prefix/path"))
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"))
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"))
60 private class TestPageWithMenuName : Page<FreenetRequest> {
62 override fun getPath() = ""
63 override fun isPrefixPage() = false
64 override fun handleRequest(request: FreenetRequest, response: Response) = response