diff --git a/feature-settings/build.gradle.kts b/feature-settings/build.gradle.kts index 7e4f065..f612014 100644 --- a/feature-settings/build.gradle.kts +++ b/feature-settings/build.gradle.kts @@ -43,4 +43,7 @@ dependencies { implementation(libs.hilt.android) ksp(libs.hilt.compiler) + + testImplementation(libs.junit) + testImplementation(libs.kotlinx.coroutines.test) } diff --git a/feature-settings/src/test/java/com/sayanthrock/rockreleasehub/feature/settings/SettingsViewModelTest.kt b/feature-settings/src/test/java/com/sayanthrock/rockreleasehub/feature/settings/SettingsViewModelTest.kt new file mode 100644 index 0000000..44a091b --- /dev/null +++ b/feature-settings/src/test/java/com/sayanthrock/rockreleasehub/feature/settings/SettingsViewModelTest.kt @@ -0,0 +1,42 @@ +package com.sayanthrock.rockreleasehub.feature.settings + +import org.junit.Assert.assertEquals +import org.junit.Test + +class SettingsViewModelTest { + + @Test + fun `initial state is Success with isDarkMode true`() { + val viewModel = SettingsViewModel() + val currentState = viewModel.uiState.value + + assertEquals(SettingsState.Success(isDarkMode = true), currentState) + } + + @Test + fun `toggleDarkMode changes isDarkMode from true to false`() { + val viewModel = SettingsViewModel() + + // Initial state is true + assertEquals(SettingsState.Success(isDarkMode = true), viewModel.uiState.value) + + // Toggle + viewModel.toggleDarkMode() + + // State should now be false + assertEquals(SettingsState.Success(isDarkMode = false), viewModel.uiState.value) + } + + @Test + fun `toggleDarkMode changes isDarkMode from false to true`() { + val viewModel = SettingsViewModel() + + // Toggle to false + viewModel.toggleDarkMode() + assertEquals(SettingsState.Success(isDarkMode = false), viewModel.uiState.value) + + // Toggle back to true + viewModel.toggleDarkMode() + assertEquals(SettingsState.Success(isDarkMode = true), viewModel.uiState.value) + } +}