import json
from pathlib import Path

from app.core.config import Settings
from app.db.session import init_db, reset_db_for_tests
from app.services.importers.jarvis import JarvisManifestImporter


def test_jarvis_manifest_import_creates_video_and_drafts(tmp_path: Path):
    settings = Settings(database_url="sqlite://", storage_root=tmp_path / "storage", secret_key="test")
    engine = init_db(settings)
    reset_db_for_tests(engine)
    incoming = settings.storage_root / "incoming" / "candidate_001"
    incoming.mkdir(parents=True)
    video = incoming / "video.mp4"
    video.write_bytes(b"fake-video-bytes")
    (incoming / "manifest.json").write_text(json.dumps({
        "candidate_id": "candidate_001",
        "source": "jarvis_auto",
        "project": "AutoShortsBot",
        "language": "de",
        "theme_key": "ai_money_hooks",
        "content_pillar": "AI Tools",
        "working_title": "3 AI Tools",
        "hook": "Die meisten nutzen ChatGPT falsch...",
        "script": "Full script here...",
        "transcript": "Transcript here...",
        "suggested_tiktok_caption": "Caption #ki",
        "suggested_youtube_title": "YT Title",
        "suggested_youtube_description": "YT Description",
        "suggested_hashtags": ["#ki"],
        "youtube_tags": ["AI Tools"],
        "is_aigc": True,
        "commercial_disclosure": {"promotes_own_brand": False, "promotes_third_party": False},
        "quality_score": 82,
        "hook_score": 77,
        "created_by": "jarvis",
        "created_at": "2026-06-06T15:00:00+02:00"
    }), encoding="utf-8")

    result = JarvisManifestImporter(settings=settings, engine=engine).scan_once()

    assert result.imported == 1
    assert result.failed == 0
    assert len(result.video_ids) == 1
    assert (settings.storage_root / "processed" / "candidate_001" / "video.mp4").exists()
