Files
invoice-master-poc-v2/tests/shared/augmentation/test_presets.py
Yaojia Wang 33ada0350d WIP
2026-01-30 00:44:21 +01:00

103 lines
3.6 KiB
Python

"""
Tests for augmentation presets module.
TDD Phase 4: RED - Write tests first, then implement to pass.
"""
import pytest
class TestPresets:
"""Tests for augmentation presets."""
def test_presets_dict_exists(self) -> None:
"""Test that PRESETS dictionary exists."""
from shared.augmentation.presets import PRESETS
assert isinstance(PRESETS, dict)
assert len(PRESETS) > 0
def test_expected_presets_exist(self) -> None:
"""Test that expected presets are defined."""
from shared.augmentation.presets import PRESETS
expected_presets = ["conservative", "moderate", "aggressive", "scanned_document"]
for preset_name in expected_presets:
assert preset_name in PRESETS, f"Missing preset: {preset_name}"
def test_preset_structure(self) -> None:
"""Test that each preset has required structure."""
from shared.augmentation.presets import PRESETS
for name, preset in PRESETS.items():
assert "description" in preset, f"Preset {name} missing description"
assert "config" in preset, f"Preset {name} missing config"
assert isinstance(preset["description"], str)
assert isinstance(preset["config"], dict)
def test_get_preset_config(self) -> None:
"""Test getting config from preset."""
from shared.augmentation.presets import get_preset_config
config = get_preset_config("conservative")
assert config is not None
# Should have at least some augmentations defined
assert len(config) > 0
def test_get_preset_config_unknown_raises(self) -> None:
"""Test that getting unknown preset raises error."""
from shared.augmentation.presets import get_preset_config
with pytest.raises(ValueError, match="Unknown preset"):
get_preset_config("nonexistent_preset")
def test_create_config_from_preset(self) -> None:
"""Test creating AugmentationConfig from preset."""
from shared.augmentation.config import AugmentationConfig
from shared.augmentation.presets import create_config_from_preset
config = create_config_from_preset("moderate")
assert isinstance(config, AugmentationConfig)
def test_conservative_preset_is_safe(self) -> None:
"""Test that conservative preset only enables safe augmentations."""
from shared.augmentation.presets import create_config_from_preset
config = create_config_from_preset("conservative")
# Should NOT enable geometric transforms
assert config.perspective_warp.enabled is False
# Should NOT enable heavy degradation
assert config.wrinkle.enabled is False
assert config.edge_damage.enabled is False
assert config.stain.enabled is False
def test_aggressive_preset_enables_more(self) -> None:
"""Test that aggressive preset enables more augmentations."""
from shared.augmentation.presets import create_config_from_preset
config = create_config_from_preset("aggressive")
enabled = config.get_enabled_augmentations()
# Should enable multiple augmentation types
assert len(enabled) >= 6
def test_list_presets(self) -> None:
"""Test listing available presets."""
from shared.augmentation.presets import list_presets
presets = list_presets()
assert isinstance(presets, list)
assert len(presets) >= 4
# Each item should have name and description
for preset in presets:
assert "name" in preset
assert "description" in preset