from fastapi.testclient import TestClient
from sqlmodel import Session

from app.core.config import get_settings
from app.db.session import init_db, reset_db_for_tests
from app.main import app
from app.models.core import VideoAsset


def test_thumbnail_placeholder_for_empty_file_path(tmp_path):
    settings = get_settings()
    settings.database_url = "sqlite://"
    settings.storage_root = tmp_path / "storage"
    engine = init_db(settings)
    reset_db_for_tests(engine)
    with Session(engine) as session:
        video = VideoAsset(
            candidate_id="analytics-import-no-file",
            source="analytics_import",
            file_path="",
            checksum="analytics-import-no-file",
            working_title="Analytics Import No File",
        )
        session.add(video)
        session.commit()
        session.refresh(video)
        video_id = video.id

    client = TestClient(app)
    response = client.get(f"/api/videos/{video_id}/thumbnail")
    assert response.status_code == 200
    assert response.headers["content-type"].startswith("image/svg+xml")
    assert "Analytics Import No File" in response.text


def test_media_rejects_empty_file_path(tmp_path):
    settings = get_settings()
    settings.database_url = "sqlite://"
    settings.storage_root = tmp_path / "storage"
    engine = init_db(settings)
    reset_db_for_tests(engine)
    with Session(engine) as session:
        video = VideoAsset(
            candidate_id="analytics-import-no-media",
            source="analytics_import",
            file_path="",
            checksum="analytics-import-no-media",
            working_title="Analytics Import No Media",
        )
        session.add(video)
        session.commit()
        session.refresh(video)
        video_id = video.id

    client = TestClient(app)
    response = client.get(f"/api/videos/{video_id}/media")
    assert response.status_code == 404
    assert response.json()["detail"] == "Video file missing"
