"""Tests for config writer.""" import tomllib from pathlib import Path from vigilar.config import CameraConfig, VigilarConfig from vigilar.config_writer import ( save_config, update_camera_config, update_config_section, ) def test_update_config_section(): cfg = VigilarConfig() assert cfg.system.timezone == "UTC" new_cfg = update_config_section(cfg, "system", {"timezone": "America/New_York"}) assert new_cfg.system.timezone == "America/New_York" # Original unchanged assert cfg.system.timezone == "UTC" def test_update_camera_config(): cfg = VigilarConfig(cameras=[ CameraConfig(id="cam1", display_name="Cam 1", rtsp_url="rtsp://a"), ]) assert cfg.cameras[0].motion_sensitivity == 0.7 new_cfg = update_camera_config(cfg, "cam1", {"motion_sensitivity": 0.9}) assert new_cfg.cameras[0].motion_sensitivity == 0.9 def test_save_and_reload(tmp_path): cfg = VigilarConfig(cameras=[ CameraConfig(id="test", display_name="Test Cam", rtsp_url="rtsp://localhost"), ]) path = tmp_path / "test.toml" save_config(cfg, path) assert path.exists() with open(path, "rb") as f: data = tomllib.load(f) assert data["system"]["name"] == "Vigilar Home Security" assert len(data["cameras"]) == 1 assert data["cameras"][0]["id"] == "test" def test_save_creates_backup(tmp_path): path = tmp_path / "test.toml" cfg = VigilarConfig() # First save save_config(cfg, path) assert path.exists() # Second save should create backup save_config(cfg, path) backups = list(tmp_path.glob("*.bak.*")) assert len(backups) == 1