# ============================================================================== # Author: Simon-Pierre Boucher # File: tests/test_siteresto_contact.py # Desc: Extraction téléphone / horaires / lien de réservation depuis la page # d'accueil d'un site de resto (HORS LIGNE) : lien tel:, JSON-LD # LocalBusiness (openingHoursSpecification), plateformes de # réservation reconnues, regex de secours, normalisation E.164. # ============================================================================== from restoka.connectors.siteresto import SiteRestoConnector from restoka.normalize import normalize_phone HTML = """ Appelez-nous Réserver Menu """ HTML_REGEX_ONLY = """

Réservation : (514) 555-9876

Réserver une table """ def test_extraction_complete(): c = SiteRestoConnector._extract_contact(HTML, "https://chez-test.ca") assert c["phone"] == "+14185551234" assert c["reservation_url"] == "https://www.opentable.ca/r/chez-test-quebec" assert c["hours"]["mon"] == [["11:00", "22:00"]] assert c["hours"]["tue"] == [["11:00", "22:00"]] def test_extraction_regex_et_libro(): c = SiteRestoConnector._extract_contact(HTML_REGEX_ONLY, "https://exemple.ca") assert c["phone"] == "+15145559876" assert "libroreserve.com" in c["reservation_url"] assert c["hours"] is None def test_extraction_vide(): c = SiteRestoConnector._extract_contact("", "https://exemple.ca") assert c == {"phone": "", "hours": None, "reservation_url": ""} def test_normalize_phone(): assert normalize_phone("tel:418.555.1234") == "+14185551234" assert normalize_phone("(514) 555-9876") == "+15145559876" assert normalize_phone("+1 450 555 0000") == "+14505550000" assert normalize_phone("1234") == "" assert normalize_phone(None) == ""