Audio federation

This commit is contained in:
Eliot Berriot 2018-09-22 12:29:30 +00:00
commit e49a460203
85 changed files with 2591 additions and 1197 deletions

View file

@ -65,7 +65,7 @@ def test_get_album_serializer(factories):
artist = factories["music.Artist"]()
album = factories["music.Album"](artist=artist)
track = factories["music.Track"](album=album)
tf = factories["music.TrackFile"](track=track, bitrate=42000, duration=43, size=44)
upload = factories["music.Upload"](track=track, bitrate=42000, duration=43, size=44)
expected = {
"id": album.pk,
@ -86,8 +86,8 @@ def test_get_album_serializer(factories):
"artist": artist.name,
"track": track.position,
"year": track.album.release_date.year,
"contentType": tf.mimetype,
"suffix": tf.extension or "",
"contentType": upload.mimetype,
"suffix": upload.extension or "",
"bitrate": 42,
"duration": 43,
"size": 44,
@ -106,9 +106,9 @@ def test_starred_tracks2_serializer(factories):
artist = factories["music.Artist"]()
album = factories["music.Album"](artist=artist)
track = factories["music.Track"](album=album)
tf = factories["music.TrackFile"](track=track)
upload = factories["music.Upload"](track=track)
favorite = factories["favorites.TrackFavorite"](track=track)
expected = [serializers.get_track_data(album, track, tf)]
expected = [serializers.get_track_data(album, track, upload)]
expected[0]["starred"] = favorite.creation_date
data = serializers.get_starred_tracks_data([favorite])
assert data == expected
@ -147,7 +147,7 @@ def test_playlist_serializer(factories):
def test_playlist_detail_serializer(factories):
plt = factories["playlists.PlaylistTrack"]()
tf = factories["music.TrackFile"](track=plt.track)
upload = factories["music.Upload"](track=plt.track)
playlist = plt.playlist
qs = music_models.Album.objects.with_tracks_count().order_by("pk")
expected = {
@ -158,7 +158,7 @@ def test_playlist_detail_serializer(factories):
"songCount": 1,
"duration": 0,
"created": playlist.creation_date,
"entry": [serializers.get_track_data(plt.track.album, plt.track, tf)],
"entry": [serializers.get_track_data(plt.track.album, plt.track, upload)],
}
qs = playlist.__class__.objects.with_tracks_count()
data = serializers.get_playlist_detail_data(qs.first())
@ -167,7 +167,7 @@ def test_playlist_detail_serializer(factories):
def test_directory_serializer_artist(factories):
track = factories["music.Track"]()
tf = factories["music.TrackFile"](track=track, bitrate=42000, duration=43, size=44)
upload = factories["music.Upload"](track=track, bitrate=42000, duration=43, size=44)
album = track.album
artist = track.artist
@ -184,8 +184,8 @@ def test_directory_serializer_artist(factories):
"artist": artist.name,
"track": track.position,
"year": track.album.release_date.year,
"contentType": tf.mimetype,
"suffix": tf.extension or "",
"contentType": upload.mimetype,
"suffix": upload.extension or "",
"bitrate": 42,
"duration": 43,
"size": 44,
@ -202,8 +202,8 @@ def test_directory_serializer_artist(factories):
def test_scrobble_serializer(factories):
tf = factories["music.TrackFile"]()
track = tf.track
upload = factories["music.Upload"]()
track = upload.track
user = factories["users.User"]()
payload = {"id": track.pk, "submission": True}
serializer = serializers.ScrobbleSerializer(data=payload, context={"user": user})

View file

@ -147,11 +147,13 @@ def test_get_song(f, db, logged_in_api_client, factories):
artist = factories["music.Artist"]()
album = factories["music.Album"](artist=artist)
track = factories["music.Track"](album=album)
tf = factories["music.TrackFile"](track=track)
upload = factories["music.Upload"](track=track)
response = logged_in_api_client.get(url, {"f": f, "id": track.pk})
assert response.status_code == 200
assert response.data == {"song": serializers.get_track_data(track.album, track, tf)}
assert response.data == {
"song": serializers.get_track_data(track.album, track, upload)
}
@pytest.mark.parametrize("f", ["xml", "json"])
@ -162,10 +164,10 @@ def test_stream(f, db, logged_in_api_client, factories, mocker):
artist = factories["music.Artist"]()
album = factories["music.Album"](artist=artist)
track = factories["music.Track"](album=album)
tf = factories["music.TrackFile"](track=track)
upload = factories["music.Upload"](track=track)
response = logged_in_api_client.get(url, {"f": f, "id": track.pk})
mocked_serve.assert_called_once_with(track_file=tf, user=logged_in_api_client.user)
mocked_serve.assert_called_once_with(upload=upload, user=logged_in_api_client.user)
assert response.status_code == 200
@ -412,8 +414,8 @@ def test_get_cover_art_album(factories, logged_in_api_client):
def test_scrobble(factories, logged_in_api_client):
tf = factories["music.TrackFile"]()
track = tf.track
upload = factories["music.Upload"]()
track = upload.track
url = reverse("api:subsonic-scrobble")
assert url.endswith("scrobble") is True
response = logged_in_api_client.get(url, {"id": track.pk, "submission": True})