Resto·Ka — tous les restaurants du Québec, menus complets et prix réels (famille ·Ka)
Python 69.3%
TypeScript 16.7%
CSS 7.9%
JavaScript 4.7%
HTML 1.4%
1# ==============================================================================2# Author: Simon-Pierre Boucher <contact@spboucher.ai>3# File: tests/test_siteresto_contact.py4# Desc: Extraction téléphone / horaires / lien de réservation depuis la page5# d'accueil d'un site de resto (HORS LIGNE) : lien tel:, JSON-LD6# LocalBusiness (openingHoursSpecification), plateformes de7# réservation reconnues, regex de secours, normalisation E.164.8# ==============================================================================9from restoka.connectors.siteresto import SiteRestoConnector10from restoka.normalize import normalize_phone1112HTML = """13<html><head>14<script type="application/ld+json">15{"@context":"https://schema.org","@type":"Restaurant","name":"Chez Test",16 "telephone":"+1-418-555-1234",17 "openingHoursSpecification":[18 {"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday"],19 "opens":"11:00","closes":"22:00"}]}20</script>21</head><body>22<a href="tel:+14185551234">Appelez-nous</a>23<a href="https://www.opentable.ca/r/chez-test-quebec">Réserver</a>24<a href="/menu">Menu</a>25</body></html>26"""2728HTML_REGEX_ONLY = """29<html><body><p>Réservation : (514) 555-9876</p>30<a href="https://widgets.libroreserve.com/QC012345">Réserver une table</a>31</body></html>32"""333435def test_extraction_complete():36 c = SiteRestoConnector._extract_contact(HTML, "https://chez-test.ca")37 assert c["phone"] == "+14185551234"38 assert c["reservation_url"] == "https://www.opentable.ca/r/chez-test-quebec"39 assert c["hours"]["mon"] == [["11:00", "22:00"]]40 assert c["hours"]["tue"] == [["11:00", "22:00"]]414243def test_extraction_regex_et_libro():44 c = SiteRestoConnector._extract_contact(HTML_REGEX_ONLY,45 "https://exemple.ca")46 assert c["phone"] == "+15145559876"47 assert "libroreserve.com" in c["reservation_url"]48 assert c["hours"] is None495051def test_extraction_vide():52 c = SiteRestoConnector._extract_contact("", "https://exemple.ca")53 assert c == {"phone": "", "hours": None, "reservation_url": ""}545556def test_normalize_phone():57 assert normalize_phone("tel:418.555.1234") == "+14185551234"58 assert normalize_phone("(514) 555-9876") == "+15145559876"59 assert normalize_phone("+1 450 555 0000") == "+14505550000"60 assert normalize_phone("1234") == ""61 assert normalize_phone(None) == ""62