X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpage%2FPageToadletFactoryTest.kt;fp=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpage%2FPageToadletFactoryTest.kt;h=7ac8c01603784d38e0d954f4c4e6c54eeadcf987;hp=0000000000000000000000000000000000000000;hb=03cec6a6772c2d836d94864adddaf544cbe9d72f;hpb=6f1f26e3998cfef155b0cf59152827accea70d30 diff --git a/src/test/kotlin/net/pterodactylus/sone/web/page/PageToadletFactoryTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/page/PageToadletFactoryTest.kt new file mode 100644 index 0000000..7ac8c01 --- /dev/null +++ b/src/test/kotlin/net/pterodactylus/sone/web/page/PageToadletFactoryTest.kt @@ -0,0 +1,77 @@ +package net.pterodactylus.sone.web.page + +import com.google.inject.* +import freenet.client.* +import freenet.clients.http.* +import net.pterodactylus.sone.test.* +import net.pterodactylus.sone.web.* +import net.pterodactylus.util.web.* +import org.hamcrest.MatcherAssert.* +import org.hamcrest.Matchers.* +import org.junit.* + +private val highLevelSimpleClient = mock() +private val sessionManager = mock() +private const val pathPrefix = "/some/prefix/" + +class PageToadletFactoryTest { + + private val pageToadletFactory = PageToadletFactory(highLevelSimpleClient, sessionManager, pathPrefix) + + @Test + fun `page toadlet without menu name is created without menu name`() { + val page = mock>() + val pageToadlet = pageToadletFactory.createPageToadlet(page) + assertThat(pageToadlet.menuName, nullValue()) + } + + @Test + fun `page toadlet with menu name is created with menu name`() { + val page = mock>() + val pageToadlet = pageToadletFactory.createPageToadlet(page, "testName") + assertThat(pageToadlet.menuName, equalTo("testName")) + } + + @Test + fun `path prefix is handed down correctly`() { + val page = mock>().apply { + whenever(path).thenReturn("path") + } + val pageToadlet = pageToadletFactory.createPageToadlet(page) + assertThat(pageToadlet.path(), equalTo("/some/prefix/path")) + } + + @Test + fun `menu name is added from annotation when no menu name is given`() { + val page = TestPageWithMenuName() + val pageToadlet = pageToadletFactory.createPageToadlet(page) + assertThat(pageToadlet.menuName, equalTo("testName")) + } + + @Test + fun `menu name from annotation is ignored when menu name is given`() { + val page = TestPageWithMenuName() + val pageToadlet = pageToadletFactory.createPageToadlet(page, "foo") + assertThat(pageToadlet.menuName, equalTo("foo")) + } + + @Test + fun `page toadlet factory can be created by guice`() { + val injector = Guice.createInjector( + HighLevelSimpleClient::class.isProvidedBy(highLevelSimpleClient), + SessionManager::class.isProvidedBy(sessionManager), + String::class.withNameIsProvidedBy("/Sone/", "toadletPathPrefix") + ) + assertThat(injector.getInstance(), notNullValue()) + } + +} + +@MenuName("testName") +private class TestPageWithMenuName : Page { + + override fun getPath() = "" + override fun isPrefixPage() = false + override fun handleRequest(request: FreenetRequest, response: Response) = response + +}