From f1b651f80247d2b7938abb5cb4436789c61facfd Mon Sep 17 00:00:00 2001 From: M57 <41645758+Hy4ri@users.noreply.github.com> Date: Thu, 9 Jul 2026 21:06:19 +0300 Subject: [PATCH] test(#517): add AuthLoginViewModel state-update unit tests (rebase onto main) (#517) --- .../ui/authlogin/AuthLoginViewModelTest.kt | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 app/src/test/java/com/m57/hermescontrol/ui/authlogin/AuthLoginViewModelTest.kt diff --git a/app/src/test/java/com/m57/hermescontrol/ui/authlogin/AuthLoginViewModelTest.kt b/app/src/test/java/com/m57/hermescontrol/ui/authlogin/AuthLoginViewModelTest.kt new file mode 100644 index 00000000..6ebc4172 --- /dev/null +++ b/app/src/test/java/com/m57/hermescontrol/ui/authlogin/AuthLoginViewModelTest.kt @@ -0,0 +1,69 @@ +package com.m57.hermescontrol.ui.authlogin + +import android.app.Application +import com.m57.hermescontrol.data.local.AuthManager +import com.m57.hermescontrol.data.remote.OkHttpProvider +import io.mockk.every +import io.mockk.mockk +import io.mockk.mockkObject +import io.mockk.unmockkAll +import okhttp3.OkHttpClient +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertNull +import org.junit.Before +import org.junit.Test + +class AuthLoginViewModelTest { + private lateinit var viewModel: AuthLoginViewModel + private val app = mockk(relaxed = true) + + @Before + fun setup() { + mockkObject(AuthManager) + every { AuthManager.getHost() } returns "localhost" + every { AuthManager.getPort() } returns 9119 + every { AuthManager.getConnectionProfiles() } returns emptyList() + + mockkObject(OkHttpProvider) + every { OkHttpProvider.probe } returns mockk(relaxed = true) + + viewModel = AuthLoginViewModel(app) + } + + @After + fun teardown() { + unmockkAll() + } + + @Test + fun `onHostChange updates host and clears error and auth mode`() { + viewModel.onHostChange(" 192.168.1.100 ") + + val state = viewModel.uiState.value + assertEquals("192.168.1.100", state.host) + assertNull(state.errorMessage) + assertNull(state.authMode) + } + + @Test + fun `onPortChange updates port keeping only digits and clears error and auth mode`() { + viewModel.onPortChange("9a1b1c9") + + val state = viewModel.uiState.value + assertEquals("9119", state.port) + assertNull(state.errorMessage) + assertNull(state.authMode) + } + + @Test + fun `clearConnectionState resets connectionSuccess errorMessage and isLoading`() { + viewModel.clearConnectionState() + + val state = viewModel.uiState.value + assertFalse(state.connectionSuccess) + assertFalse(state.isLoading) + assertNull(state.errorMessage) + } +}