122 lines
3.7 KiB
Python
122 lines
3.7 KiB
Python
from funkwhale_api.music import serializers
|
|
|
|
|
|
def test_artist_album_serializer(factories, to_api_date):
|
|
track = factories['music.Track']()
|
|
album = track.album
|
|
album = album.__class__.objects.with_tracks_count().get(pk=album.pk)
|
|
expected = {
|
|
'id': album.id,
|
|
'mbid': str(album.mbid),
|
|
'title': album.title,
|
|
'artist': album.artist.id,
|
|
'creation_date': to_api_date(album.creation_date),
|
|
'tracks_count': 1,
|
|
'cover': album.cover.url,
|
|
'release_date': to_api_date(album.release_date),
|
|
}
|
|
serializer = serializers.ArtistAlbumSerializer(album)
|
|
|
|
assert serializer.data == expected
|
|
|
|
|
|
def test_artist_with_albums_serializer(factories, to_api_date):
|
|
track = factories['music.Track']()
|
|
artist = track.artist
|
|
artist = artist.__class__.objects.with_albums().get(pk=artist.pk)
|
|
album = list(artist.albums.all())[0]
|
|
|
|
expected = {
|
|
'id': artist.id,
|
|
'mbid': str(artist.mbid),
|
|
'name': artist.name,
|
|
'creation_date': to_api_date(artist.creation_date),
|
|
'albums': [
|
|
serializers.ArtistAlbumSerializer(album).data
|
|
]
|
|
}
|
|
serializer = serializers.ArtistWithAlbumsSerializer(artist)
|
|
assert serializer.data == expected
|
|
|
|
|
|
def test_album_track_serializer(factories, to_api_date):
|
|
tf = factories['music.TrackFile']()
|
|
track = tf.track
|
|
|
|
expected = {
|
|
'id': track.id,
|
|
'artist': track.artist.id,
|
|
'album': track.album.id,
|
|
'mbid': str(track.mbid),
|
|
'title': track.title,
|
|
'position': track.position,
|
|
'creation_date': to_api_date(track.creation_date),
|
|
'files': [
|
|
serializers.TrackFileSerializer(tf).data
|
|
]
|
|
}
|
|
serializer = serializers.AlbumTrackSerializer(track)
|
|
assert serializer.data == expected
|
|
|
|
|
|
def test_track_file_serializer(factories, to_api_date):
|
|
tf = factories['music.TrackFile']()
|
|
|
|
expected = {
|
|
'id': tf.id,
|
|
'path': tf.path,
|
|
'source': tf.source,
|
|
'filename': tf.filename,
|
|
'mimetype': tf.mimetype,
|
|
'track': tf.track.pk,
|
|
'duration': tf.duration,
|
|
'mimetype': tf.mimetype,
|
|
'bitrate': tf.bitrate,
|
|
'size': tf.size,
|
|
}
|
|
serializer = serializers.TrackFileSerializer(tf)
|
|
assert serializer.data == expected
|
|
|
|
|
|
def test_album_serializer(factories, to_api_date):
|
|
track1 = factories['music.Track'](position=2)
|
|
track2 = factories['music.Track'](position=1, album=track1.album)
|
|
album = track1.album
|
|
expected = {
|
|
'id': album.id,
|
|
'mbid': str(album.mbid),
|
|
'title': album.title,
|
|
'artist': serializers.ArtistSimpleSerializer(album.artist).data,
|
|
'creation_date': to_api_date(album.creation_date),
|
|
'cover': album.cover.url,
|
|
'release_date': to_api_date(album.release_date),
|
|
'tracks': serializers.AlbumTrackSerializer(
|
|
[track2, track1],
|
|
many=True
|
|
).data
|
|
}
|
|
serializer = serializers.AlbumSerializer(album)
|
|
|
|
assert serializer.data == expected
|
|
|
|
|
|
def test_track_serializer(factories, to_api_date):
|
|
tf = factories['music.TrackFile']()
|
|
track = tf.track
|
|
|
|
expected = {
|
|
'id': track.id,
|
|
'artist': serializers.ArtistSimpleSerializer(track.artist).data,
|
|
'album': serializers.TrackAlbumSerializer(track.album).data,
|
|
'mbid': str(track.mbid),
|
|
'title': track.title,
|
|
'position': track.position,
|
|
'creation_date': to_api_date(track.creation_date),
|
|
'lyrics': track.get_lyrics_url(),
|
|
'files': [
|
|
serializers.TrackFileSerializer(tf).data
|
|
]
|
|
}
|
|
serializer = serializers.TrackSerializer(track)
|
|
assert serializer.data == expected
|