mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-06 06:59:55 +02:00
Updated playlist management API
This commit is contained in:
parent
a1865cf9d8
commit
f6458fd75a
10 changed files with 157 additions and 247 deletions
|
@ -1,96 +1,8 @@
|
|||
from funkwhale_api.federation import serializers as federation_serializers
|
||||
from funkwhale_api.playlists import models, serializers
|
||||
from funkwhale_api.playlists import serializers
|
||||
from funkwhale_api.users import serializers as users_serializers
|
||||
|
||||
|
||||
def test_cannot_max_500_tracks_per_playlist(factories, preferences):
|
||||
preferences["playlists__max_tracks"] = 2
|
||||
playlist = factories["playlists.Playlist"]()
|
||||
factories["playlists.PlaylistTrack"].create_batch(size=2, playlist=playlist)
|
||||
track = factories["music.Track"]()
|
||||
serializer = serializers.PlaylistTrackWriteSerializer(
|
||||
data={"playlist": playlist.pk, "track": track.pk}
|
||||
)
|
||||
|
||||
assert serializer.is_valid() is False
|
||||
assert "playlist" in serializer.errors
|
||||
|
||||
|
||||
def test_create_insert_is_called_when_index_is_None(factories, mocker):
|
||||
insert = mocker.spy(models.Playlist, "insert")
|
||||
playlist = factories["playlists.Playlist"]()
|
||||
track = factories["music.Track"]()
|
||||
serializer = serializers.PlaylistTrackWriteSerializer(
|
||||
data={"playlist": playlist.pk, "track": track.pk, "index": None}
|
||||
)
|
||||
assert serializer.is_valid() is True
|
||||
|
||||
plt = serializer.save()
|
||||
insert.assert_called_once_with(playlist, plt, None, True)
|
||||
assert plt.index == 0
|
||||
|
||||
|
||||
def test_create_insert_is_called_when_index_is_provided(factories, mocker):
|
||||
playlist = factories["playlists.Playlist"]()
|
||||
first = factories["playlists.PlaylistTrack"](playlist=playlist, index=0)
|
||||
insert = mocker.spy(models.Playlist, "insert")
|
||||
factories["playlists.Playlist"]()
|
||||
track = factories["music.Track"]()
|
||||
serializer = serializers.PlaylistTrackWriteSerializer(
|
||||
data={"playlist": playlist.pk, "track": track.pk, "index": 0}
|
||||
)
|
||||
assert serializer.is_valid() is True
|
||||
|
||||
plt = serializer.save()
|
||||
first.refresh_from_db()
|
||||
insert.assert_called_once_with(playlist, plt, 0, True)
|
||||
assert plt.index == 0
|
||||
assert first.index == 1
|
||||
|
||||
|
||||
def test_update_insert_is_called_when_index_is_provided(factories, mocker):
|
||||
playlist = factories["playlists.Playlist"]()
|
||||
first = factories["playlists.PlaylistTrack"](playlist=playlist, index=0)
|
||||
second = factories["playlists.PlaylistTrack"](playlist=playlist, index=1)
|
||||
insert = mocker.spy(models.Playlist, "insert")
|
||||
factories["playlists.Playlist"]()
|
||||
factories["music.Track"]()
|
||||
serializer = serializers.PlaylistTrackWriteSerializer(
|
||||
second, data={"playlist": playlist.pk, "track": second.track.pk, "index": 0}
|
||||
)
|
||||
assert serializer.is_valid() is True
|
||||
|
||||
plt = serializer.save()
|
||||
first.refresh_from_db()
|
||||
insert.assert_called_once_with(playlist, plt, 0, True)
|
||||
assert plt.index == 0
|
||||
assert first.index == 1
|
||||
|
||||
|
||||
def test_update_insert_is_called_with_duplicate_override_when_duplicates_allowed(
|
||||
factories, mocker
|
||||
):
|
||||
playlist = factories["playlists.Playlist"]()
|
||||
plt = factories["playlists.PlaylistTrack"](playlist=playlist, index=0)
|
||||
insert = mocker.spy(models.Playlist, "insert")
|
||||
factories["playlists.Playlist"]()
|
||||
factories["music.Track"]()
|
||||
|
||||
serializer = serializers.PlaylistTrackWriteSerializer(
|
||||
plt,
|
||||
data={
|
||||
"playlist": playlist.pk,
|
||||
"track": plt.track.pk,
|
||||
"index": 0,
|
||||
"allow_duplicates": True,
|
||||
},
|
||||
)
|
||||
assert serializer.is_valid() is True
|
||||
plt = serializer.save()
|
||||
|
||||
insert.assert_called_once_with(playlist, plt, 0, True)
|
||||
|
||||
|
||||
def test_playlist_serializer_include_covers(factories, api_request):
|
||||
playlist = factories["playlists.Playlist"]()
|
||||
t1 = factories["music.Track"](album__with_cover=True)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue