See #272: updated API to return upload data on tracks
This commit is contained in:
parent
8489c79c89
commit
d3f8fb6cb0
16 changed files with 97 additions and 142 deletions
|
|
@ -464,24 +464,6 @@ def test_library_queryset_with_follows(factories):
|
|||
assert l2._follows == [follow]
|
||||
|
||||
|
||||
def test_annotate_duration(factories):
|
||||
tf = factories["music.Upload"](duration=32)
|
||||
|
||||
track = models.Track.objects.annotate_duration().get(pk=tf.track.pk)
|
||||
|
||||
assert track.duration == 32
|
||||
|
||||
|
||||
def test_annotate_file_data(factories):
|
||||
tf = factories["music.Upload"](size=42, bitrate=55, mimetype="audio/ogg")
|
||||
|
||||
track = models.Track.objects.annotate_file_data().get(pk=tf.track.pk)
|
||||
|
||||
assert track.size == 42
|
||||
assert track.bitrate == 55
|
||||
assert track.mimetype == "audio/ogg"
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"model,factory_args,namespace",
|
||||
[
|
||||
|
|
|
|||
|
|
@ -48,6 +48,7 @@ def test_artist_with_albums_serializer(factories, to_api_date):
|
|||
def test_album_track_serializer(factories, to_api_date):
|
||||
upload = factories["music.Upload"]()
|
||||
track = upload.track
|
||||
setattr(track, "playable_uploads", [upload])
|
||||
|
||||
expected = {
|
||||
"id": track.id,
|
||||
|
|
@ -56,7 +57,7 @@ def test_album_track_serializer(factories, to_api_date):
|
|||
"mbid": str(track.mbid),
|
||||
"title": track.title,
|
||||
"position": track.position,
|
||||
"is_playable": None,
|
||||
"uploads": [serializers.TrackUploadSerializer(upload).data],
|
||||
"creation_date": to_api_date(track.creation_date),
|
||||
"listen_url": track.listen_url,
|
||||
"duration": None,
|
||||
|
|
@ -127,7 +128,7 @@ def test_album_serializer(factories, to_api_date):
|
|||
"title": album.title,
|
||||
"artist": serializers.ArtistSimpleSerializer(album.artist).data,
|
||||
"creation_date": to_api_date(album.creation_date),
|
||||
"is_playable": None,
|
||||
"is_playable": False,
|
||||
"cover": {
|
||||
"original": album.cover.url,
|
||||
"square_crop": album.cover.crop["400x400"].url,
|
||||
|
|
@ -145,7 +146,7 @@ def test_album_serializer(factories, to_api_date):
|
|||
def test_track_serializer(factories, to_api_date):
|
||||
upload = factories["music.Upload"]()
|
||||
track = upload.track
|
||||
|
||||
setattr(track, "playable_uploads", [upload])
|
||||
expected = {
|
||||
"id": track.id,
|
||||
"artist": serializers.ArtistSimpleSerializer(track.artist).data,
|
||||
|
|
@ -153,14 +154,10 @@ def test_track_serializer(factories, to_api_date):
|
|||
"mbid": str(track.mbid),
|
||||
"title": track.title,
|
||||
"position": track.position,
|
||||
"is_playable": None,
|
||||
"uploads": [serializers.TrackUploadSerializer(upload).data],
|
||||
"creation_date": to_api_date(track.creation_date),
|
||||
"lyrics": track.get_lyrics_url(),
|
||||
"listen_url": track.listen_url,
|
||||
"duration": None,
|
||||
"size": None,
|
||||
"bitrate": None,
|
||||
"mimetype": None,
|
||||
}
|
||||
serializer = serializers.TrackSerializer(track)
|
||||
assert serializer.data == expected
|
||||
|
|
@ -260,3 +257,20 @@ def test_manage_upload_action_relaunch_import(factories, mocker):
|
|||
finished.refresh_from_db()
|
||||
assert finished.import_status == "finished"
|
||||
assert m.call_count == 3
|
||||
|
||||
|
||||
def test_track_upload_serializer(factories):
|
||||
upload = factories["music.Upload"]()
|
||||
|
||||
expected = {
|
||||
"listen_url": upload.listen_url,
|
||||
"uuid": str(upload.uuid),
|
||||
"size": upload.size,
|
||||
"bitrate": upload.bitrate,
|
||||
"mimetype": upload.mimetype,
|
||||
"extension": upload.extension,
|
||||
"duration": upload.duration,
|
||||
}
|
||||
|
||||
serializer = serializers.TrackUploadSerializer(upload)
|
||||
assert serializer.data == expected
|
||||
|
|
|
|||
|
|
@ -549,11 +549,11 @@ def test_scan_page_trigger_next_page_scan_skip_if_same(mocker, factories, r_mock
|
|||
|
||||
|
||||
def test_clean_transcoding_cache(preferences, now, factories):
|
||||
preferences['music__transcoding_cache_duration'] = 60
|
||||
u1 = factories['music.UploadVersion'](
|
||||
preferences["music__transcoding_cache_duration"] = 60
|
||||
u1 = factories["music.UploadVersion"](
|
||||
accessed_date=now - datetime.timedelta(minutes=61)
|
||||
)
|
||||
u2 = factories['music.UploadVersion'](
|
||||
u2 = factories["music.UploadVersion"](
|
||||
accessed_date=now - datetime.timedelta(minutes=59)
|
||||
)
|
||||
|
||||
|
|
@ -562,4 +562,4 @@ def test_clean_transcoding_cache(preferences, now, factories):
|
|||
u2.refresh_from_db()
|
||||
|
||||
with pytest.raises(u1.__class__.DoesNotExist):
|
||||
u1.refresh_from_db()
|
||||
u1.refresh_from_db()
|
||||
|
|
|
|||
|
|
@ -39,13 +39,11 @@ def test_album_list_serializer(api_request, factories, logged_in_api_client):
|
|||
).track
|
||||
album = track.album
|
||||
request = api_request.get("/")
|
||||
qs = album.__class__.objects.all()
|
||||
qs = album.__class__.objects.with_prefetched_tracks_and_playable_uploads(None)
|
||||
serializer = serializers.AlbumSerializer(
|
||||
qs, many=True, context={"request": request}
|
||||
)
|
||||
expected = {"count": 1, "next": None, "previous": None, "results": serializer.data}
|
||||
expected["results"][0]["is_playable"] = True
|
||||
expected["results"][0]["tracks"][0]["is_playable"] = True
|
||||
url = reverse("api:v1:albums-list")
|
||||
response = logged_in_api_client.get(url)
|
||||
|
||||
|
|
@ -58,12 +56,11 @@ def test_track_list_serializer(api_request, factories, logged_in_api_client):
|
|||
library__privacy_level="everyone", import_status="finished"
|
||||
).track
|
||||
request = api_request.get("/")
|
||||
qs = track.__class__.objects.all()
|
||||
qs = track.__class__.objects.with_playable_uploads(None)
|
||||
serializer = serializers.TrackSerializer(
|
||||
qs, many=True, context={"request": request}
|
||||
)
|
||||
expected = {"count": 1, "next": None, "previous": None, "results": serializer.data}
|
||||
expected["results"][0]["is_playable"] = True
|
||||
url = reverse("api:v1:tracks-list")
|
||||
response = logged_in_api_client.get(url)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue