BuyingAgent/backend/tests/unit/test_observation_attributes.py
Lars e6d53e0eeb
Some checks failed
Deploy Development / deploy (push) Successful in 2m1s
Test Suite / pytest-backend (push) Failing after 14s
Test Suite / smoke-dev (push) Successful in 1s
Test Suite / frontend-checks (push) Successful in 26s
Zeige die echten Produktwerte aus der Trefferliste und vermeide doppelte RAM/Speicher-Schluessel.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-04 15:18:48 +02:00

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"})