import json
from dual_agent.adapters.parse import parse_codex_stream, parse_claude_output
from dual_agent.domain import PlanArtifact


def test_valid_plan_with_diagnostic_words_is_a_success():
    plan = {"schema_version": 1, "goal": "Test 401 credentials network and quota exceeded handling", "acceptance_criteria": ["401 when unauthorized"]}
    assert parse_codex_stream("", PlanArtifact, json.dumps(plan)).status == "SUCCESS"
    assert parse_claude_output(json.dumps({"structured_output": json.dumps(plan)}), PlanArtifact).status == "SUCCESS"


def test_invalid_artifact_is_protocol_but_plain_quota_error_stays_quota():
    assert parse_codex_stream("", PlanArtifact, '{"goal":"401 credentials"}').status == "PROTOCOL"
    assert parse_codex_stream("", PlanArtifact, "Your workspace is out of credits").status == "QUOTA"
