♻️ Only hand in L10n to l10n filter
[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.util.template.TemplateContext
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.hamcrest.Matchers.equalTo
10 import org.junit.Before
11 import org.junit.Test
12 import org.mockito.ArgumentMatchers.anyString
13
14 /**
15  * Unit test for [L10nFilter].
16  */
17 class L10nFilterTest {
18
19         private val l10n = mock<BaseL10n>()
20         private val filter = L10nFilter(l10n)
21         private val templateContext = mock<TemplateContext>()
22         private val translations = mutableMapOf<String, String>()
23
24         @Before
25         fun setupL10n() {
26                 whenever(l10n.selectedLanguage).thenReturn(ENGLISH)
27                 whenever(l10n.getString(anyString())).then { translations[it.arguments[0]] }
28         }
29
30         @Test
31         fun `translation without parameters returns translated string`() {
32                 translations["data"] = "translated data"
33                 assertThat(filter.format(templateContext, "data", emptyMap()), equalTo("translated data"))
34         }
35
36         @Test
37         fun `translation with parameters returned translated string`() {
38                 translations["data"] = "translated {0,number} {1}"
39                 assertThat(filter.format(templateContext, "data", mapOf("0" to 4.5, "1" to "data")), equalTo("translated 4.5 data"))
40         }
41
42         @Test
43         fun `filter processes l10n text without parameters correctly`() {
44                 translations["data"] = "translated data"
45                 assertThat(filter.format(templateContext, L10nText("data"), emptyMap()), equalTo("translated data"))
46         }
47
48         @Test
49         fun `filter processes l10n text with parameters correctly`() {
50                 translations["data"] = "translated {0,number} {1}"
51                 assertThat(filter.format(templateContext, L10nText("data", listOf(4.5, "data")), emptyMap()), equalTo("translated 4.5 data"))
52         }
53
54         @Test
55         fun `filter does not replace values if there are no parameters`() {
56                 translations["data"] = "{link}"
57                 assertThat(filter.format(templateContext, "data", emptyMap()), equalTo("{link}"))
58         }
59
60 }