From 2125c18003f4c515a33f2e571b157345e04b5e4e Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 10:40:19 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=A7=AA=20Add=20tests=20for=20ReleaseViewM?= =?UTF-8?q?odel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added JUnit and Coroutines test dependencies to the feature-releases module. Created ReleaseViewModelTest to verify the initial state containing mock releases. Co-authored-by: SayanthRock <202829406+SayanthRock@users.noreply.github.com> --- feature-releases/build.gradle.kts | 3 ++ .../feature/releases/ReleaseViewModelTest.kt | 42 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 feature-releases/src/test/java/com/sayanthrock/rockreleasehub/feature/releases/ReleaseViewModelTest.kt diff --git a/feature-releases/build.gradle.kts b/feature-releases/build.gradle.kts index 5d817d7..bf979e1 100644 --- a/feature-releases/build.gradle.kts +++ b/feature-releases/build.gradle.kts @@ -42,4 +42,7 @@ dependencies { implementation(libs.hilt.android) ksp(libs.hilt.compiler) + + testImplementation(libs.junit) + testImplementation(libs.kotlinx.coroutines.test) } diff --git a/feature-releases/src/test/java/com/sayanthrock/rockreleasehub/feature/releases/ReleaseViewModelTest.kt b/feature-releases/src/test/java/com/sayanthrock/rockreleasehub/feature/releases/ReleaseViewModelTest.kt new file mode 100644 index 0000000..d6ef2b0 --- /dev/null +++ b/feature-releases/src/test/java/com/sayanthrock/rockreleasehub/feature/releases/ReleaseViewModelTest.kt @@ -0,0 +1,42 @@ +package com.sayanthrock.rockreleasehub.feature.releases + +import com.sayanthrock.rockreleasehub.core.model.Release +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.test.resetMain +import kotlinx.coroutines.test.setMain +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Before +import org.junit.Test + +@OptIn(ExperimentalCoroutinesApi::class) +class ReleaseViewModelTest { + + private val testDispatcher = StandardTestDispatcher() + private lateinit var viewModel: ReleaseViewModel + + @Before + fun setup() { + Dispatchers.setMain(testDispatcher) + viewModel = ReleaseViewModel() + } + + @After + fun tearDown() { + Dispatchers.resetMain() + } + + @Test + fun `uiState is initialized with success state containing mock releases`() { + val expectedReleases = listOf( + Release(1, "v1.0.0", "v1.0.0", "Initial Release", "2024-01-01", "2024-01-01", false, false, emptyList()), + Release(2, "v1.1.0-beta", "v1.1.0", "Beta Release", "2024-01-02", "2024-01-02", false, true, emptyList()) + ) + + val currentState = viewModel.uiState.value + + assertEquals(ReleaseState.Success(expectedReleases), currentState) + } +}