Files
Jarvis-Ai/tests/unit/test_settings.py
T

67 lines
2.2 KiB
Python

import unittest
from pathlib import Path
from javis.config.settings import ConfigurationError, Settings, default_data_dir
class SettingsTests(unittest.TestCase):
def test_windows_default_uses_local_app_data(self) -> None:
result = default_data_dir(
{"LOCALAPPDATA": "C:\\Local"},
platform_name="nt",
home=Path("C:\\Users\\test"),
)
self.assertEqual(result, Path("C:\\Local") / "Javis")
def test_posix_default_uses_xdg_data_home(self) -> None:
result = default_data_dir(
{"XDG_DATA_HOME": "/tmp/data"},
platform_name="posix",
home=Path("/home/test"),
)
self.assertEqual(result, Path("/tmp/data/javis"))
def test_explicit_data_dir_must_be_absolute(self) -> None:
with self.assertRaises(ConfigurationError):
Settings.from_env({"JAVIS_DATA_DIR": "relative"})
def test_provider_url_must_remain_local(self) -> None:
with self.assertRaises(ConfigurationError):
Settings.from_env(
{
"JAVIS_DATA_DIR": str(Path.cwd()),
"JAVIS_OLLAMA_URL": "https://example.com",
}
)
def test_zero_cost_defaults_are_conservative(self) -> None:
settings = Settings.from_env({"JAVIS_DATA_DIR": str(Path.cwd())})
self.assertTrue(settings.free_only)
self.assertFalse(settings.gemini_enabled)
self.assertFalse(settings.billing_confirmed_disabled)
self.assertEqual(settings.gemini_model, "gemini-3.6-flash")
self.assertEqual(settings.provider_mode, "auto")
def test_paid_mode_is_rejected(self) -> None:
with self.assertRaises(ConfigurationError):
Settings.from_env(
{
"JAVIS_DATA_DIR": str(Path.cwd()),
"JAVIS_FREE_ONLY": "false",
}
)
def test_cloud_limits_are_bounded(self) -> None:
with self.assertRaises(ConfigurationError):
Settings.from_env(
{
"JAVIS_DATA_DIR": str(Path.cwd()),
"JAVIS_MAX_CLOUD_REQUESTS_PER_DAY": "1001",
}
)
if __name__ == "__main__":
unittest.main()