[music] Look up tracks by musicbrainz_id before falling back to title

This commit is contained in:
2026-08-26 17:20:39 -04:00
parent 1b2c878bde
commit 54fa3d3f9f
3 changed files with 78 additions and 2 deletions

View File

@ -47,6 +47,62 @@ def test_find_or_create_reuses_existing_track_by_mbid(mock_resolve):
mock_resolve.assert_not_called()
@pytest.mark.django_db
@patch("music.models.resolve_track")
def test_find_or_create_looks_up_by_mbid_before_title(mock_resolve):
artist = Artist.objects.create(name="AC/DC")
wrong = Track.objects.create(title="TNT", musicbrainz_id="rec-999")
wrong.artists.add(artist)
existing = Track.objects.create(title="TNT", musicbrainz_id="rec-123")
track = Track.find_or_create(
title="TNT",
artist_name="AC/DC",
mbid="rec-123",
trust_webhook_data=True,
)
assert track.id == existing.id
assert track.id != wrong.id
@pytest.mark.django_db
@patch("music.models.resolve_track")
def test_find_or_create_title_fallback_skips_track_with_conflicting_mbid(
mock_resolve,
):
wrong = Track.objects.create(title="TNT", musicbrainz_id="rec-999")
track = Track.find_or_create(
title="TNT",
artist_name="AC/DC",
mbid="rec-123",
trust_webhook_data=True,
)
assert track.id != wrong.id
assert track.musicbrainz_id == "rec-123"
wrong.refresh_from_db()
assert wrong.musicbrainz_id == "rec-999"
@pytest.mark.django_db
@patch("music.models.resolve_track", return_value=(None, ""))
def test_find_or_create_falls_back_to_title_and_artist(mock_resolve):
artist = Artist.objects.create(name="AC/DC")
wrong = Track.objects.create(title="TNT")
existing = Track.objects.create(title="TNT")
existing.artists.add(artist)
track = Track.find_or_create(
title="TNT",
artist_name="AC/DC",
)
assert track.id == existing.id
assert track.id != wrong.id
@pytest.mark.django_db
@patch("music.models.resolve_track")
def test_fix_metadata_enriches_and_tags(mock_resolve):