#!/usr/bin/env python3
"""
Test geocoding with Nominatim to verify queries work
"""
from geopy.geocoders import Nominatim
from geopy.exc import GeocoderTimedOut, GeocoderServiceError
import time

geolocator = Nominatim(user_agent="farmmatch_geocoder")

# Test queries from our parsing
test_queries = [
    "Saintes, Charente-Maritime, Frankrijk",
    "Saintes, Frankrijk",
    "Aranga, A Coruña, Spanje",
    "Aranga, Spanje",
    "Tegea, Peloponnesos, Griekenland",
    "Tegea, Griekenland",
]

print("Testing geocoding with Nominatim:\n")

for query in test_queries:
    print(f"Query: {query}")
    try:
        location = geolocator.geocode(
            query,
            exactly_one=True,
            viewbox=[(-10, 35), (40, 70)],  # Western Europe bbox
            bounded=True,
            timeout=10
        )

        if location:
            print(f"  ✅ SUCCESS: {location.address[:80]}")
            print(f"  📍 {location.latitude}, {location.longitude}")
        else:
            print(f"  ⚠️ No result found (bounded)")
            # Try unbounded
            location = geolocator.geocode(query, exactly_one=True, timeout=10)
            if location:
                print(f"  ✅ SUCCESS (unbounded): {location.address[:80]}")
                print(f"  📍 {location.latitude}, {location.longitude}")
            else:
                print(f"  ❌ No result found")

    except (GeocoderTimedOut, GeocoderServiceError) as e:
        print(f"  ❌ Error: {str(e)[:50]}")

    print()
    time.sleep(1.5)  # Rate limiting
