OXYGENHUB
◆ v0.1.2 oxygenhub-android / app / src / test / java / io / oxygenhub / android / update / AppUpdateTest.kt
1.8 KiB · last changed The app says when a later release is out: Account shows its version and a later release's APK to download (closes #7) 8 days ago source blame history raw
1
package io.oxygenhub.android.update
2
3
import io.oxygenhub.android.api.Release
4
import io.oxygenhub.android.api.ReleaseAsset
5
import org.junit.Assert.assertEquals
6
import org.junit.Assert.assertFalse
7
import org.junit.Assert.assertNull
8
import org.junit.Assert.assertTrue
9
import org.junit.Test
10
11
class AppUpdateTest {
12
    @Test
13
    fun versionsCompareAsNumbers() {
14
        assertTrue(isNewer("v0.10.0", "0.9.9"))
15
        assertTrue(isNewer("1.0.0", "0.99.99"))
16
        assertFalse(isNewer("v0.1.0", "0.1.0"))
17
        assertFalse(isNewer("0.1.0", "0.2.0"))
18
        // A pre-release is never offered; a debug build's odd version is always behind.
19
        assertFalse(isNewer("0.2.0-rc1", "0.1.0"))
20
        assertTrue(isNewer("0.1.0", "1.0"))
21
        assertNull(versionOf("1.2"))
22
    }
23
24
    private fun release(tag: String, vararg assets: String, pre: Boolean = false) =
25
        Release(tag = tag, prerelease = pre, url = "/andymccall/oxygenhub-android/release/$tag", assets = assets.map { ReleaseAsset(it, url = "/andymccall/oxygenhub-android/asset/1/$it") })
26
27
    @Test
28
    fun theNewestFullReleaseWithAnApkIsOffered() {
29
        val releases = listOf(
30
            release("v0.1.0", "oxygenhub-android-0.1.0-universal.apk"),
31
            release("v0.3.0", "oxygenhub-android-0.3.0-universal.apk", pre = true),
32
            release("v0.2.0", "oxygenhub-android-0.2.0-universal.apk", "SHA256SUMS"),
33
        )
34
        val u = updateFrom(releases, "0.1.0")!!
35
        assertEquals("0.2.0", u.version)
36
        assertEquals("https://oxygenhub.io/andymccall/oxygenhub-android/asset/1/oxygenhub-android-0.2.0-universal.apk", u.apkUrl)
37
        assertEquals("https://oxygenhub.io/andymccall/oxygenhub-android/release/v0.2.0", u.pageUrl)
38
        assertNull("up to date", updateFrom(releases, "0.2.0"))
39
        assertNull("no APK, no offer", updateFrom(listOf(release("v0.4.0", "SHA256SUMS")), "0.1.0"))
40
    }
41
}