From cb705a87c05eef0ac04e426cbeebfb66b9a43c2f Mon Sep 17 00:00:00 2001 From: "Tran M. Cuong" Date: Mon, 17 Jun 2024 20:59:53 +0700 Subject: [PATCH] Fix ApplicationReleaseTest --- .../interactor/GetApplicationRelease.kt | 26 ++-- .../interactor/GetApplicationReleaseTest.kt | 124 ++++++++++-------- 2 files changed, 87 insertions(+), 63 deletions(-) diff --git a/domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt b/domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt index 95030e3d6..b0387dcca 100644 --- a/domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt +++ b/domain/src/main/java/tachiyomi/domain/release/interactor/GetApplicationRelease.kt @@ -37,16 +37,8 @@ class GetApplicationRelease( it.version ) } - val checksumRegex = """---(\R|.)*Checksums(\R|.)*""".toRegex() - val release = releases.firstOrNull() - ?.copy( - info = releases.joinToString("\r---\r") { - "## ${it.version}\r\r" + - it.info.replace(checksumRegex, "") - } - ) - if (release == null) return Result.NoNewUpdate + val latest = releases.getLatest() ?: return Result.NoNewUpdate // KMK <-- lastChecked.set(now.toEpochMilli()) @@ -56,11 +48,11 @@ class GetApplicationRelease( isPreview = arguments.isPreview, commitCount = arguments.commitCount, versionName = arguments.versionName, - versionTag = release.version, + versionTag = latest.version, ) return when { isNewVersion && arguments.isThirdParty -> Result.ThirdPartyInstallation - isNewVersion -> Result.NewUpdate(release) + isNewVersion -> Result.NewUpdate(latest) else -> Result.NoNewUpdate } } @@ -154,3 +146,15 @@ class GetApplicationRelease( data object ThirdPartyInstallation : Result } } + +internal fun List.getLatest(): Release? { + val checksumRegex = """---(\R|.)*Checksums(\R|.)*""".toRegex() + + return firstOrNull() + ?.copy( + info = joinToString("\r---\r") { + "## ${it.version}\r\r" + + it.info.replace(checksumRegex, "") + } + ) +} diff --git a/domain/src/test/java/tachiyomi/domain/release/interactor/GetApplicationReleaseTest.kt b/domain/src/test/java/tachiyomi/domain/release/interactor/GetApplicationReleaseTest.kt index 543e582d0..728dc78ff 100644 --- a/domain/src/test/java/tachiyomi/domain/release/interactor/GetApplicationReleaseTest.kt +++ b/domain/src/test/java/tachiyomi/domain/release/interactor/GetApplicationReleaseTest.kt @@ -35,13 +35,17 @@ class GetApplicationReleaseTest { every { preference.get() } returns 0 every { preference.set(any()) }.answers { } - coEvery { releaseService.latest(any()) } returns Release( - "v2.0.0", - "info", - "http://example.com/release_link", - listOf("http://example.com/assets"), + val releases = listOf( + Release( + "v2.0.0", + "info", + "http://example.com/release_link", + listOf("http://example.com/assets"), + ) ) + coEvery { releaseService.releaseNotes(any()) } returns releases + val result = getApplicationRelease.await( GetApplicationRelease.Arguments( isPreview = false, @@ -60,14 +64,16 @@ class GetApplicationReleaseTest { every { preference.get() } returns 0 every { preference.set(any()) }.answers { } - val release = Release( - "r2000", - "info", - "http://example.com/release_link", - listOf("http://example.com/assets"), + val releases = listOf( + Release( + "r2000", + "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( GetApplicationRelease.Arguments( @@ -80,7 +86,7 @@ class GetApplicationReleaseTest { ) // 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 @@ -88,14 +94,17 @@ class GetApplicationReleaseTest { every { preference.get() } returns 0 every { preference.set(any()) }.answers { } - val release = Release( - "v2.0.0", - "info", - "http://example.com/release_link", - listOf("http://example.com/assets"), - ) + val releases = + listOf( + Release( + "v2.0.0", + "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( GetApplicationRelease.Arguments( @@ -108,7 +117,7 @@ class GetApplicationReleaseTest { ) // 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 @@ -116,14 +125,16 @@ class GetApplicationReleaseTest { every { preference.get() } returns 0 every { preference.set(any()) }.answers { } - val release = Release( - "v1.0.0", - "info", - "http://example.com/release_link", - listOf("http://example.com/assets"), + val releases = listOf( + Release( + "v1.0.0", + "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( GetApplicationRelease.Arguments( @@ -143,14 +154,16 @@ class GetApplicationReleaseTest { every { preference.get() } returns Instant.now().toEpochMilli() every { preference.set(any()) }.answers { } - val release = Release( - "v2.0.0", - "info", - "http://example.com/release_link", - listOf("http://example.com/assets"), + val releases = listOf( + Release( + "v2.0.0", + "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( GetApplicationRelease.Arguments( @@ -163,6 +176,7 @@ class GetApplicationReleaseTest { ) coVerify(exactly = 0) { releaseService.latest(any()) } + coVerify(exactly = 0) { releaseService.releaseNotes(any()) } result shouldBe GetApplicationRelease.Result.NoNewUpdate } @@ -173,14 +187,16 @@ class GetApplicationReleaseTest { every { preference.get() } returns 0 every { preference.set(any()) }.answers { } - val release = Release( - "r1234", - "info", - "http://example.com/release_link", - listOf("http://example.com/assets"), + val releases = listOf( + Release( + "r1234", + "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( GetApplicationRelease.Arguments( @@ -192,7 +208,7 @@ class GetApplicationReleaseTest { ), ) - result shouldBe GetApplicationRelease.Result.NewUpdate(release) + result shouldBe GetApplicationRelease.Result.NewUpdate(releases.getLatest()!!) } @Test @@ -200,14 +216,16 @@ class GetApplicationReleaseTest { every { preference.get() } returns 0 every { preference.set(any()) }.answers { } - val release = Release( - "r1234", - "info", - "http://example.com/release_link", - listOf("http://example.com/assets"), + val releases = listOf( + Release( + "r1234", + "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( GetApplicationRelease.Arguments( @@ -227,14 +245,16 @@ class GetApplicationReleaseTest { every { preference.get() } returns 0 every { preference.set(any()) }.answers { } - val release = Release( - "v2.0.0", - "info", - "http://example.com/release_link", - listOf("http://example.com/assets"), + val releases = listOf( + Release( + "v2.0.0", + "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( GetApplicationRelease.Arguments( @@ -246,7 +266,7 @@ class GetApplicationReleaseTest { ), ) - result shouldBe GetApplicationRelease.Result.NewUpdate(release) + result shouldBe GetApplicationRelease.Result.NewUpdate(releases.getLatest()!!) } // KMK <-- }