feat(music-render): providers/suno.py — 13 Suno API 함수 이식 (SP-5)
NAS music-lab/app/suno_provider.py를 Windows worker로 이식. DB 호출(update_task, add_track 등)을 nas_client.webhook_*으로 변환. 결과 MP3는 MUSIC_MEDIA_ROOT(/mnt/nas/...)에 직접 저장. 13 함수: generation, extend, vocal_removal, cover_image, wav, stem_split, upload_cover, upload_extend, add_vocals, add_instrumental, video_generate + _build_suno_payload + _poll_suno_record + _download_and_register Plan-B-Music Phase 2. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
32
services/music-render/tests/test_suno_provider.py
Normal file
32
services/music-render/tests/test_suno_provider.py
Normal file
@@ -0,0 +1,32 @@
|
||||
"""providers/suno.py — _build_suno_payload 단위 테스트 + 1개 함수 mock 검증."""
|
||||
import pytest
|
||||
from providers.suno import _build_suno_payload
|
||||
|
||||
|
||||
def test_payload_custom_mode_with_lyrics():
|
||||
params = {"lyrics": "[Verse]\nhello", "genre": "lofi", "moods": ["chill"], "model": "V4"}
|
||||
p = _build_suno_payload(params)
|
||||
assert p["customMode"] is True
|
||||
assert p["prompt"] == "[Verse]\nhello"
|
||||
assert "lofi" in p["style"]
|
||||
assert "chill" in p["style"]
|
||||
|
||||
|
||||
def test_payload_simple_mode_no_lyrics_no_genre():
|
||||
params = {"prompt": "happy summer", "model": "V4"}
|
||||
p = _build_suno_payload(params)
|
||||
assert p["customMode"] is False
|
||||
assert "happy summer" in p["prompt"]
|
||||
|
||||
|
||||
def test_payload_instrumental_clears_prompt():
|
||||
params = {"genre": "ambient", "instrumental": True, "model": "V5"}
|
||||
p = _build_suno_payload(params)
|
||||
assert p["instrumental"] is True
|
||||
assert p["prompt"] == ""
|
||||
|
||||
|
||||
def test_payload_includes_optional_vocal_gender():
|
||||
params = {"genre": "pop", "vocal_gender": "f", "model": "V4"}
|
||||
p = _build_suno_payload(params)
|
||||
assert p["vocalGender"] == "f"
|
||||
Reference in New Issue
Block a user