29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
|
|
from app.discovery.attributes import is_derived_duplicate, merge_observation_attributes
|
||
|
|
|
||
|
|
|
||
|
|
def test_merge_keeps_product_values_and_drops_alias_duplicates() -> None:
|
||
|
|
items = merge_observation_attributes(
|
||
|
|
{
|
||
|
|
"CPU": "Apple M5 - 10 Core CPU",
|
||
|
|
"Display": '14.2" (3024x1964)',
|
||
|
|
"RAM": "16GB LPDDR5X",
|
||
|
|
"Speicher": "512GB SSD",
|
||
|
|
"Grafik": "",
|
||
|
|
},
|
||
|
|
{"ram_gb": 16, "storage_gb": 512},
|
||
|
|
)
|
||
|
|
by_name = {item["raw_name"]: item for item in items}
|
||
|
|
assert "ram_gb" not in by_name
|
||
|
|
assert "storage_gb" not in by_name
|
||
|
|
assert by_name["CPU"]["raw_value"] == "Apple M5 - 10 Core CPU"
|
||
|
|
assert by_name["Display"]["raw_value"] == '14.2" (3024x1964)'
|
||
|
|
assert by_name["RAM"]["normalized_value"] == 16
|
||
|
|
assert by_name["RAM"]["attribute_key"] == "ram_gb"
|
||
|
|
assert by_name["Speicher"]["normalized_value"] == 512
|
||
|
|
assert "Grafik" not in by_name
|
||
|
|
|
||
|
|
|
||
|
|
def test_derived_duplicate_is_detected() -> None:
|
||
|
|
assert is_derived_duplicate("ram_gb", {"ram", "cpu"})
|
||
|
|
assert not is_derived_duplicate("cpu", {"ram", "cpu"})
|