import pytest

from app.generation.sse_formatter import format_sse
from app.models.sse import SSEStartPayload, SSETokenPayload


def test_format_sse_event_and_json():
    payload = SSEStartPayload(
        request_id="req_abc",
        repo_id="ad/example.com",
        snapshot_id="snap_1",
        intent="code_lookup",
    )
    frame = format_sse("start", payload)
    assert frame.startswith("event: start\n")
    assert "data: {" in frame
    assert '"request_id":"req_abc"' in frame.replace(" ", "")
    assert frame.endswith("\n\n")


def test_format_sse_token_delta():
    frame = format_sse("token", SSETokenPayload(delta="hello"))
    assert "event: token" in frame
    assert '"delta":"hello"' in frame.replace(" ", "")
