# ============================================================================== # Author: Simon-Pierre Boucher # File: tests/test_siteresto_platforms.py # Desc: site-resto, hub de découverte multi-plateformes — détection des # widgets GloriaFood (data-glf-*), ChowNow, Square Online et Clover # dans le HTML, consignation dans data/-discovered.json # avec l'uid du resto porteur (dédup par key). # ============================================================================== import json import restoka.connectors.siteresto as sr HTML = """ Commander Menu Clover """ def test_discover_platforms(): c = sr.SiteRestoConnector() ps = {p["name"]: p for p in c._discover_platforms(HTML)} assert set(ps) == {"gloriafood", "chownow", "square", "clover"} assert ps["gloriafood"]["key"] == "f9e8d7c6-9999-8888-7777-666655554444" assert ps["gloriafood"]["cuid"] == "a1b2c3d4-1111-2222-3333-444455556666" assert ps["chownow"]["key"] == "2717" assert ps["square"]["key"] == "mon-resto.square.site" assert ps["clover"]["key"] == "mon-resto-mtl" assert c._discover_platforms("rien") == [] def test_menu_platforms_couvertes_par_connecteurs(): # les plateformes « bloquantes » ont toutes un connecteur dédié assert set(sr._MENU_PLATFORMS) == {"gloriafood", "chownow", "square"} def test_record_platform(tmp_path, monkeypatch): monkeypatch.setattr(sr, "DATA_DIR", tmp_path) c = sr.SiteRestoConnector() p = {"name": "gloriafood", "key": "ruid-1", "cuid": "cuid-1"} c._record_platform(p, "Chez Test", "cheztest.ca", "osm:123") c._record_platform(p, "Chez Test", "cheztest.ca", "osm:123") # dédup c._record_platform({"name": "chownow", "key": "2717"}, "Autre", "autre.ca", "osm:456") gf = json.loads((tmp_path / "gloriafood-discovered.json").read_text()) assert len(gf["integrations"]) == 1 integ = gf["integrations"][0] assert integ["key"] == "ruid-1" and integ["uid"] == "osm:123" assert integ["cuid"] == "cuid-1" cn = json.loads((tmp_path / "chownow-discovered.json").read_text()) assert cn["integrations"][0]["key"] == "2717"