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.0 KB · 55 lines python
Raw Blame History
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