You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SoulSync/tests/wishlist/test_cancelled_payload.py

38 lines
1.2 KiB

from core.wishlist import payloads
def test_build_cancelled_task_wishlist_payload_normalizes_track_and_context():
task = {
"playlist_name": "My Playlist",
"playlist_id": "pl-1",
"track_info": {
"id": "trk-1",
"name": "Song One",
"duration_ms": 123456,
"artists": [
"Artist One",
{"name": "Artist Two"},
{"name": {"name": "Nested Artist"}},
],
"album": {"name": "Album One"},
"album_image_url": "https://img.example/cover.jpg",
},
}
out = payloads.build_cancelled_task_wishlist_payload(task, profile_id=7)
assert out["profile_id"] == 7
assert out["failure_reason"] == "Download cancelled by user (v2)"
assert out["source_type"] == "playlist"
assert out["source_context"] == {
"playlist_name": "My Playlist",
"playlist_id": "pl-1",
"added_from": "modal_cancellation_v2",
}
assert out["spotify_track_data"]["artists"] == [
{"name": "Artist One"},
{"name": "Artist Two"},
{"name": "Nested Artist"},
]
assert out["spotify_track_data"]["album"]["images"] == [{"url": "https://img.example/cover.jpg"}]