diff --git a/src/kleinanzeigen_bot/extract.py b/src/kleinanzeigen_bot/extract.py index da61770..1f5bda9 100644 --- a/src/kleinanzeigen_bot/extract.py +++ b/src/kleinanzeigen_bot/extract.py @@ -466,7 +466,9 @@ class AdExtractor(WebScrapingMixin): """ # e.g. "art_s:lautsprecher_kopfhoerer|condition_s:like_new|versand_s:t" - special_attributes_str = belen_conf["universalAnalyticsOpts"]["dimensions"]["dimension108"] + special_attributes_str = belen_conf["universalAnalyticsOpts"]["dimensions"].get("dimension108") + if not special_attributes_str: + return {} special_attributes = dict(item.split(":") for item in special_attributes_str.split("|") if ":" in item) special_attributes = {k: v for k, v in special_attributes.items() if not k.endswith(".versand_s") and k != "versand_s"} return special_attributes diff --git a/tests/unit/test_extract.py b/tests/unit/test_extract.py index d91da9f..49b7295 100644 --- a/tests/unit/test_extract.py +++ b/tests/unit/test_extract.py @@ -754,6 +754,20 @@ class TestAdExtractorCategory: assert "art_s" in result assert result["art_s"] == "maedchen" + @pytest.mark.asyncio + # pylint: disable=protected-access + async def test_extract_special_attributes_missing_dimension108(self, extractor:AdExtractor) -> None: + """Test extraction of special attributes when dimension108 key is missing.""" + belen_conf:dict[str, Any] = { + "universalAnalyticsOpts": { + "dimensions": { + # dimension108 key is completely missing + } + } + } + result = await extractor._extract_special_attributes_from_ad_page(belen_conf) + assert result == {} + class TestAdExtractorContact: """Tests for contact information extraction."""