Ensure privacy_level is settable/inherited properly

This commit is contained in:
Eliot Berriot 2018-03-16 23:31:08 +01:00
parent 859f8a0570
commit 2a3f43ecb1
No known key found for this signature in database
GPG Key ID: DD6965E2476E5C27
2 changed files with 32 additions and 10 deletions

View File

@ -32,7 +32,12 @@ class PlaylistViewSet(
return self.queryset.filter(user=self.request.user) return self.queryset.filter(user=self.request.user)
def perform_create(self, serializer): def perform_create(self, serializer):
return serializer.save(user=self.request.user) return serializer.save(
user=self.request.user,
privacy_level=serializer.validated_data.get(
'privacy_level', self.request.user.privacy_level)
)
class PlaylistTrackViewSet( class PlaylistTrackViewSet(

View File

@ -7,27 +7,44 @@ from funkwhale_api.playlists import models
from funkwhale_api.playlists.serializers import PlaylistSerializer from funkwhale_api.playlists.serializers import PlaylistSerializer
def test_can_create_playlist_via_api(logged_in_client): def test_can_create_playlist_via_api(logged_in_api_client):
url = reverse('api:v1:playlists-list') url = reverse('api:v1:playlists-list')
data = {
'name': 'test',
'privacy_level': 'everyone'
}
response = logged_in_api_client.post(url, data)
playlist = logged_in_api_client.user.playlists.latest('id')
assert playlist.name == 'test'
assert playlist.privacy_level == 'everyone'
def test_playlist_inherits_user_privacy(logged_in_api_client):
url = reverse('api:v1:playlists-list')
user = logged_in_api_client.user
user.privacy_level = 'me'
user.save()
data = { data = {
'name': 'test', 'name': 'test',
} }
response = logged_in_client.post(url, data) response = logged_in_api_client.post(url, data)
playlist = user.playlists.latest('id')
playlist = logged_in_client.user.playlists.latest('id') assert playlist.privacy_level == user.privacy_level
assert playlist.name == 'test'
def test_can_add_playlist_track_via_api(factories, logged_in_client): def test_can_add_playlist_track_via_api(factories, logged_in_api_client):
tracks = factories['music.Track'].create_batch(5) tracks = factories['music.Track'].create_batch(5)
playlist = factories['playlists.Playlist'](user=logged_in_client.user) playlist = factories['playlists.Playlist'](user=logged_in_api_client.user)
url = reverse('api:v1:playlist-tracks-list') url = reverse('api:v1:playlist-tracks-list')
data = { data = {
'playlist': playlist.pk, 'playlist': playlist.pk,
'track': tracks[0].pk 'track': tracks[0].pk
} }
response = logged_in_client.post(url, data) response = logged_in_api_client.post(url, data)
plts = logged_in_client.user.playlists.latest('id').playlist_tracks.all() plts = logged_in_api_client.user.playlists.latest('id').playlist_tracks.all()
assert plts.first().track == tracks[0] assert plts.first().track == tracks[0]