#!/usr/bin/env python3
"""
Test the MatchResult validation fix
"""

from pydantic import ValidationError
import sys
import os

# Add the src directory to Python path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src'))

from modules.prompt.schemas.responses import MatchResult

def test_match_result_validation():
    """Test MatchResult with various input types"""
    
    print("🧪 Testing MatchResult Validation")
    print("=" * 40)
    
    # Test 1: Valid data
    try:
        result1 = MatchResult(
            field_name="city",
            provided_value="Test City",
            found_in_document="Test City",
            is_match=True,
            confidence="high"
        )
        print("✅ Test 1 PASSED: Valid data")
    except Exception as e:
        print(f"❌ Test 1 FAILED: {e}")
    
    # Test 2: None values (should be handled by validator)
    try:
        result2 = MatchResult(
            field_name=None,
            provided_value=None,
            found_in_document=None,
            is_match=False,
            confidence=None
        )
        print("✅ Test 2 PASSED: None values handled")
        print(f"   field_name: '{result2.field_name}'")
        print(f"   provided_value: '{result2.provided_value}'")
        print(f"   confidence: '{result2.confidence}'")
    except Exception as e:
        print(f"❌ Test 2 FAILED: {e}")
    
    # Test 3: Empty strings
    try:
        result3 = MatchResult(
            field_name="",
            provided_value="",
            found_in_document=None,
            is_match=False,
            confidence=""
        )
        print("✅ Test 3 PASSED: Empty strings handled")
    except Exception as e:
        print(f"❌ Test 3 FAILED: {e}")
    
    # Test 4: Simulate problematic OpenAI response
    problematic_data = {
        "field_name": "city",
        "provided_value": None,  # This was causing the error
        "found_in_document": "Some City",
        "is_match": False,
        "confidence": "medium"
    }
    
    try:
        result4 = MatchResult(**problematic_data)
        print("✅ Test 4 PASSED: Problematic OpenAI response handled")
        print(f"   provided_value after validation: '{result4.provided_value}'")
    except Exception as e:
        print(f"❌ Test 4 FAILED: {e}")

if __name__ == "__main__":
    test_match_result_validation()