- use `runTest` instead of `runBlocking`, where possible - run all Robolectric tests on Api 34 (where we have most users) - some new testcase for `TimestampUtilsTest` - move our only instrumented Android Test, `MigrationsTest`, to unit test so it runs in CI and expand it to test all migrations - upgrade Robolectric - removed truth and espresso as they are no longer needed
78 lines
3.8 KiB
Kotlin
78 lines
3.8 KiB
Kotlin
package com.keylesspalace.tusky.util
|
|
|
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
|
import androidx.test.platform.app.InstrumentationRegistry
|
|
import java.util.Locale
|
|
import kotlin.time.Duration.Companion.days
|
|
import kotlin.time.Duration.Companion.hours
|
|
import kotlin.time.Duration.Companion.minutes
|
|
import kotlin.time.Duration.Companion.seconds
|
|
import org.junit.AfterClass
|
|
import org.junit.Assert.assertEquals
|
|
import org.junit.BeforeClass
|
|
import org.junit.Test
|
|
import org.junit.runner.RunWith
|
|
import org.robolectric.annotation.Config
|
|
|
|
@Config(sdk = [34])
|
|
@RunWith(AndroidJUnit4::class)
|
|
class TimestampUtilsTest {
|
|
|
|
companion object {
|
|
private lateinit var locale: Locale
|
|
|
|
@BeforeClass
|
|
@JvmStatic
|
|
fun beforeClass() {
|
|
locale = Locale.getDefault()
|
|
Locale.setDefault(Locale.ENGLISH)
|
|
}
|
|
|
|
@AfterClass
|
|
@JvmStatic
|
|
fun afterClass() {
|
|
Locale.setDefault(locale)
|
|
}
|
|
}
|
|
|
|
val context = InstrumentationRegistry.getInstrumentation().targetContext
|
|
|
|
@Test
|
|
fun `should return 'now' for small timespans`() {
|
|
assertEquals("now", getRelativeTimeSpanString(context, 0, 300))
|
|
assertEquals("now", getRelativeTimeSpanString(context, 300, 0))
|
|
assertEquals("now", getRelativeTimeSpanString(context, 501, 0))
|
|
assertEquals("now", getRelativeTimeSpanString(context, 0, 999))
|
|
}
|
|
|
|
@Test
|
|
fun `should return 'in --' when then is after now`() {
|
|
assertEquals("in 49s", getRelativeTimeSpanString(context, 49.seconds.inWholeMilliseconds, 0))
|
|
assertEquals("in 34m", getRelativeTimeSpanString(context, 37.minutes.inWholeMilliseconds, 3.minutes.inWholeMilliseconds))
|
|
assertEquals("in 7h", getRelativeTimeSpanString(context, 10.hours.inWholeMilliseconds, 3.hours.inWholeMilliseconds))
|
|
assertEquals("in 10d", getRelativeTimeSpanString(context, 10.days.inWholeMilliseconds, 0))
|
|
assertEquals("in 4y", getRelativeTimeSpanString(context, 800.days.inWholeMilliseconds + (4 * 365).days.inWholeMilliseconds, 800.days.inWholeMilliseconds))
|
|
}
|
|
|
|
@Test
|
|
fun `should return correct timespans`() {
|
|
assertEquals("49s", getRelativeTimeSpanString(context, 0, 49.seconds.inWholeMilliseconds))
|
|
assertEquals("34m", getRelativeTimeSpanString(context, 3.minutes.inWholeMilliseconds, 37.minutes.inWholeMilliseconds))
|
|
assertEquals("7h", getRelativeTimeSpanString(context, 3.hours.inWholeMilliseconds, 10.hours.inWholeMilliseconds))
|
|
assertEquals("10d", getRelativeTimeSpanString(context, 0, 10.days.inWholeMilliseconds))
|
|
assertEquals("4y", getRelativeTimeSpanString(context, 800.days.inWholeMilliseconds, 800.days.inWholeMilliseconds + (4 * 365).days.inWholeMilliseconds))
|
|
}
|
|
|
|
@Test
|
|
fun `should return correct poll duration`() {
|
|
assertEquals("1 second left", formatPollDuration(context, 1.seconds.inWholeMilliseconds, 0))
|
|
assertEquals("49 seconds left", formatPollDuration(context, 49.seconds.inWholeMilliseconds, 0))
|
|
assertEquals("1 minute left", formatPollDuration(context, 37.minutes.inWholeMilliseconds, 36.minutes.inWholeMilliseconds))
|
|
assertEquals("34 minutes left", formatPollDuration(context, 37.minutes.inWholeMilliseconds, 3.minutes.inWholeMilliseconds))
|
|
assertEquals("1 hour left", formatPollDuration(context, 10.hours.inWholeMilliseconds, 9.hours.inWholeMilliseconds))
|
|
assertEquals("7 hours left", formatPollDuration(context, 10.hours.inWholeMilliseconds, 3.hours.inWholeMilliseconds))
|
|
assertEquals("1 day left", formatPollDuration(context, 1.days.inWholeMilliseconds, 0))
|
|
assertEquals("10 days left", formatPollDuration(context, 10.days.inWholeMilliseconds, 0))
|
|
assertEquals("1460 days left", formatPollDuration(context, 800.days.inWholeMilliseconds + (4 * 365).days.inWholeMilliseconds, 800.days.inWholeMilliseconds))
|
|
}
|
|
}
|