# tests/unit/utils/test_data_validation.py import pytest from app.utils.data_processing import GTINProcessor, PriceProcessor @pytest.mark.unit class TestDataValidation: def test_gtin_normalization_edge_cases(self): """Test GTIN normalization with edge cases""" processor = GTINProcessor() # Test with leading zeros assert processor.normalize("000123456789") == "000123456789" # Test with spaces assert processor.normalize("123 456 789 012") == "123456789012" # Test with dashes assert processor.normalize("123-456-789-012") == "123456789012" # Test very long numbers long_number = "1234567890123456789" normalized = processor.normalize(long_number) assert len(normalized) <= 14 # Should be truncated def test_price_parsing_edge_cases(self): """Test price parsing with edge cases""" processor = PriceProcessor() # Test with multiple decimal places price, currency = processor.parse_price_currency("12.999 EUR") assert price == "12.999" # Test with no currency price, currency = processor.parse_price_currency("15.50") assert price == "15.50" # Test with unusual formatting price, currency = processor.parse_price_currency("EUR 25,50") assert currency == "EUR" assert price == "25.50" # Comma should be converted to dot def test_input_sanitization(self): """Test input sanitization""" # These tests would verify that inputs are properly sanitized # to prevent SQL injection, XSS, etc. # Implementation would depend on your sanitization logic