@@ -11,6 +11,7 @@ import org.junit.jupiter.api.Test
1111import tachiyomi.core.common.preference.Preference
1212import tachiyomi.core.common.preference.PreferenceStore
1313import tachiyomi.domain.release.model.Release
14+ import tachiyomi.domain.release.model.ReleaseQuality
1415import tachiyomi.domain.release.service.ReleaseService
1516import java.time.Instant
1617
@@ -138,4 +139,170 @@ class GetApplicationReleaseTest {
138139 coVerify(exactly = 0 ) { releaseService.latest(any()) }
139140 result shouldBe GetApplicationRelease .Result .NoNewUpdate
140141 }
142+
143+ @Test
144+ fun `When release quality is STABLE and includePrerelease false expect new update` () = runTest {
145+ every { preference.get() } returns 0
146+ every { preference.set(any()) }.answers { }
147+
148+ val release = Release (
149+ " v2.0.0" ,
150+ " info" ,
151+ " http://example.com/release_link" ,
152+ " http://example.com/release_link.apk" ,
153+ quality = ReleaseQuality .STABLE ,
154+ )
155+
156+ coEvery { releaseService.latest(any()) } returns release
157+
158+ val result = getApplicationRelease.await(
159+ GetApplicationRelease .Arguments (
160+ isPreview = false ,
161+ commitCount = 0 ,
162+ versionName = " v1.0.0" ,
163+ repository = " test" ,
164+ forceCheck = false ,
165+ includePrerelease = false ,
166+ ),
167+ )
168+
169+ (result as GetApplicationRelease .Result .NewUpdate ).release shouldBe release
170+ }
171+
172+ @Test
173+ fun `When release quality is PRERELEASE and includePrerelease false expect no new update` () = runTest {
174+ every { preference.get() } returns 0
175+ every { preference.set(any()) }.answers { }
176+
177+ val release = Release (
178+ " v2.0.0-rc1" ,
179+ " info" ,
180+ " http://example.com/release_link" ,
181+ " http://example.com/release_link.apk" ,
182+ quality = ReleaseQuality .PRERELEASE ,
183+ )
184+
185+ coEvery { releaseService.latest(any()) } returns release
186+
187+ val result = getApplicationRelease.await(
188+ GetApplicationRelease .Arguments (
189+ isPreview = false ,
190+ commitCount = 0 ,
191+ versionName = " v1.0.0" ,
192+ repository = " test" ,
193+ forceCheck = false ,
194+ includePrerelease = false ,
195+ ),
196+ )
197+
198+ result shouldBe GetApplicationRelease .Result .NoNewUpdate
199+ }
200+
201+ @Test
202+ fun `When release quality is PRERELEASE and includePrerelease true expect new update` () = runTest {
203+ every { preference.get() } returns 0
204+ every { preference.set(any()) }.answers { }
205+
206+ val release = Release (
207+ " v2.0.0-rc1" ,
208+ " info" ,
209+ " http://example.com/release_link" ,
210+ " http://example.com/release_link.apk" ,
211+ quality = ReleaseQuality .PRERELEASE ,
212+ )
213+
214+ coEvery { releaseService.latest(any()) } returns release
215+
216+ val result = getApplicationRelease.await(
217+ GetApplicationRelease .Arguments (
218+ isPreview = false ,
219+ commitCount = 0 ,
220+ versionName = " v1.0.0" ,
221+ repository = " test" ,
222+ forceCheck = false ,
223+ includePrerelease = true ,
224+ ),
225+ )
226+
227+ (result as GetApplicationRelease .Result .NewUpdate ).release shouldBe release
228+ }
229+
230+ @Test
231+ fun `When release quality is DRAFT and includePrerelease true expect no new update` () = runTest {
232+ every { preference.get() } returns 0
233+ every { preference.set(any()) }.answers { }
234+
235+ val release = Release (
236+ " v2.0.0" ,
237+ " info" ,
238+ " http://example.com/release_link" ,
239+ " http://example.com/release_link.apk" ,
240+ quality = ReleaseQuality .DRAFT ,
241+ )
242+
243+ coEvery { releaseService.latest(any()) } returns release
244+
245+ val result = getApplicationRelease.await(
246+ GetApplicationRelease .Arguments (
247+ isPreview = false ,
248+ commitCount = 0 ,
249+ versionName = " v1.0.0" ,
250+ repository = " test" ,
251+ forceCheck = false ,
252+ includePrerelease = true ,
253+ ),
254+ )
255+
256+ result shouldBe GetApplicationRelease .Result .NoNewUpdate
257+ }
258+
259+ @Test
260+ fun `When release quality is DEPRECATED and includePrerelease false expect no new update` () = runTest {
261+ every { preference.get() } returns 0
262+ every { preference.set(any()) }.answers { }
263+
264+ val release = Release (
265+ " v2.0.0" ,
266+ " info" ,
267+ " http://example.com/release_link" ,
268+ " http://example.com/release_link.apk" ,
269+ quality = ReleaseQuality .DEPRECATED ,
270+ )
271+
272+ coEvery { releaseService.latest(any()) } returns release
273+
274+ val result = getApplicationRelease.await(
275+ GetApplicationRelease .Arguments (
276+ isPreview = false ,
277+ commitCount = 0 ,
278+ versionName = " v1.0.0" ,
279+ repository = " test" ,
280+ forceCheck = false ,
281+ includePrerelease = false ,
282+ ),
283+ )
284+
285+ result shouldBe GetApplicationRelease .Result .NoNewUpdate
286+ }
287+
288+ @Test
289+ fun `When service returns null expect no new update` () = runTest {
290+ every { preference.get() } returns 0
291+ every { preference.set(any()) }.answers { }
292+
293+ coEvery { releaseService.latest(any()) } returns null
294+
295+ val result = getApplicationRelease.await(
296+ GetApplicationRelease .Arguments (
297+ isPreview = false ,
298+ commitCount = 0 ,
299+ versionName = " v1.0.0" ,
300+ repository = " test" ,
301+ forceCheck = false ,
302+ includePrerelease = false ,
303+ ),
304+ )
305+
306+ result shouldBe GetApplicationRelease .Result .NoNewUpdate
307+ }
141308}
0 commit comments