from pathlib import Path from unittest.mock import patch import os import tomllib from whisper_local.config import Config, load_config class TestConfigDefaults: def test_default_hotkey(self): config = Config() assert config.hotkey == "KEY_F12" def test_default_whisper_model(self): config = Config() assert config.whisper_model == "small" def test_default_language(self): config = Config() assert config.language == "de" def test_default_compute_type(self): config = Config() assert config.compute_type == "int8" def test_default_sample_rate(self): config = Config() assert config.sample_rate == 16000 def test_default_channels(self): config = Config() assert config.channels == 1 def test_default_min_duration(self): config = Config() assert config.min_duration == 0.5 class TestLoadConfig: def test_load_from_toml(self, tmp_path): config_file = tmp_path / "config.toml" config_file.write_text( '[hotkey]\nkey = "KEY_F8"\n\n' '[whisper]\nmodel = "tiny"\nlanguage = "en"\n' ) config = load_config(config_file) assert config.hotkey == "KEY_F8" assert config.whisper_model == "tiny" assert config.language == "en" # Defaults bleiben erhalten assert config.compute_type == "int8" def test_load_nonexistent_returns_defaults(self, tmp_path): config = load_config(tmp_path / "nope.toml") assert config.hotkey == "KEY_F12" def test_load_empty_file(self, tmp_path): config_file = tmp_path / "config.toml" config_file.write_text("") config = load_config(config_file) assert config.hotkey == "KEY_F12" class TestConfigPath: @patch.dict(os.environ, {"APPDATA": "C:\\Users\\test\\AppData\\Roaming"}) @patch("whisper_local.config.sys") def test_windows_config_path(self, mock_sys): mock_sys.platform = "win32" from whisper_local.config import _default_config_path result = _default_config_path() assert result == Path("C:\\Users\\test\\AppData\\Roaming") / "whisper-local" / "config.toml" @patch("whisper_local.config.sys") def test_linux_config_path(self, mock_sys): mock_sys.platform = "linux" from whisper_local.config import _default_config_path result = _default_config_path() assert result == Path.home() / ".config" / "whisper-local" / "config.toml"