"""Pydantic schemas for Test endpoints.""" import uuid from datetime import datetime from pydantic import BaseModel, ConfigDict from app.models.enums import TestResult, TestState # ── Create ────────────────────────────────────────────────────────── class TestCreate(BaseModel): """Payload for creating a new test.""" technique_id: uuid.UUID name: str description: str | None = None platform: str | None = None procedure_text: str | None = None tool_used: str | None = None # ── Update ────────────────────────────────────────────────────────── class TestUpdate(BaseModel): """Payload for partially updating an existing test. Every field is optional so callers send only what changed.""" name: str | None = None description: str | None = None platform: str | None = None procedure_text: str | None = None tool_used: str | None = None result: TestResult | None = None # ── Read (full) ───────────────────────────────────────────────────── class TestOut(BaseModel): """Complete representation returned by the API.""" id: uuid.UUID technique_id: uuid.UUID name: str description: str | None = None platform: str | None = None procedure_text: str | None = None tool_used: str | None = None execution_date: datetime | None = None created_by: uuid.UUID | None = None result: TestResult | None = None state: TestState = TestState.draft validated_by: uuid.UUID | None = None validated_at: datetime | None = None created_at: datetime | None = None model_config = ConfigDict(from_attributes=True) # ── Validate ──────────────────────────────────────────────────────── class TestValidate(BaseModel): """Payload sent by a reviewer to validate / reject a test.""" result: TestResult comments: str | None = None