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_osm.py4# Desc: Régression du connecteur de découverte OpenStreetMap — rejeu HORS5# LIGNE d'une fixture Overpass réelle : normalisation nœud/chemin,6# POI sans nom rejeté, cuisines mappées, région par ville et par7# ancre lat/lng, services takeaway/delivery.8# ==============================================================================9import json10from pathlib import Path1112import pytest1314from restoka.connectors.osm import OsmConnector1516FIXTURE = json.loads(17 (Path(__file__).parent / "fixtures" / "osm" / "elements.json")18 .read_text(encoding="utf-8"))192021class OfflineOsm(OsmConnector):22 def _overpass(self, key, value):23 return FIXTURE["elements"] if (key, value) == ("amenity", "restaurant") else []242526@pytest.fixture(scope="module")27def restos():28 return [r.finalize() for r in OfflineOsm().fetch()]293031def test_poi_sans_nom_rejete(restos):32 assert len(restos) == 2 # le 3e élément n'a pas de nom333435def test_noeud_complet(restos):36 r = next(x for x in restos if x.name == "Chez Rioux & Pettigrew")37 assert r.uid == "osm:node/1234567"38 assert r.address == "160 Quai Saint-André"39 assert r.region == "Capitale-Nationale" # via addr:city40 assert r.postal_code == "G1K 3Y2"41 assert "quebecois" in r.cuisines and "fruits-de-mer" in r.cuisines42 assert r.hours["osm"] == "Tu-Sa 17:30-22:00"43 assert "vegetarien" in r.dietary_options44 assert "salle" in r.services and "takeout" not in r.services45 assert r.menu is None # découverte : pas de menu464748def test_chemin_avec_centre(restos):49 r = next(x for x in restos if x.name == "Le Gros Jambon")50 assert r.uid == "osm:way/7654321"51 assert r.lat == pytest.approx(45.5236)52 assert r.region == "Montréal" # via ancre lat/lng (pas de ville)53 assert "quebecois" in r.cuisines54 assert "takeout" in r.services and "delivery" in r.services55