from __future__ import annotations from adam.models import ExecutionPlan, Job, JobStatus, PlanStep from adam.commands import TrainingCommand def test_job_round_trip_preserves_enums_and_plan() -> None: job = Job( plan=ExecutionPlan( request="Check GPU", summary="Inspect resources", steps=[ PlanStep( "system_monitor", "Inspect system", "Read local sensors", {"project_name": "System check"}, ) ], ), status=JobStatus.FINISHED, progress=100, preview_path="D:/runs/preview_epoch_5.png", preview_epoch=5, preview_next_epoch=10, preview_prompt="test prompt", preview_seed=42, preview_steps=30, ) restored = Job.from_dict(job.to_dict()) assert restored.status == JobStatus.FINISHED assert restored.plan.steps[0].tool_id == "system_monitor" assert restored.progress == 100 assert restored.preview_path == "D:/runs/preview_epoch_5.png" assert restored.preview_epoch == 5 assert restored.preview_next_epoch == 10 assert restored.preview_prompt == "test prompt" assert restored.preview_seed == 42 assert restored.preview_steps == 30 def test_training_command_accepts_live_preview_options() -> None: command = TrainingCommand.from_dict({ "trainer": "ddpm", "dataset": "D:/data", "model_name": "Test", "epochs": 10, "training_options": { "preview_enabled": True, "preview_every": 3, "preview_prompt": "a test subject", "preview_seed": 123456789, }, }) assert command.training_options["preview_every"] == 3