projects
/
Sone.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8f6aa25
)
🐛 Fix path prefix for page toadlet factory
author
David ‘Bombe’ Roden
<bombe@pterodactylus.net>
Fri, 17 May 2019 23:51:07 +0000
(
01:51
+0200)
committer
David ‘Bombe’ Roden
<bombe@pterodactylus.net>
Fri, 17 May 2019 23:51:07 +0000
(
01:51
+0200)
src/main/kotlin/net/pterodactylus/sone/web/WebInterfaceModule.kt
patch
|
blob
|
history
src/main/kotlin/net/pterodactylus/sone/web/page/PageToadletFactory.kt
patch
|
blob
|
history
src/test/kotlin/net/pterodactylus/sone/test/Guice.kt
patch
|
blob
|
history
src/test/kotlin/net/pterodactylus/sone/web/WebInterfaceModuleTest.kt
patch
|
blob
|
history
src/test/kotlin/net/pterodactylus/sone/web/page/PageToadletFactoryTest.kt
patch
|
blob
|
history
diff --git
a/src/main/kotlin/net/pterodactylus/sone/web/WebInterfaceModule.kt
b/src/main/kotlin/net/pterodactylus/sone/web/WebInterfaceModule.kt
index
16f6e86
..
dd5e9f6
100644
(file)
--- a/
src/main/kotlin/net/pterodactylus/sone/web/WebInterfaceModule.kt
+++ b/
src/main/kotlin/net/pterodactylus/sone/web/WebInterfaceModule.kt
@@
-12,6
+12,7
@@
import net.pterodactylus.sone.main.*
import net.pterodactylus.sone.template.*
import net.pterodactylus.sone.text.*
import net.pterodactylus.util.template.*
import net.pterodactylus.sone.template.*
import net.pterodactylus.sone.text.*
import net.pterodactylus.util.template.*
+import javax.inject.*
import javax.inject.Singleton
class WebInterfaceModule : AbstractModule() {
import javax.inject.Singleton
class WebInterfaceModule : AbstractModule() {
@@
-120,4
+121,8
@@
class WebInterfaceModule : AbstractModule() {
fun getImageLinkFilter(core: Core) =
ImageLinkFilter(core)
fun getImageLinkFilter(core: Core) =
ImageLinkFilter(core)
+ @Provides
+ @Named("toadletPathPrefix")
+ fun getPathPrefix(): String = "/Sone/"
+
}
}
diff --git
a/src/main/kotlin/net/pterodactylus/sone/web/page/PageToadletFactory.kt
b/src/main/kotlin/net/pterodactylus/sone/web/page/PageToadletFactory.kt
index
3a01754
..
ace5f8a
100644
(file)
--- a/
src/main/kotlin/net/pterodactylus/sone/web/page/PageToadletFactory.kt
+++ b/
src/main/kotlin/net/pterodactylus/sone/web/page/PageToadletFactory.kt
@@
-22,7
+22,11
@@
import freenet.clients.http.*
import net.pterodactylus.util.web.*
import javax.inject.*
import net.pterodactylus.util.web.*
import javax.inject.*
-class PageToadletFactory @Inject constructor(private val highLevelSimpleClient: HighLevelSimpleClient, private val sessionManager: SessionManager, private val pathPrefix: String) {
+class PageToadletFactory @Inject constructor(
+ private val highLevelSimpleClient: HighLevelSimpleClient,
+ private val sessionManager: SessionManager,
+ @Named("toadletPathPrefix") private val pathPrefix: String
+) {
@JvmOverloads
fun createPageToadlet(page: Page<FreenetRequest>, menuName: String? = null) =
@JvmOverloads
fun createPageToadlet(page: Page<FreenetRequest>, menuName: String? = null) =
diff --git
a/src/test/kotlin/net/pterodactylus/sone/test/Guice.kt
b/src/test/kotlin/net/pterodactylus/sone/test/Guice.kt
index
abf0476
..
2fc4a96
100644
(file)
--- a/
src/test/kotlin/net/pterodactylus/sone/test/Guice.kt
+++ b/
src/test/kotlin/net/pterodactylus/sone/test/Guice.kt
@@
-2,11
+2,13
@@
package net.pterodactylus.sone.test
import com.google.inject.Injector
import com.google.inject.Module
import com.google.inject.Injector
import com.google.inject.Module
+import com.google.inject.name.*
import org.mockito.*
import javax.inject.Provider
import kotlin.reflect.KClass
fun <T : Any> KClass<T>.isProvidedBy(instance: T) = Module { it.bind(this.java).toProvider(Provider<T> { instance }) }
import org.mockito.*
import javax.inject.Provider
import kotlin.reflect.KClass
fun <T : Any> KClass<T>.isProvidedBy(instance: T) = Module { it.bind(this.java).toProvider(Provider<T> { instance }) }
+fun <T : Any> KClass<T>.withNameIsProvidedBy(instance: T, name: String) = Module { it.bind(this.java).annotatedWith(Names.named(name)).toProvider(Provider<T> { instance }) }
fun <T : Any> KClass<T>.isProvidedBy(provider: com.google.inject.Provider<T>) = Module { it.bind(this.java).toProvider(provider) }
fun <T : Any> KClass<T>.isProvidedBy(provider: KClass<out Provider<T>>) = Module { it.bind(this.java).toProvider(provider.java) }
inline fun <reified T : Any> KClass<T>.isProvidedByMock() = Module { it.bind(this.java).toProvider(Provider<T> { mock() }) }
fun <T : Any> KClass<T>.isProvidedBy(provider: com.google.inject.Provider<T>) = Module { it.bind(this.java).toProvider(provider) }
fun <T : Any> KClass<T>.isProvidedBy(provider: KClass<out Provider<T>>) = Module { it.bind(this.java).toProvider(provider.java) }
inline fun <reified T : Any> KClass<T>.isProvidedByMock() = Module { it.bind(this.java).toProvider(Provider<T> { mock() }) }
diff --git
a/src/test/kotlin/net/pterodactylus/sone/web/WebInterfaceModuleTest.kt
b/src/test/kotlin/net/pterodactylus/sone/web/WebInterfaceModuleTest.kt
index
fc8964a
..
9137da3
100644
(file)
--- a/
src/test/kotlin/net/pterodactylus/sone/web/WebInterfaceModuleTest.kt
+++ b/
src/test/kotlin/net/pterodactylus/sone/web/WebInterfaceModuleTest.kt
@@
-1,6
+1,8
@@
package net.pterodactylus.sone.web
import com.google.inject.Guice.*
package net.pterodactylus.sone.web
import com.google.inject.Guice.*
+import freenet.client.*
+import freenet.clients.http.*
import freenet.l10n.*
import freenet.support.api.*
import net.pterodactylus.sone.core.*
import freenet.l10n.*
import freenet.support.api.*
import net.pterodactylus.sone.core.*
@@
-12,7
+14,9
@@
import net.pterodactylus.sone.main.*
import net.pterodactylus.sone.template.*
import net.pterodactylus.sone.test.*
import net.pterodactylus.sone.text.*
import net.pterodactylus.sone.template.*
import net.pterodactylus.sone.test.*
import net.pterodactylus.sone.text.*
+import net.pterodactylus.sone.web.page.*
import net.pterodactylus.util.template.*
import net.pterodactylus.util.template.*
+import net.pterodactylus.util.web.*
import org.hamcrest.MatcherAssert.*
import org.hamcrest.Matchers.*
import org.junit.*
import org.hamcrest.MatcherAssert.*
import org.hamcrest.Matchers.*
import org.junit.*
@@
-28,7
+32,9
@@
class WebInterfaceModuleTest {
BaseL10n::class.isProvidedBy(l10n),
SoneTextParser::class.isProvidedByMock(),
ElementLoader::class.isProvidedByMock(),
BaseL10n::class.isProvidedBy(l10n),
SoneTextParser::class.isProvidedByMock(),
ElementLoader::class.isProvidedByMock(),
- Loaders::class.isProvidedBy(loaders)
+ Loaders::class.isProvidedBy(loaders),
+ HighLevelSimpleClient::class.isProvidedByMock(),
+ SessionManager::class.isProvidedByMock()
)
private val injector = createInjector(webInterfaceModule, *additionalModules)!!
private val templateContext by lazy { injector.getInstance<TemplateContextFactory>().createTemplateContext()!! }
)
private val injector = createInjector(webInterfaceModule, *additionalModules)!!
private val templateContext by lazy { injector.getInstance<TemplateContextFactory>().createTemplateContext()!! }
@@
-257,4
+263,10
@@
class WebInterfaceModuleTest {
assertThat(templateContext.getTemplate("testTemplate"), sameInstance(template))
}
assertThat(templateContext.getTemplate("testTemplate"), sameInstance(template))
}
+ @Test
+ fun `page toadlet factory is created with correct prefix`() {
+ val page = mock<Page<FreenetRequest>>()
+ assertThat(injector.getInstance<PageToadletFactory>().createPageToadlet(page).path(), startsWith("/Sone/"))
+ }
+
}
}
diff --git
a/src/test/kotlin/net/pterodactylus/sone/web/page/PageToadletFactoryTest.kt
b/src/test/kotlin/net/pterodactylus/sone/web/page/PageToadletFactoryTest.kt
index
c9ecafe
..
7ac8c01
100644
(file)
--- a/
src/test/kotlin/net/pterodactylus/sone/web/page/PageToadletFactoryTest.kt
+++ b/
src/test/kotlin/net/pterodactylus/sone/web/page/PageToadletFactoryTest.kt
@@
-1,8
+1,10
@@
package net.pterodactylus.sone.web.page
package net.pterodactylus.sone.web.page
+import com.google.inject.*
import freenet.client.*
import freenet.clients.http.*
import net.pterodactylus.sone.test.*
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 net.pterodactylus.util.web.*
import org.hamcrest.MatcherAssert.*
import org.hamcrest.Matchers.*
@@
-53,6
+55,16
@@
class PageToadletFactoryTest {
assertThat(pageToadlet.menuName, equalTo("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<PageToadletFactory>(), notNullValue())
+ }
+
}
@MenuName("testName")
}
@MenuName("testName")