#!/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)