75 lines
2.5 KiB
Python
75 lines
2.5 KiB
Python
from funkwhale_api.playlists import models
|
|
from funkwhale_api.playlists import serializers
|
|
|
|
|
|
def test_cannot_max_500_tracks_per_playlist(factories, settings):
|
|
settings.PLAYLISTS_MAX_TRACKS = 2
|
|
playlist = factories['playlists.Playlist']()
|
|
plts = 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)
|
|
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)
|
|
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']()
|
|
track = 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)
|
|
assert plt.index == 0
|
|
assert first.index == 1
|