funkwhale/api/tests/music/test_migrations.py

75 lines
2.8 KiB
Python

# this test is commented since it's very slow, but it can be useful for future development
# def test_pytest_plugin_initial(migrator):
# mapping_list = [
# ("audio/mpeg", "20", "low", 0, 1),
# ("audio/ogg", "180", "medium", 1, 2),
# ("audio/x-m4a", "280", "high", 2, 3),
# ("audio/opus", "130", "high", 2, 4),
# ("audio/opus", "513", "very-high", 3, 5),
# ("audio/aiff", "1312", "very-high", 3, 6),
# ("audio/mpeg", "320", "high", 2, 8),
# ("audio/mpeg", "200", "medium", 1, 9),
# ("audio/aiff", "1", "very-high", 3, 10),
# ("audio/flac", "1", "very-high", 3, 11),
# ]
# a, f, t = ("music", "0057_auto_20221118_2108", "0058_upload_quality")
# migrator.migrate([(a, f)])
# old_apps = migrator.loader.project_state([(a, f)]).apps
# Upload = old_apps.get_model(a, "Upload")
# for upload in mapping_list:
# Upload.objects.create(pk=upload[4], mimetype=upload[0], bitrate=upload[1])
# migrator.loader.build_graph()
# migrator.migrate([(a, t)])
# new_apps = migrator.loader.project_state([(a, t)]).apps
# upload_manager = new_apps.get_model(a, "Upload")
# for upload in mapping_list:
# upload_obj = upload_manager.objects.get(pk=upload[4])
# assert upload_obj.quality == upload[3]
def test_artist_credit_migration(migrator):
mapping_list = [("artist_name", "album_title", "track_title")]
a, f, t = (
"music",
"0058_upload_quality",
"0059_remove_album_artist_remove_track_artist_artistcredit_and_more",
)
migrator.migrate([(a, f)])
old_apps = migrator.loader.project_state([(a, f)]).apps
Track = old_apps.get_model(a, "Track")
Album = old_apps.get_model(a, "Album")
Artist = old_apps.get_model(a, "Artist")
for track in mapping_list:
artist = Artist.objects.create(name=track[0])
old_album = Album.objects.create(title=track[1], artist=artist)
old_track = Track.objects.create(title=track[2], artist=artist, album=old_album)
migrator.loader.build_graph()
migrator.migrate([(a, t)])
new_apps = migrator.loader.project_state([(a, t)]).apps
track_manager = new_apps.get_model(a, "Track")
album_manager = new_apps.get_model(a, "Album")
for track in mapping_list:
track_obj = track_manager.objects.get(title=track[2])
album_obj = album_manager.objects.get(title=track[1])
assert track_obj.artist_credit.all()[0].artist.pk == old_track.artist.pk
assert track_obj.artist_credit.all()[0].joinphrase == ""
assert track_obj.artist_credit.all()[0].credit == old_track.artist.name
assert album_obj.artist_credit.all()[0].artist.pk == old_album.artist.pk
assert album_obj.artist_credit.all()[0].joinphrase == ""
assert album_obj.artist_credit.all()[0].credit == old_album.artist.name