funkwhale/api/tests/playlists/test_serializers.py

66 wiersze
2.4 KiB
Python
Czysty Zwykły widok Historia

2018-06-10 08:55:16 +00:00
from funkwhale_api.playlists import models, serializers
2018-03-19 11:36:15 +00:00
def test_cannot_max_500_tracks_per_playlist(factories, preferences):
2018-06-09 13:36:16 +00:00
preferences["playlists__max_tracks"] = 2
playlist = factories["playlists.Playlist"]()
factories["playlists.PlaylistTrack"].create_batch(size=2, playlist=playlist)
2018-06-09 13:36:16 +00:00
track = factories["music.Track"]()
serializer = serializers.PlaylistTrackWriteSerializer(
data={"playlist": playlist.pk, "track": track.pk}
)
2018-03-19 11:36:15 +00:00
assert serializer.is_valid() is False
2018-06-09 13:36:16 +00:00
assert "playlist" in serializer.errors
def test_create_insert_is_called_when_index_is_None(factories, mocker):
2018-06-09 13:36:16 +00:00
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)
assert plt.index == 0
def test_create_insert_is_called_when_index_is_provided(factories, mocker):
2018-06-09 13:36:16 +00:00
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)
assert plt.index == 0
assert first.index == 1
def test_update_insert_is_called_when_index_is_provided(factories, mocker):
2018-06-09 13:36:16 +00:00
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"]()
2018-06-09 15:41:59 +00:00
factories["music.Track"]()
2018-06-09 13:36:16 +00:00
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)
assert plt.index == 0
assert first.index == 1