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%
1.9 KB · 47 lines python
Raw Blame History
1# ==============================================================================2# Author: Simon-Pierre Boucher <contact@spboucher.ai>3# File:   tests/test_gloriafood.py4# Desc:   Connecteur GloriaFood (Palier 1, takeout, enrichissement) —5#         build_menu tolérant : categories[].items[] avec variantes `sizes`6#         -> options Format en price_delta, payload liste toléré, doublons7#         de catégories écartés.8# ==============================================================================9from restoka.connectors.gloriafood import build_menu1011PAYLOAD = {"categories": [12    {"name": "Pizzas", "items": [13        {"name": "Margherita", "description": "Tomate, basilic",14         "price": 12.0,15         "sizes": [{"name": "Petite", "price": 12.0},16                   {"name": "Grande", "price": 18.5},17                   {"name": "", "price": 99.0}]},   # sans nom : écartée18        {"name": "Sans prix", "price": 0},19    ]},20    {"name": "Pizzas", "items": [{"name": "Dup", "price": 1.0}]},21    "pas-un-dict",22]}232425def test_build_menu_sizes_en_options():26    m = build_menu(PAYLOAD, "2026-08-25T00:00:00Z")27    assert m["price_context"] == "takeout"28    assert m["price_source"] == "gloriafood"29    assert len(m["sections"]) == 1                 # doublon écarté30    items = m["sections"][0]["items"]31    assert items[0]["price"] == 12.032    fmt = items[0]["options"][0]33    assert fmt["group"] == "Format" and fmt["required"] is True34    assert fmt["choices"] == [35        {"name": "Petite", "price_delta": 0.0},36        {"name": "Grande", "price_delta": 6.5}]37    assert items[1]["price"] is None               # prix 0 -> inconnu38    assert "options" not in items[1]394041def test_build_menu_payload_liste_et_vide():42    # payload directement en liste de catégories : toléré43    m = build_menu(PAYLOAD["categories"], "x")44    assert m and m["sections"]45    assert build_menu({}, "x") is None46    assert build_menu({"categories": []}, "x") is None47