oedb-backend/extractors/test_agendadulibre.py

140 lines
4.1 KiB
Python
Raw Normal View History

2025-10-04 19:26:00 +02:00
#!/usr/bin/env python3
"""
Script de test pour le scraper de l'agenda du libre
"""
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from agendadulibre import AgendaDuLibreScraper, api_oedb
import logging
# Configuration du logging pour les tests
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
def test_ical_fetch():
"""Test de récupération du fichier iCal"""
print("🧪 Test de récupération du fichier iCal...")
scraper = AgendaDuLibreScraper()
calendar = scraper.fetch_ical_data()
if calendar:
print("✅ Fichier iCal récupéré avec succès")
# Compter les événements
event_count = 0
for component in calendar.walk():
if component.name == "VEVENT":
event_count += 1
print(f"📅 Nombre d'événements trouvés: {event_count}")
return True
else:
print("❌ Échec de la récupération du fichier iCal")
return False
def test_event_parsing():
"""Test de parsing d'un événement"""
print("🧪 Test de parsing d'événement...")
scraper = AgendaDuLibreScraper()
calendar = scraper.fetch_ical_data()
if not calendar:
print("❌ Impossible de récupérer le fichier iCal pour le test")
return False
# Trouver le premier événement
for component in calendar.walk():
if component.name == "VEVENT":
parsed_event = scraper.parse_event(component)
if parsed_event:
print("✅ Événement parsé avec succès:")
print(f" ID: {parsed_event['id']}")
print(f" Titre: {parsed_event['event']['properties']['label']}")
print(f" Début: {parsed_event['event']['properties']['start']}")
print(f" Fin: {parsed_event['event']['properties']['stop']}")
print(f" Lieu: {parsed_event['event']['properties']['where']}")
return True
else:
print("❌ Échec du parsing de l'événement")
return False
print("❌ Aucun événement trouvé pour le test")
return False
def test_data_persistence():
"""Test de persistance des données"""
print("🧪 Test de persistance des données...")
scraper = AgendaDuLibreScraper()
# Test de sauvegarde
test_data = {
"events": {
"test_event_123": {
"status": "saved",
"message": "Test event",
"last_attempt": "2024-01-01T00:00:00",
"event": {
"properties": {
"label": "Test Event",
"what": "culture.geek"
}
}
}
},
"last_update": "2024-01-01T00:00:00"
}
scraper.events_data = test_data
scraper.save_events_data()
# Test de chargement
scraper2 = AgendaDuLibreScraper()
if "test_event_123" in scraper2.events_data["events"]:
print("✅ Persistance des données fonctionne correctement")
return True
else:
print("❌ Échec de la persistance des données")
return False
def main():
"""Exécute tous les tests"""
print("🚀 Démarrage des tests du scraper agenda du libre")
print("=" * 50)
tests = [
test_ical_fetch,
test_event_parsing,
test_data_persistence
]
passed = 0
total = len(tests)
for test in tests:
try:
if test():
passed += 1
print()
except Exception as e:
print(f"❌ Erreur lors du test {test.__name__}: {e}")
print()
print("=" * 50)
print(f"📊 Résultats: {passed}/{total} tests réussis")
if passed == total:
print("✅ Tous les tests sont passés!")
return True
else:
print("❌ Certains tests ont échoué")
return False
if __name__ == "__main__":
success = main()
sys.exit(0 if success else 1)