mirror of
https://github.com/Second-Hand-Friends/kleinanzeigen-bot.git
synced 2026-03-12 02:31:45 +01:00
fix: Make description field optional in ad_defaults
The description field in the main configuration (ad_defaults) is now optional. Previously, the bot would fail if no description or affixes were provided in the main configuration. This change addresses issue #435. Changes: - Add fallback to empty string ("") when all description prefix/suffix sources are None in __get_description_with_affixes method - Add comprehensive test suite for description handling in test_init.py - Fix coverage path in pyproject.toml from 'kleinanzeigen_bot' to 'src/kleinanzeigen_bot' New tests cover: - Description handling without main config description - New format affixes in configuration - Mixed old/new format affixes - Ad-level affix precedence - None value handling in affixes - Email address @ symbol replacement This change maintains backward compatibility while making the description field optional in the main configuration, improving flexibility for users.
This commit is contained in:
committed by
Sebastian Thomschke
parent
a8f6817c5c
commit
c7f7b832b2
@@ -1065,3 +1065,118 @@ class TestKleinanzeigenBotPrefixSuffix:
|
||||
|
||||
assert "Length of ad description including prefix and suffix exceeds 4000 chars" in str(exc_info.value)
|
||||
assert "Description length: 4001" in str(exc_info.value)
|
||||
|
||||
|
||||
class TestKleinanzeigenBotDescriptionHandling:
|
||||
"""Tests for description handling functionality."""
|
||||
|
||||
def test_description_without_main_config_description(self, test_bot: KleinanzeigenBot) -> None:
|
||||
"""Test that description works correctly when description is missing from main config."""
|
||||
# Set up config without any description fields
|
||||
test_bot.config = {
|
||||
'ad_defaults': {
|
||||
# No description field at all
|
||||
}
|
||||
}
|
||||
|
||||
# Test with a simple ad config
|
||||
ad_cfg = {
|
||||
"description": "Test Description",
|
||||
"active": True
|
||||
}
|
||||
|
||||
# The description should be returned as-is without any prefix/suffix
|
||||
description = getattr(test_bot, "_KleinanzeigenBot__get_description_with_affixes")(ad_cfg)
|
||||
assert description == "Test Description"
|
||||
|
||||
def test_description_with_only_new_format_affixes(self, test_bot: KleinanzeigenBot) -> None:
|
||||
"""Test that description works with only new format affixes in config."""
|
||||
test_bot.config = {
|
||||
'ad_defaults': {
|
||||
'description_prefix': 'Prefix: ',
|
||||
'description_suffix': ' :Suffix'
|
||||
}
|
||||
}
|
||||
|
||||
ad_cfg = {
|
||||
"description": "Test Description",
|
||||
"active": True
|
||||
}
|
||||
|
||||
description = getattr(test_bot, "_KleinanzeigenBot__get_description_with_affixes")(ad_cfg)
|
||||
assert description == "Prefix: Test Description :Suffix"
|
||||
|
||||
def test_description_with_mixed_config_formats(self, test_bot: KleinanzeigenBot) -> None:
|
||||
"""Test that description works with both old and new format affixes in config."""
|
||||
test_bot.config = {
|
||||
'ad_defaults': {
|
||||
'description_prefix': 'New Prefix: ',
|
||||
'description_suffix': ' :New Suffix',
|
||||
'description': {
|
||||
'prefix': 'Old Prefix: ',
|
||||
'suffix': ' :Old Suffix'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ad_cfg = {
|
||||
"description": "Test Description",
|
||||
"active": True
|
||||
}
|
||||
|
||||
description = getattr(test_bot, "_KleinanzeigenBot__get_description_with_affixes")(ad_cfg)
|
||||
assert description == "New Prefix: Test Description :New Suffix"
|
||||
|
||||
def test_description_with_ad_level_affixes(self, test_bot: KleinanzeigenBot) -> None:
|
||||
"""Test that ad-level affixes take precedence over config affixes."""
|
||||
test_bot.config = {
|
||||
'ad_defaults': {
|
||||
'description_prefix': 'Config Prefix: ',
|
||||
'description_suffix': ' :Config Suffix'
|
||||
}
|
||||
}
|
||||
|
||||
ad_cfg = {
|
||||
"description": "Test Description",
|
||||
"description_prefix": "Ad Prefix: ",
|
||||
"description_suffix": " :Ad Suffix",
|
||||
"active": True
|
||||
}
|
||||
|
||||
description = getattr(test_bot, "_KleinanzeigenBot__get_description_with_affixes")(ad_cfg)
|
||||
assert description == "Ad Prefix: Test Description :Ad Suffix"
|
||||
|
||||
def test_description_with_none_values(self, test_bot: KleinanzeigenBot) -> None:
|
||||
"""Test that None values in affixes are handled correctly."""
|
||||
test_bot.config = {
|
||||
'ad_defaults': {
|
||||
'description_prefix': None,
|
||||
'description_suffix': None,
|
||||
'description': {
|
||||
'prefix': None,
|
||||
'suffix': None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ad_cfg = {
|
||||
"description": "Test Description",
|
||||
"active": True
|
||||
}
|
||||
|
||||
description = getattr(test_bot, "_KleinanzeigenBot__get_description_with_affixes")(ad_cfg)
|
||||
assert description == "Test Description"
|
||||
|
||||
def test_description_with_email_replacement(self, test_bot: KleinanzeigenBot) -> None:
|
||||
"""Test that @ symbols in description are replaced with (at)."""
|
||||
test_bot.config = {
|
||||
'ad_defaults': {}
|
||||
}
|
||||
|
||||
ad_cfg = {
|
||||
"description": "Contact: test@example.com",
|
||||
"active": True
|
||||
}
|
||||
|
||||
description = getattr(test_bot, "_KleinanzeigenBot__get_description_with_affixes")(ad_cfg)
|
||||
assert description == "Contact: test(at)example.com"
|
||||
|
||||
Reference in New Issue
Block a user