scrapping agendadulibre
This commit is contained in:
parent
6deed13d0b
commit
74738772b4
18 changed files with 63557 additions and 11 deletions
139
extractors/test_agendadulibre.py
Normal file
139
extractors/test_agendadulibre.py
Normal file
|
@ -0,0 +1,139 @@
|
|||
#!/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)
|
Loading…
Add table
Add a link
Reference in a new issue