Skip to content
Snippets Groups Projects
Verified Commit 2a3f43ec authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Ensure privacy_level is settable/inherited properly

parent 859f8a05
No related branches found
No related tags found
No related merge requests found
...@@ -32,7 +32,12 @@ class PlaylistViewSet( ...@@ -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(
......
...@@ -7,27 +7,44 @@ from funkwhale_api.playlists import models ...@@ -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 = { data = {
'name': 'test', 'name': 'test',
'privacy_level': 'everyone'
} }
response = logged_in_client.post(url, data) response = logged_in_api_client.post(url, data)
playlist = logged_in_client.user.playlists.latest('id') playlist = logged_in_api_client.user.playlists.latest('id')
assert playlist.name == 'test' assert playlist.name == 'test'
assert playlist.privacy_level == 'everyone'
def test_can_add_playlist_track_via_api(factories, logged_in_client): 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 = {
'name': 'test',
}
response = logged_in_api_client.post(url, data)
playlist = user.playlists.latest('id')
assert playlist.privacy_level == user.privacy_level
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]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment