Add pytest suite, unlimited daily cap, and vocal batch generator.
Tests cover curation, Lyria, queue, and API routes. Setting max_new_songs_per_day to 0 disables the limit; generate-batch runs 20 curated multilingual vocal directions. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from ozan_radio.curation import (
|
||||
curation_summary_for_dj,
|
||||
default_curation_block,
|
||||
list_curated_tracks,
|
||||
)
|
||||
|
||||
|
||||
def test_default_curation_block_shape():
|
||||
block = default_curation_block()
|
||||
assert block["rating"] == "unrated"
|
||||
assert block["public_playlist"] is True
|
||||
assert block["shuffle_weight"] == 1.0
|
||||
|
||||
|
||||
def test_list_curated_tracks_sorts_love_first(songs_dir: Path):
|
||||
tracks = list_curated_tracks(songs_dir)
|
||||
assert len(tracks) == 2
|
||||
assert tracks[0]["title"] == "Sahara Test"
|
||||
assert tracks[0]["curation"]["rating"] == "love"
|
||||
|
||||
|
||||
def test_curation_summary_includes_loved_and_avoid(songs_dir: Path):
|
||||
summary = curation_summary_for_dj(songs_dir)
|
||||
assert "Sahara Test [love]" in summary
|
||||
assert "saz" in summary
|
||||
assert "electric guitar" in summary
|
||||
assert "Bad Intro" not in summary # skip-rated omitted from lines
|
||||
|
||||
|
||||
def test_curation_summary_empty_dir(tmp_path: Path):
|
||||
empty = tmp_path / "songs"
|
||||
empty.mkdir()
|
||||
assert curation_summary_for_dj(empty) == "No curated library yet."
|
||||
Reference in New Issue
Block a user