[music] Look up tracks by musicbrainz_id before falling back to title
This commit is contained in:
@ -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):
|
||||
|
||||
Reference in New Issue
Block a user