package net.pterodactylus.sone.web
import com.google.inject.Guice.*
-import freenet.l10n.*
+import freenet.client.*
+import freenet.clients.http.*
import freenet.support.api.*
import net.pterodactylus.sone.core.*
import net.pterodactylus.sone.data.*
import net.pterodactylus.sone.template.*
import net.pterodactylus.sone.test.*
import net.pterodactylus.sone.text.*
+import net.pterodactylus.sone.web.notification.*
+import net.pterodactylus.sone.web.page.*
+import net.pterodactylus.util.notify.*
import net.pterodactylus.util.template.*
+import net.pterodactylus.util.web.*
import org.hamcrest.MatcherAssert.*
import org.hamcrest.Matchers.*
-import org.junit.*
+import java.util.*
+import kotlin.test.*
class WebInterfaceModuleTest {
private val webInterfaceModule = WebInterfaceModule()
- private val l10n = mock<BaseL10n>()
private val loaders = mock<Loaders>()
+ private val translation = object : Translation {
+ override val currentLocale = Locale.ENGLISH
+ override fun translate(key: String) = if (key == "View.Sone.Text.UnknownDate") "unknown" else key
+ }
private val additionalModules = arrayOf(
Core::class.isProvidedByMock(),
SoneProvider::class.isProvidedByMock(),
- BaseL10n::class.isProvidedBy(l10n),
+ Translation::class.isProvidedBy(translation),
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()!! }
@Test
fun `unknown date filter uses correct l10n key`() {
- whenever(l10n.getString("View.Sone.Text.UnknownDate")).thenReturn("unknown")
assertThat(getFilter("unknown")!!.format(null, 0L, emptyMap()), equalTo<Any>("unknown"))
}
}
@Test
+ fun `template context contains duration format filter`() {
+ verifyFilter<DurationFormatFilter>("duration")
+ }
+
+ @Test
fun `template context contains collection sort filter`() {
verifyFilter<CollectionSortFilter>("sort")
}
verifyFilter<PaginationFilter>("paginate")
}
+ @Test
+ fun `template context histogram renderer`() {
+ verifyFilter<HistogramRenderer>("render-histogram")
+ }
+
private inline fun <reified F : Filter> verifyFilter(name: String) {
assertThat(getFilter(name), instanceOf(F::class.java))
}
@Test
fun `template context factory is created as singleton`() {
- val factory1 = injector.getInstance<TemplateContextFactory>()
- val factory2 = injector.getInstance<TemplateContextFactory>()
- assertThat(factory1, sameInstance(factory2))
+ injector.verifySingletonInstance<TemplateContextFactory>()
}
@Test
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/"))
+ }
+
+ @Test
+ fun `notification manager is created as singleton`() {
+ injector.verifySingletonInstance<NotificationManager>()
+ }
+
}