from pathlib import Path

from didactopus.ocw_skill_agent_demo import (
    evaluate_submission_with_skill,
    load_ocw_skill_context,
    run_ocw_skill_agent_demo,
)


def test_run_ocw_skill_agent_demo(tmp_path: Path) -> None:
    root = Path(__file__).resolve().parents[1]
    payload = run_ocw_skill_agent_demo(
        root / "skills" / "ocw-information-entropy-agent",
        tmp_path,
    )

    assert (tmp_path / "skill_demo.json").exists()
    assert (tmp_path / "skill_demo.md").exists()
    assert payload["study_plan"]["steps"]
    assert payload["study_plan"]["steps"][0]["supporting_lessons"]
    assert "grounding" in payload["explanation"]
    assert payload["explanation"]["grounding"]["supporting_lessons"]
    assert payload["evaluation"]["verdict"] in {"acceptable", "needs_revision"}
    assert payload["output_language"] == "en"
    assert payload["source_language"] == "en"


def test_skill_demo_flags_weak_submission() -> None:
    root = Path(__file__).resolve().parents[1]
    context = load_ocw_skill_context(root / "skills" / "ocw-information-entropy-agent")
    result = evaluate_submission_with_skill(
        context,
        "channel-capacity",
        "Channel capacity is good.",
    )

    assert result["verdict"] == "needs_revision"
    assert result["skill_reference"]["supporting_lessons"]
    assert "Rework the answer" in result["follow_up"]
