"""Tests for Pydantic models.""" from src.models import CommandResult, DeviceInfo, ScreenshotResult class TestCommandResult: def test_success(self): r = CommandResult(success=True, stdout="ok", stderr="", returncode=0) assert r.success is True assert r.returncode == 0 def test_failure(self): r = CommandResult(success=False, stdout="", stderr="err", returncode=1) assert r.success is False assert r.stderr == "err" def test_defaults(self): r = CommandResult(success=True, returncode=0) assert r.stdout == "" assert r.stderr == "" def test_model_copy(self): r = CommandResult(success=True, stdout="ok", stderr="", returncode=0) r2 = r.model_copy(update={"success": False, "stderr": "changed"}) assert r2.success is False assert r2.stderr == "changed" assert r.success is True # original unchanged class TestDeviceInfo: def test_basic(self): d = DeviceInfo(device_id="ABC123", status="device") assert d.device_id == "ABC123" assert d.model is None def test_full(self): d = DeviceInfo( device_id="ABC123", status="device", model="Pixel_6", product="oriole", ) assert d.model == "Pixel_6" dump = d.model_dump() assert dump["product"] == "oriole" class TestScreenshotResult: def test_success(self): r = ScreenshotResult(success=True, local_path="/tmp/shot.png") assert r.local_path == "/tmp/shot.png" def test_failure(self): r = ScreenshotResult(success=False, error="No device") assert r.error == "No device" assert r.local_path is None