/
/
1"""Tests for external media identifier helpers."""
2
3from music_assistant_models.enums import ExternalID
4
5from music_assistant.helpers.external_ids import (
6 barcode_to_upc,
7 external_id_lookup_values,
8 external_id_lookup_values_untyped,
9 normalize_external_id,
10 normalize_external_ids,
11)
12
13
14def test_normalize_gtin_variants() -> None:
15 """Equivalent UPC/EAN/GTIN representations normalize to GTIN-14."""
16 canonical = "00724354283857"
17
18 assert normalize_external_id(ExternalID.BARCODE, "724354283857") == canonical
19 assert normalize_external_id(ExternalID.BARCODE, "0724354283857") == canonical
20 assert normalize_external_id(ExternalID.BARCODE, canonical) == canonical
21 assert normalize_external_id(ExternalID.BARCODE, "000724354283857") == canonical
22
23
24def test_invalid_gtin_is_preserved() -> None:
25 """Invalid provider barcode data remains available for exact matching."""
26 assert normalize_external_id(ExternalID.BARCODE, "0724354283858") == "0724354283858"
27 assert normalize_external_id(ExternalID.BARCODE, "catalog-123") == "catalog-123"
28
29
30def test_legacy_gtin_lookup_values() -> None:
31 """A canonical barcode lookup includes legacy zero-padded storage forms."""
32 values = external_id_lookup_values(ExternalID.BARCODE, "0724354283857")
33
34 assert "724354283857" in values
35 assert "0724354283857" in values
36 assert "00724354283857" in values
37 assert "000724354283857" in values
38
39
40def test_untyped_lookup_values_and_itunes_upc() -> None:
41 """Untyped lookups normalize formatted IDs and canonical GTINs convert to UPC."""
42 assert "USRC17607839" in external_id_lookup_values_untyped("US-RC1-76-07839")
43 assert barcode_to_upc("00724354283857") == "724354283857"
44
45
46def test_normalize_isrc_and_mbid() -> None:
47 """Formatted ISRCs and MusicBrainz UUIDs use canonical representations."""
48 mbid = "B1A9C0E9-D987-4042-AE91-78D6A3267D69"
49
50 assert normalize_external_id(ExternalID.ISRC, "us-rc1-76-07839") == "USRC17607839"
51 assert normalize_external_id(ExternalID.ISRC, "invalid-isrc") == "invalid-isrc"
52 assert normalize_external_id(ExternalID.MB_RECORDING, f"{{{mbid}}}") == mbid.lower()
53
54
55def test_normalize_external_ids_deduplicates_values() -> None:
56 """Equivalent identifier forms collapse to one canonical pair."""
57 result = normalize_external_ids(
58 {
59 (ExternalID.BARCODE, "0724354283857"),
60 (ExternalID.BARCODE, "000724354283857"),
61 }
62 )
63
64 assert result == {(ExternalID.BARCODE, "00724354283857")}
65