soulsync/tests/wishlist/test_selection.py
Antti Kettunen f32fc9d56e
Extract wishlist logic into dedicated package
- add core/wishlist as the home for wishlist payload, resolution, state, processing, reporting, and selection helpers
- move wishlist-specific tests into tests/wishlist alongside the new package layout
- keep web_server.py and the import/search callers as thin adapters for now
2026-04-28 21:17:24 +03:00

41 lines
1.5 KiB
Python

from core.wishlist import selection
def test_sanitize_and_dedupe_wishlist_tracks_removes_duplicate_ids():
raw_tracks = [
{"id": "1", "name": "Song One", "artists": [{"name": "Artist One"}]},
{"id": "1", "name": "Song One", "artists": [{"name": "Artist One"}]},
{"id": "2", "name": "Song Two", "artists": [{"name": "Artist Two"}]},
]
tracks, duplicates_found = selection.sanitize_and_dedupe_wishlist_tracks(raw_tracks)
assert duplicates_found == 1
assert [track["id"] for track in tracks] == ["1", "2"]
def test_filter_wishlist_tracks_by_category_uses_classifier():
tracks = [
{"id": "1", "spotify_data": {"album": {"album_type": "single"}}},
{"id": "2", "spotify_data": {"album": {"total_tracks": 8}}},
{"id": "3", "spotify_data": {"album": {"album_type": "ep"}}},
]
filtered, total = selection.filter_wishlist_tracks_by_category(tracks, "singles")
assert [track["id"] for track in filtered] == ["1", "3"]
assert total == 2
def test_prepare_wishlist_tracks_for_display_applies_limit_after_category_filter():
raw_tracks = [
{"id": "1", "spotify_data": {"album": {"album_type": "single"}}},
{"id": "2", "spotify_data": {"album": {"album_type": "single"}}},
{"id": "3", "spotify_data": {"album": {"total_tracks": 8}}},
]
out = selection.prepare_wishlist_tracks_for_display(raw_tracks, category="singles", limit=1)
assert out["tracks"][0]["id"] == "1"
assert out["total"] == 2
assert out["duplicates_found"] == 0