SPB Git forge

spb/resto-ka

Public

Resto·Ka — tous les restaurants du Québec, menus complets et prix réels (famille ·Ka)

52commits 1branches 0releases
11.6 MBsize
maindefault branch
19 days agolast push
Python 69.3% TypeScript 16.7% CSS 7.9% JavaScript 4.7% HTML 1.4%
2.4 KB · 62 lines python
Raw Blame History
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&eacute;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