Fixed unplayable playlists
This commit is contained in:
parent
f595b852ca
commit
34373d020c
6 changed files with 102 additions and 6 deletions
|
|
@ -122,3 +122,38 @@ def test_insert_many_honor_max_tracks(preferences, factories):
|
|||
track = factories["music.Track"]()
|
||||
with pytest.raises(exceptions.ValidationError):
|
||||
playlist.insert_many([track, track, track])
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"privacy_level,expected", [("me", False), ("instance", False), ("everyone", True)]
|
||||
)
|
||||
def test_playlist_track_playable_by_anonymous(privacy_level, expected, factories):
|
||||
plt = factories["playlists.PlaylistTrack"]()
|
||||
track = plt.track
|
||||
factories["music.Upload"](
|
||||
track=track, library__privacy_level=privacy_level, import_status="finished"
|
||||
)
|
||||
queryset = plt.__class__.objects.playable_by(None).annotate_playable_by_actor(None)
|
||||
match = plt in list(queryset)
|
||||
assert match is expected
|
||||
if expected:
|
||||
assert bool(queryset.first().is_playable_by_actor) is expected
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"privacy_level,expected", [("me", False), ("instance", False), ("everyone", True)]
|
||||
)
|
||||
def test_playlist_playable_by_anonymous(privacy_level, expected, factories):
|
||||
plt = factories["playlists.PlaylistTrack"]()
|
||||
playlist = plt.playlist
|
||||
track = plt.track
|
||||
factories["music.Upload"](
|
||||
track=track, library__privacy_level=privacy_level, import_status="finished"
|
||||
)
|
||||
queryset = playlist.__class__.objects.playable_by(None).annotate_playable_by_actor(
|
||||
None
|
||||
)
|
||||
match = playlist in list(queryset)
|
||||
assert match is expected
|
||||
if expected:
|
||||
assert bool(queryset.first().is_playable_by_actor) is expected
|
||||
|
|
|
|||
|
|
@ -25,6 +25,16 @@ def test_serializer_includes_tracks_count(factories, logged_in_api_client):
|
|||
assert response.data["tracks_count"] == 1
|
||||
|
||||
|
||||
def test_serializer_includes_is_playable(factories, logged_in_api_client):
|
||||
playlist = factories["playlists.Playlist"]()
|
||||
factories["playlists.PlaylistTrack"](playlist=playlist)
|
||||
|
||||
url = reverse("api:v1:playlists-detail", kwargs={"pk": playlist.pk})
|
||||
response = logged_in_api_client.get(url)
|
||||
|
||||
assert response.data["is_playable"] is False
|
||||
|
||||
|
||||
def test_playlist_inherits_user_privacy(logged_in_api_client):
|
||||
url = reverse("api:v1:playlists-list")
|
||||
user = logged_in_api_client.user
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue