test: add ModelViewModel success path test

This commit is contained in:
Hy4ri committed 2026-06-16 18:17:56 +03:00
1 parent 3830236585
commit bfa959ed05
1 file changed
+42
@@ -3,6 +3,7 @@ package com.m57.hermescontrol
import androidx.navigation3.runtime.NavBackStack
import androidx.navigation3.runtime.NavKey
import com.m57.hermescontrol.data.local.AuthManager
import com.m57.hermescontrol.data.model.ActiveProfileResponse
import com.m57.hermescontrol.data.model.CronJob
import com.m57.hermescontrol.data.model.DoctorResponse
import com.m57.hermescontrol.data.model.EnvVarConfig
@@ -13,8 +14,12 @@ import com.m57.hermescontrol.data.model.KanbanColumn
import com.m57.hermescontrol.data.model.KanbanTask
import com.m57.hermescontrol.data.model.LogResponse
import com.m57.hermescontrol.data.model.MessagingPlatform
import com.m57.hermescontrol.data.model.ModelOptionsResponse
import com.m57.hermescontrol.data.model.ModelProvider
import com.m57.hermescontrol.data.model.PluginInfo
import com.m57.hermescontrol.data.model.PluginsHubResponse
import com.m57.hermescontrol.data.model.ProfileInfo
import com.m57.hermescontrol.data.model.ProfilesResponse
import com.m57.hermescontrol.data.model.Skill
import com.m57.hermescontrol.data.model.StatusResponse
import com.m57.hermescontrol.data.model.SystemStatsResponse
@@ -27,6 +32,7 @@ import com.m57.hermescontrol.ui.cron.CronJobsViewModel
import com.m57.hermescontrol.ui.kanban.KanbanViewModel
import com.m57.hermescontrol.ui.keys.KeysViewModel
import com.m57.hermescontrol.ui.logs.LogsViewModel
import com.m57.hermescontrol.ui.model.ModelViewModel
import com.m57.hermescontrol.ui.plugins.PluginsViewModel
import com.m57.hermescontrol.ui.skills.SkillsViewModel
import com.m57.hermescontrol.ui.system.SystemViewModel
@@ -938,4 +944,40 @@ class E2eIntegrationTest {
.status,
)
}
@Test
fun testModelOptionsSelection_success() =
runTest {
val provider = ModelProvider("ollama", "Ollama", false, true, listOf("llama3"), 1, null, true, null, null)
val profile = ProfileInfo("default", null, true, "llama3", "ollama", null, null, null, null)
coEvery { mockApiService.getModelOptions() } returns
Response.success(ModelOptionsResponse(listOf(provider)))
coEvery { mockApiService.getActiveProfile() } returns
Response.success(ActiveProfileResponse("default", null))
coEvery { mockApiService.getProfiles() } returns Response.success(ProfilesResponse(listOf(profile)))
coEvery { mockApiService.updateProfileModel("default", any()) } returns Response.success(Unit)
val viewModel = ModelViewModel()
viewModel.loadModelOptions()
advanceUntilIdle()
assertEquals(1, viewModel.uiState.value.providers.size)
assertEquals(
"default",
viewModel.uiState.value.activeProfile
?.name,
)
assertEquals(
"llama3",
viewModel.uiState.value.activeProfile
?.model,
)
viewModel.selectModel("ollama", "llama3")
advanceUntilIdle()
coVerify { mockApiService.updateProfileModel("default", any()) }
assertEquals("Successfully set model to llama3", viewModel.uiState.value.toastMessage)
}
}