diff --git a/tests/scrobbles_tests/test_views.py b/tests/scrobbles_tests/test_views.py index c697d89..efba927 100644 --- a/tests/scrobbles_tests/test_views.py +++ b/tests/scrobbles_tests/test_views.py @@ -247,6 +247,44 @@ def test_mopidy_track_webhook_stores_raw_data( assert scrobble.log["raw_data"]["name"] == "Same in the End" +@pytest.mark.django_db +@patch("music.models.Artist.find_or_create") +@patch("music.models.Track.find_or_create") +def test_mopidy_track_webhook_stores_album_id( + mock_track_fc, + mock_artist_fc, + client, + valid_auth_token, + mopidy_track, +): + artist = Artist.objects.create(name="Sublime") + album = Album.objects.create(name="Sublime", album_artist=artist) + track = Track.objects.create( + title="Same in the End", + artist=artist, + album=album, + base_run_time_seconds=60, + ) + + mock_artist_fc.return_value = artist + mock_track_fc.return_value = track + + url = reverse("scrobbles:mopidy-webhook") + headers = {"Authorization": f"Token {valid_auth_token}"} + response = client.post( + url, + mopidy_track.request_data, + content_type="application/json", + headers=headers, + ) + assert response.status_code == 200 + + scrobble = Scrobble.objects.get(id=1) + assert "album_id" in scrobble.log + assert scrobble.log["album_id"] == album.id + assert "album" not in scrobble.log + + @pytest.mark.django_db @patch("music.models.Artist.find_or_create") @patch("music.models.Track.find_or_create") diff --git a/vrobbler/apps/scrobbles/scrobblers.py b/vrobbler/apps/scrobbles/scrobblers.py index 7a529c1..ae3739e 100644 --- a/vrobbler/apps/scrobbles/scrobblers.py +++ b/vrobbler/apps/scrobbles/scrobblers.py @@ -86,8 +86,8 @@ def mopidy_scrobble_media(post_data: dict, user_id: int) -> Scrobble: try: log = { "mopidy_source": post_data.get("mopidy_uri", "").split(":")[0], + "album_id": media_obj.album_id, "raw_data": post_data, - "album": post_data.get("album", ""), } except IndexError: pass