Add test for get translation ajax page
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Thu, 14 Sep 2017 17:11:40 +0000 (19:11 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Thu, 14 Sep 2017 17:11:40 +0000 (19:11 +0200)
src/test/kotlin/net/pterodactylus/sone/web/ajax/GetTranslationPageTest.kt [new file with mode: 0644]
src/test/kotlin/net/pterodactylus/sone/web/ajax/JsonPageTest.kt

diff --git a/src/test/kotlin/net/pterodactylus/sone/web/ajax/GetTranslationPageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/ajax/GetTranslationPageTest.kt
new file mode 100644 (file)
index 0000000..f520977
--- /dev/null
@@ -0,0 +1,20 @@
+package net.pterodactylus.sone.web.ajax
+
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.equalTo
+import org.junit.Test
+
+/**
+ * Unit test for [GetTranslationPage].
+ */
+class GetTranslationPageTest : JsonPageTest("getTranslation.ajax", requiresLogin = false, needsFormPassword = false, pageSupplier = ::GetTranslationPage) {
+
+       @Test
+       fun `translation is returned correctly`() {
+               addTranslation("foo", "bar")
+               addRequestParameter("key", "foo")
+               assertThat(json.isSuccess, equalTo(true))
+               assertThat(json["value"].asText(), equalTo("bar"))
+       }
+
+}
index fed8784..c950a31 100644 (file)
@@ -2,6 +2,7 @@ package net.pterodactylus.sone.web.ajax
 
 import com.google.common.eventbus.EventBus
 import freenet.clients.http.ToadletContext
+import freenet.l10n.BaseL10n
 import freenet.support.SimpleReadOnlyArrayBucket
 import freenet.support.api.HTTPRequest
 import net.pterodactylus.sone.core.Core
@@ -51,6 +52,7 @@ abstract class JsonPageTest(
                pageSupplier: (WebInterface) -> JsonPage = { _ -> mock<JsonPage>() }) {
 
        protected val webInterface = mock<WebInterface>()
+       protected val l10n = mock<BaseL10n>()
        protected val core = mock<Core>()
        protected val eventBus = mock<EventBus>()
        protected val preferences = Preferences(eventBus)
@@ -80,6 +82,7 @@ abstract class JsonPageTest(
        private val notifications = mutableMapOf<String, Notification>()
        private val albums = mutableMapOf<String, Album>()
        private val images = mutableMapOf<String, Image>()
+       private val translations = mutableMapOf<String, String>()
 
        @Before
        fun setupWebInterface() {
@@ -92,6 +95,12 @@ abstract class JsonPageTest(
                whenever(webInterface.getNotification(anyString())).then { notifications[it[0]].asOptional() }
                whenever(webInterface.getNewPosts(currentSone)).thenAnswer { newPosts.values }
                whenever(webInterface.getNewReplies(currentSone)).thenAnswer { newReplies.values }
+               whenever(webInterface.l10n).thenReturn(l10n)
+       }
+
+       @Before
+       fun setupTranslations() {
+               whenever(l10n.getString(anyString())).then { translations[it[0]] }
        }
 
        @Before
@@ -241,6 +250,10 @@ abstract class JsonPageTest(
                images[imageId ?: image.id] = image
        }
 
+       protected fun addTranslation(key: String, value: String) {
+               translations[key] = value
+       }
+
        @Test
        fun `page returns correct path`() {
                assertThat(page.path, equalTo(expectedPath))