feat(music-lab): background.py — Pexels Video API + orchestrator video_loop 분기
This commit is contained in:
51
music-lab/tests/test_background.py
Normal file
51
music-lab/tests/test_background.py
Normal file
@@ -0,0 +1,51 @@
|
||||
import os
|
||||
import pytest
|
||||
import respx
|
||||
from httpx import Response
|
||||
from app.pipeline import background, storage
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def tmp_storage(monkeypatch, tmp_path):
|
||||
monkeypatch.setattr(storage, "VIDEO_DATA_DIR", str(tmp_path))
|
||||
return tmp_path
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@respx.mock
|
||||
async def test_fetch_video_loop_success(tmp_storage, monkeypatch):
|
||||
monkeypatch.setenv("PEXELS_API_KEY", "k")
|
||||
video_url = "https://videos.pexels.com/video-files/123/sample.mp4"
|
||||
respx.get("https://api.pexels.com/videos/search").mock(
|
||||
return_value=Response(200, json={
|
||||
"videos": [{
|
||||
"id": 123, "duration": 10,
|
||||
"video_files": [
|
||||
{"quality": "hd", "width": 1920, "link": video_url},
|
||||
],
|
||||
}],
|
||||
})
|
||||
)
|
||||
respx.get(video_url).mock(return_value=Response(200, content=b"\x00" * 4096))
|
||||
|
||||
result = await background.fetch_video_loop(pipeline_id=10, keyword="rainy window")
|
||||
assert result["used_fallback"] is False
|
||||
assert (tmp_storage / "10" / "loop.mp4").exists()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_fetch_video_loop_no_api_key(tmp_storage, monkeypatch):
|
||||
monkeypatch.delenv("PEXELS_API_KEY", raising=False)
|
||||
result = await background.fetch_video_loop(pipeline_id=11, keyword="rain")
|
||||
assert result["used_fallback"] is True
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@respx.mock
|
||||
async def test_fetch_video_loop_zero_results(tmp_storage, monkeypatch):
|
||||
monkeypatch.setenv("PEXELS_API_KEY", "k")
|
||||
respx.get("https://api.pexels.com/videos/search").mock(
|
||||
return_value=Response(200, json={"videos": []})
|
||||
)
|
||||
result = await background.fetch_video_loop(pipeline_id=12, keyword="impossible-keyword")
|
||||
assert result["used_fallback"] is True
|
||||
Reference in New Issue
Block a user