package com.svnlog.web.service; import java.nio.file.Path; import java.util.Map; import java.nio.file.Paths; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; class SettingsServiceTest { @TempDir Path tempDir; @Test void shouldReturnDefaultProviderAndOpenAiDefaults() throws Exception { final OutputFileService outputFileService = new OutputFileService(); outputFileService.setOutputRoot(tempDir.resolve("outputs").toString()); final SettingsService settingsService = new SettingsService(outputFileService, new SvnPresetService()); final Map settings = settingsService.getSettings(); Assertions.assertEquals(SettingsService.PROVIDER_DEEPSEEK, settings.get("provider")); Assertions.assertEquals("http://127.0.0.1:5001/v1", settings.get("openaiBaseUrl")); Assertions.assertEquals("sk-f8b3f43e1fdd4f50b287050f08a6c7ed", settings.get("openaiApiKey")); Assertions.assertEquals("deepseek-v4-flash", settings.get("openaiStageOneModel")); Assertions.assertEquals("deepseek-v4-pro", settings.get("openaiStageTwoModel")); } @Test void shouldUpdateProviderAndOpenAiSettings() throws Exception { final OutputFileService outputFileService = new OutputFileService(); outputFileService.setOutputRoot(tempDir.resolve("outputs").toString()); final SettingsService settingsService = new SettingsService(outputFileService, new SvnPresetService()); final String newOutputDir = tempDir.resolve("custom-output").toString(); settingsService.updateSettings( "sk-deepseek-runtime", SettingsService.PROVIDER_OPENAI_COMPATIBLE, "http://localhost:5001/v1/", "sk-openai-runtime", "deepseek-v4-flash", "deepseek-v4-pro", newOutputDir, "preset-2" ); final Map settings = settingsService.getSettings(); Assertions.assertEquals(SettingsService.PROVIDER_OPENAI_COMPATIBLE, settings.get("provider")); Assertions.assertEquals("http://localhost:5001/v1/", settings.get("openaiBaseUrl")); Assertions.assertEquals("sk-openai-runtime", settings.get("openaiApiKey")); Assertions.assertEquals("deepseek-v4-flash", settings.get("openaiStageOneModel")); Assertions.assertEquals("deepseek-v4-pro", settings.get("openaiStageTwoModel")); Assertions.assertEquals("preset-2", settings.get("defaultSvnPresetId")); Assertions.assertEquals(Paths.get(newOutputDir).toAbsolutePath().normalize().toString(), settings.get("outputDir")); } }