Fx #986: Fixed invalid displayed number of tracks in playlist

This commit is contained in:
Eliot Berriot 2019-12-11 10:49:45 +01:00
parent 8cf003ab1c
commit c8702ca726
No known key found for this signature in database
GPG Key ID: 6B501DFD73514E14
3 changed files with 14 additions and 1 deletions

View File

@ -24,7 +24,7 @@ class PlaylistViewSet(
queryset = ( queryset = (
models.Playlist.objects.all() models.Playlist.objects.all()
.select_related("user__actor") .select_related("user__actor")
.annotate(tracks_count=Count("playlist_tracks")) .annotate(tracks_count=Count("playlist_tracks", distinct=True))
.with_covers() .with_covers()
.with_duration() .with_duration()
) )

View File

@ -25,6 +25,18 @@ def test_serializer_includes_tracks_count(factories, logged_in_api_client):
assert response.data["tracks_count"] == 1 assert response.data["tracks_count"] == 1
def test_serializer_includes_tracks_count_986(factories, logged_in_api_client):
playlist = factories["playlists.Playlist"]()
plt = factories["playlists.PlaylistTrack"](playlist=playlist)
factories["music.Upload"].create_batch(
3, track=plt.track, library__privacy_level="everyone", import_status="finished"
)
url = reverse("api:v1:playlists-detail", kwargs={"pk": playlist.pk})
response = logged_in_api_client.get(url)
assert response.data["tracks_count"] == 1
def test_serializer_includes_is_playable(factories, logged_in_api_client): def test_serializer_includes_is_playable(factories, logged_in_api_client):
playlist = factories["playlists.Playlist"]() playlist = factories["playlists.Playlist"]()
factories["playlists.PlaylistTrack"](playlist=playlist) factories["playlists.PlaylistTrack"](playlist=playlist)

View File

@ -0,0 +1 @@
Fixed invalid displayed number of tracks in playlist (#986)