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."