Fix ApplicationReleaseTest

This commit is contained in:
Tran M. Cuong 2024-06-17 20:59:53 +07:00
parent fbc1e3b227
commit cb705a87c0
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
2 changed files with 87 additions and 63 deletions

View file

@ -37,16 +37,8 @@ class GetApplicationRelease(
it.version it.version
) )
} }
val checksumRegex = """---(\R|.)*Checksums(\R|.)*""".toRegex()
val release = releases.firstOrNull() val latest = releases.getLatest() ?: return Result.NoNewUpdate
?.copy(
info = releases.joinToString("\r---\r") {
"## ${it.version}\r\r" +
it.info.replace(checksumRegex, "")
}
)
if (release == null) return Result.NoNewUpdate
// KMK <-- // KMK <--
lastChecked.set(now.toEpochMilli()) lastChecked.set(now.toEpochMilli())
@ -56,11 +48,11 @@ class GetApplicationRelease(
isPreview = arguments.isPreview, isPreview = arguments.isPreview,
commitCount = arguments.commitCount, commitCount = arguments.commitCount,
versionName = arguments.versionName, versionName = arguments.versionName,
versionTag = release.version, versionTag = latest.version,
) )
return when { return when {
isNewVersion && arguments.isThirdParty -> Result.ThirdPartyInstallation isNewVersion && arguments.isThirdParty -> Result.ThirdPartyInstallation
isNewVersion -> Result.NewUpdate(release) isNewVersion -> Result.NewUpdate(latest)
else -> Result.NoNewUpdate else -> Result.NoNewUpdate
} }
} }
@ -154,3 +146,15 @@ class GetApplicationRelease(
data object ThirdPartyInstallation : Result data object ThirdPartyInstallation : Result
} }
} }
internal fun List<Release>.getLatest(): Release? {
val checksumRegex = """---(\R|.)*Checksums(\R|.)*""".toRegex()
return firstOrNull()
?.copy(
info = joinToString("\r---\r") {
"## ${it.version}\r\r" +
it.info.replace(checksumRegex, "")
}
)
}

View file

@ -35,13 +35,17 @@ class GetApplicationReleaseTest {
every { preference.get() } returns 0 every { preference.get() } returns 0
every { preference.set(any()) }.answers { } every { preference.set(any()) }.answers { }
coEvery { releaseService.latest(any()) } returns Release( val releases = listOf(
"v2.0.0", Release(
"info", "v2.0.0",
"http://example.com/release_link", "info",
listOf("http://example.com/assets"), "http://example.com/release_link",
listOf("http://example.com/assets"),
)
) )
coEvery { releaseService.releaseNotes(any()) } returns releases
val result = getApplicationRelease.await( val result = getApplicationRelease.await(
GetApplicationRelease.Arguments( GetApplicationRelease.Arguments(
isPreview = false, isPreview = false,
@ -60,14 +64,16 @@ class GetApplicationReleaseTest {
every { preference.get() } returns 0 every { preference.get() } returns 0
every { preference.set(any()) }.answers { } every { preference.set(any()) }.answers { }
val release = Release( val releases = listOf(
"r2000", Release(
"info", "r2000",
"http://example.com/release_link", "info",
listOf("http://example.com/assets"), "http://example.com/release_link",
listOf("http://example.com/assets"),
)
) )
coEvery { releaseService.latest(any()) } returns release coEvery { releaseService.releaseNotes(any()) } returns releases
val result = getApplicationRelease.await( val result = getApplicationRelease.await(
GetApplicationRelease.Arguments( GetApplicationRelease.Arguments(
@ -80,7 +86,7 @@ class GetApplicationReleaseTest {
) )
// KMK: Don't cast, will throw exception if the result is different from expected // KMK: Don't cast, will throw exception if the result is different from expected
result shouldBe GetApplicationRelease.Result.NewUpdate(release) result shouldBe GetApplicationRelease.Result.NewUpdate(releases.getLatest()!!)
} }
@Test @Test
@ -88,14 +94,17 @@ class GetApplicationReleaseTest {
every { preference.get() } returns 0 every { preference.get() } returns 0
every { preference.set(any()) }.answers { } every { preference.set(any()) }.answers { }
val release = Release( val releases =
"v2.0.0", listOf(
"info", Release(
"http://example.com/release_link", "v2.0.0",
listOf("http://example.com/assets"), "info",
) "http://example.com/release_link",
listOf("http://example.com/assets"),
)
)
coEvery { releaseService.latest(any()) } returns release coEvery { releaseService.releaseNotes(any()) } returns releases
val result = getApplicationRelease.await( val result = getApplicationRelease.await(
GetApplicationRelease.Arguments( GetApplicationRelease.Arguments(
@ -108,7 +117,7 @@ class GetApplicationReleaseTest {
) )
// KMK: Don't cast, will throw exception if the result is different from expected // KMK: Don't cast, will throw exception if the result is different from expected
result shouldBe GetApplicationRelease.Result.NewUpdate(release) result shouldBe GetApplicationRelease.Result.NewUpdate(releases.getLatest()!!)
} }
@Test @Test
@ -116,14 +125,16 @@ class GetApplicationReleaseTest {
every { preference.get() } returns 0 every { preference.get() } returns 0
every { preference.set(any()) }.answers { } every { preference.set(any()) }.answers { }
val release = Release( val releases = listOf(
"v1.0.0", Release(
"info", "v1.0.0",
"http://example.com/release_link", "info",
listOf("http://example.com/assets"), "http://example.com/release_link",
listOf("http://example.com/assets"),
)
) )
coEvery { releaseService.latest(any()) } returns release coEvery { releaseService.releaseNotes(any()) } returns releases
val result = getApplicationRelease.await( val result = getApplicationRelease.await(
GetApplicationRelease.Arguments( GetApplicationRelease.Arguments(
@ -143,14 +154,16 @@ class GetApplicationReleaseTest {
every { preference.get() } returns Instant.now().toEpochMilli() every { preference.get() } returns Instant.now().toEpochMilli()
every { preference.set(any()) }.answers { } every { preference.set(any()) }.answers { }
val release = Release( val releases = listOf(
"v2.0.0", Release(
"info", "v2.0.0",
"http://example.com/release_link", "info",
listOf("http://example.com/assets"), "http://example.com/release_link",
listOf("http://example.com/assets"),
)
) )
coEvery { releaseService.latest(any()) } returns release coEvery { releaseService.releaseNotes(any()) } returns releases
val result = getApplicationRelease.await( val result = getApplicationRelease.await(
GetApplicationRelease.Arguments( GetApplicationRelease.Arguments(
@ -163,6 +176,7 @@ class GetApplicationReleaseTest {
) )
coVerify(exactly = 0) { releaseService.latest(any()) } coVerify(exactly = 0) { releaseService.latest(any()) }
coVerify(exactly = 0) { releaseService.releaseNotes(any()) }
result shouldBe GetApplicationRelease.Result.NoNewUpdate result shouldBe GetApplicationRelease.Result.NoNewUpdate
} }
@ -173,14 +187,16 @@ class GetApplicationReleaseTest {
every { preference.get() } returns 0 every { preference.get() } returns 0
every { preference.set(any()) }.answers { } every { preference.set(any()) }.answers { }
val release = Release( val releases = listOf(
"r1234", Release(
"info", "r1234",
"http://example.com/release_link", "info",
listOf("http://example.com/assets"), "http://example.com/release_link",
listOf("http://example.com/assets"),
)
) )
coEvery { releaseService.latest(any()) } returns release coEvery { releaseService.releaseNotes(any()) } returns releases
val result = getApplicationRelease.await( val result = getApplicationRelease.await(
GetApplicationRelease.Arguments( GetApplicationRelease.Arguments(
@ -192,7 +208,7 @@ class GetApplicationReleaseTest {
), ),
) )
result shouldBe GetApplicationRelease.Result.NewUpdate(release) result shouldBe GetApplicationRelease.Result.NewUpdate(releases.getLatest()!!)
} }
@Test @Test
@ -200,14 +216,16 @@ class GetApplicationReleaseTest {
every { preference.get() } returns 0 every { preference.get() } returns 0
every { preference.set(any()) }.answers { } every { preference.set(any()) }.answers { }
val release = Release( val releases = listOf(
"r1234", Release(
"info", "r1234",
"http://example.com/release_link", "info",
listOf("http://example.com/assets"), "http://example.com/release_link",
listOf("http://example.com/assets"),
)
) )
coEvery { releaseService.latest(any()) } returns release coEvery { releaseService.releaseNotes(any()) } returns releases
val result = getApplicationRelease.await( val result = getApplicationRelease.await(
GetApplicationRelease.Arguments( GetApplicationRelease.Arguments(
@ -227,14 +245,16 @@ class GetApplicationReleaseTest {
every { preference.get() } returns 0 every { preference.get() } returns 0
every { preference.set(any()) }.answers { } every { preference.set(any()) }.answers { }
val release = Release( val releases = listOf(
"v2.0.0", Release(
"info", "v2.0.0",
"http://example.com/release_link", "info",
listOf("http://example.com/assets"), "http://example.com/release_link",
listOf("http://example.com/assets"),
)
) )
coEvery { releaseService.latest(any()) } returns release coEvery { releaseService.releaseNotes(any()) } returns releases
val result = getApplicationRelease.await( val result = getApplicationRelease.await(
GetApplicationRelease.Arguments( GetApplicationRelease.Arguments(
@ -246,7 +266,7 @@ class GetApplicationReleaseTest {
), ),
) )
result shouldBe GetApplicationRelease.Result.NewUpdate(release) result shouldBe GetApplicationRelease.Result.NewUpdate(releases.getLatest()!!)
} }
// KMK <-- // KMK <--
} }