39196c1968add2db766fff81f453360bf809d3ed
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / freenet / L10nFilterTest.kt
1 package net.pterodactylus.sone.freenet
2
3 import freenet.l10n.BaseL10n
4 import freenet.l10n.BaseL10n.LANGUAGE.ENGLISH
5 import net.pterodactylus.sone.test.mock
6 import net.pterodactylus.sone.test.whenever
7 import net.pterodactylus.sone.web.WebInterface
8 import net.pterodactylus.util.template.TemplateContext
9 import org.hamcrest.MatcherAssert.assertThat
10 import org.hamcrest.Matchers.equalTo
11 import org.junit.Before
12 import org.junit.Test
13 import org.mockito.ArgumentMatchers.anyString
14
15 /**
16  * Unit test for [L10nFilter].
17  */
18 class L10nFilterTest {
19
20         private val webInterface = mock<WebInterface>()
21         private val filter = L10nFilter(webInterface)
22         private val templateContext = mock<TemplateContext>()
23         private val l10n = mock<BaseL10n>()
24         private val translations = mutableMapOf<String, String>()
25
26         @Before
27         fun setupWebInterface() {
28                 whenever(webInterface.l10n).thenReturn(l10n)
29         }
30
31         @Before
32         fun setupL10n() {
33                 whenever(l10n.selectedLanguage).thenReturn(ENGLISH)
34                 whenever(l10n.getString(anyString())).then { translations[it.arguments[0]] }
35         }
36
37         @Test
38         fun `translation without parameters returns translated string`() {
39                 translations["data"] = "translated data"
40                 assertThat(filter.format(templateContext, "data", emptyMap()), equalTo("translated data"))
41         }
42
43         @Test
44         fun `translation with parameters returned translated string`() {
45                 translations["data"] = "translated {0,number} {1}"
46                 assertThat(filter.format(templateContext, "data", mapOf("0" to 4.5, "1" to "data")), equalTo("translated 4.5 data"))
47         }
48
49         @Test
50         fun `filter processes l10n text without parameters correctly`() {
51                 translations["data"] = "translated data"
52                 assertThat(filter.format(templateContext, L10nText("data"), emptyMap()), equalTo("translated data"))
53         }
54
55         @Test
56         fun `filter processes l10n text with parameters correctly`() {
57                 translations["data"] = "translated {0,number} {1}"
58                 assertThat(filter.format(templateContext, L10nText("data", listOf(4.5, "data")), emptyMap()), equalTo("translated 4.5 data"))
59         }
60
61         @Test
62         fun `filter does not replace values if there are no parameters`() {
63                 translations["data"] = "{link}"
64                 assertThat(filter.format(templateContext, "data", emptyMap()), equalTo("{link}"));
65         }
66
67 }