✅ Fix tests failing with non-English locales
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 23 Jul 2022 21:57:33 +0000 (23:57 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 23 Jul 2022 21:57:33 +0000 (23:57 +0200)
For most of the tests it was sufficient to use the OverrideLocale TestRule added in the previous commit but in one case the creation of a date formatter needed to be delayed so that it uses the update locale during the test.

src/main/kotlin/net/pterodactylus/sone/web/ajax/GetStatusAjaxPage.kt
src/test/kotlin/net/pterodactylus/sone/template/DurationFormatFilterTest.kt
src/test/kotlin/net/pterodactylus/sone/template/HistogramRendererTest.kt
src/test/kotlin/net/pterodactylus/sone/web/ajax/GetStatusAjaxPageTest.kt
src/test/kotlin/net/pterodactylus/sone/web/ajax/GetTimesAjaxPageTest.kt

index 0b31588..19cd7f9 100644 (file)
@@ -31,8 +31,10 @@ class GetStatusAjaxPage(webInterface: WebInterface, private val elementLoader: E
        @Inject constructor(webInterface: WebInterface, elementLoader: ElementLoader, newElements: NewElements, timeTextConverter: TimeTextConverter, l10nFilter: L10nFilter):
                        this(webInterface, elementLoader, newElements, timeTextConverter, l10nFilter, TimeZone.getDefault())
 
-       private val dateFormatter = SimpleDateFormat("MMM d, yyyy, HH:mm:ss").apply {
-               this.timeZone = timeZone
+       private val dateFormatter by lazy {
+               SimpleDateFormat("MMM d, yyyy, HH:mm:ss").apply {
+                       this.timeZone = timeZone
+               }
        }
 
        override fun createJsonObject(request: FreenetRequest) =
index 0af4a8e..e14b46f 100644 (file)
 
 package net.pterodactylus.sone.template
 
+import net.pterodactylus.sone.test.OverrideLocale
 import org.hamcrest.MatcherAssert.*
 import org.hamcrest.Matchers.*
+import org.junit.Rule
+import java.util.Locale.ENGLISH
 import kotlin.test.*
 
 class DurationFormatFilterTest {
 
        private val filter = DurationFormatFilter()
 
+       @get:Rule
+       val overrideLocale = OverrideLocale(ENGLISH)
+
        @Test
        fun `random object is returned as it is`() {
                val randomObject = Any()
index bc87086..fd6311a 100644 (file)
@@ -19,6 +19,7 @@ package net.pterodactylus.sone.template
 
 import com.codahale.metrics.*
 import net.pterodactylus.sone.freenet.*
+import net.pterodactylus.sone.test.OverrideLocale
 import net.pterodactylus.util.template.*
 import org.hamcrest.MatcherAssert.*
 import org.hamcrest.Matchers.*
@@ -26,12 +27,16 @@ import org.jsoup.*
 import org.jsoup.nodes.*
 import org.junit.*
 import java.util.*
+import java.util.Locale.ENGLISH
 
 /**
  * Unit test for [HistogramRenderer].
  */
 class HistogramRendererTest {
 
+       @get:Rule
+       val overrideLocale = OverrideLocale(ENGLISH)
+
        private val translation = object : Translation {
                override val currentLocale = Locale.ENGLISH
                override fun translate(key: String) = "Metric Name".takeIf { key == "Page.Metrics.TestHistogram.Title" } ?: ""
index 651d839..601ce38 100644 (file)
@@ -7,6 +7,7 @@ import net.pterodactylus.sone.data.Sone.SoneStatus.downloading
 import net.pterodactylus.sone.data.Sone.SoneStatus.inserting
 import net.pterodactylus.sone.freenet.L10nFilter
 import net.pterodactylus.sone.freenet.L10nText
+import net.pterodactylus.sone.test.OverrideLocale
 import net.pterodactylus.sone.test.deepMock
 import net.pterodactylus.sone.test.getInstance
 import net.pterodactylus.sone.test.isProvidedByMock
@@ -26,9 +27,11 @@ import org.hamcrest.Matchers.equalTo
 import org.hamcrest.Matchers.hasEntry
 import org.hamcrest.Matchers.notNullValue
 import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
 import org.mockito.ArgumentMatchers.any
 import org.mockito.ArgumentMatchers.anyLong
+import java.util.Locale.ENGLISH
 import java.util.TimeZone
 
 /**
@@ -36,6 +39,9 @@ import java.util.TimeZone
  */
 class GetStatusAjaxPageTest: JsonPageTest("getStatus.ajax", requiresLogin = false, needsFormPassword = false) {
 
+       @get:Rule
+       val overrideLocale = OverrideLocale(ENGLISH)
+
        private val timeTextConverter = mock<TimeTextConverter>()
        private val l10nFilter = mock<L10nFilter>()
        override var page: JsonPage = GetStatusAjaxPage(webInterface, elementLoader, newElements, timeTextConverter, l10nFilter, TimeZone.getTimeZone("UTC"))
index 62a34d1..2a0773e 100644 (file)
@@ -5,6 +5,7 @@ import net.pterodactylus.sone.data.Post
 import net.pterodactylus.sone.data.PostReply
 import net.pterodactylus.sone.freenet.L10nFilter
 import net.pterodactylus.sone.freenet.L10nText
+import net.pterodactylus.sone.test.OverrideLocale
 import net.pterodactylus.sone.test.get
 import net.pterodactylus.sone.test.getInstance
 import net.pterodactylus.sone.test.isProvidedByMock
@@ -19,9 +20,11 @@ import org.hamcrest.Matchers.containsInAnyOrder
 import org.hamcrest.Matchers.emptyIterable
 import org.hamcrest.Matchers.notNullValue
 import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
 import org.mockito.ArgumentMatchers.any
 import org.mockito.ArgumentMatchers.anyLong
+import java.util.Locale.ENGLISH
 import java.util.TimeZone
 import java.util.TimeZone.getTimeZone
 
@@ -30,6 +33,9 @@ import java.util.TimeZone.getTimeZone
  */
 class GetTimesAjaxPageTest : JsonPageTest("getTimes.ajax", needsFormPassword = false, requiresLogin = false) {
 
+       @get:Rule
+       val overrideLocale = OverrideLocale(ENGLISH)
+
        private val timeTextConverter = mock<TimeTextConverter>()
        private val l10nFilter = mock<L10nFilter>()
        override val page: JsonPage by lazy { GetTimesAjaxPage(webInterface, timeTextConverter, l10nFilter, getTimeZone("UTC")) }