diff --git a/feature-settings/build.gradle.kts b/feature-settings/build.gradle.kts index 7e4f065..bc1be46 100644 --- a/feature-settings/build.gradle.kts +++ b/feature-settings/build.gradle.kts @@ -43,4 +43,6 @@ 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..913e59a --- /dev/null +++ b/feature-settings/src/test/java/com/sayanthrock/rockreleasehub/feature/settings/SettingsViewModelTest.kt @@ -0,0 +1,40 @@ +package com.sayanthrock.rockreleasehub.feature.settings + +import org.junit.Assert.assertEquals +import org.junit.Before +import org.junit.Test + +class SettingsViewModelTest { + + private lateinit var viewModel: SettingsViewModel + + @Before + fun setup() { + viewModel = SettingsViewModel() + } + + @Test + fun initialStateIsSuccessWithDarkModeTrue() { + val expectedState = SettingsState.Success(isDarkMode = true) + assertEquals(expectedState, viewModel.uiState.value) + } + + @Test + fun toggleDarkMode_changesDarkModeToFalse() { + // Initial state is true + viewModel.toggleDarkMode() + + val expectedState = SettingsState.Success(isDarkMode = false) + assertEquals(expectedState, viewModel.uiState.value) + } + + @Test + fun toggleDarkMode_twice_changesDarkModeBackToTrue() { + // Initial state is true + viewModel.toggleDarkMode() // to false + viewModel.toggleDarkMode() // back to true + + val expectedState = SettingsState.Success(isDarkMode = true) + assertEquals(expectedState, viewModel.uiState.value) + } +}