47 lines
2.4 KiB
Python
47 lines
2.4 KiB
Python
"""Каталог OmniRoute: пропавшие ID и effort-пресеты не должны загрязнять витрину."""
|
|
import sqlite3
|
|
|
|
|
|
def test_sync_hides_stale_and_effort_but_preserves_history(core, omni_server):
|
|
db = sqlite3.connect(core.db_path)
|
|
db.execute("INSERT INTO checks (model_id,checked_at,ok) VALUES ('zai/test-model-a','2026-10-26T00:00:00+00:00',1)")
|
|
db.commit()
|
|
db.close()
|
|
omni_server.state["models"] = {"data": [
|
|
{"id": "agy/test-model-b"},
|
|
{"id": "agy/test-model-b-high"},
|
|
{"id": "cx/gpt-5.6-terra"},
|
|
{"id": "cx/gpt-5.6-terra-low"},
|
|
{"id": "openrouter/foo/model-high:free"},
|
|
{"id": "openrouter/foo/model:free"},
|
|
{"id": "agy/kimi-highway"},
|
|
{"id": "freellmapi/qwen3.8-max"},
|
|
]}
|
|
assert core.client.post("/api/sync").status_code == 200
|
|
ids = {m["id"] for m in core.client.get("/api/models").json()}
|
|
assert ids == {"agy/test-model-b", "cx/gpt-5.6-terra", "openrouter/foo/model:free", "agy/kimi-highway", "freellmapi/qwen3.8-max"}
|
|
assert "zai" not in core.client.get("/api/providers").json()
|
|
db = sqlite3.connect(core.db_path)
|
|
assert db.execute("SELECT active FROM models WHERE id='zai/test-model-a'").fetchone()[0] == 0
|
|
assert db.execute("SELECT COUNT(*) FROM checks WHERE model_id='zai/test-model-a'").fetchone()[0] == 1
|
|
db.close()
|
|
omni_server.requests.clear()
|
|
core.probe.run()
|
|
requested = {x["body"].get("model") for x in omni_server.requests if x["path"] == "/v1/chat/completions"}
|
|
assert requested == ids
|
|
# ID возвращается в каталог — снова активен, история на месте.
|
|
omni_server.state["models"]["data"].append({"id": "zai/test-model-a"})
|
|
core.client.post("/api/sync")
|
|
assert "zai/test-model-a" in {m["id"] for m in core.client.get("/api/models").json()}
|
|
db = sqlite3.connect(core.db_path)
|
|
assert db.execute("SELECT active FROM models WHERE id='zai/test-model-a'").fetchone()[0] == 1
|
|
assert db.execute("SELECT COUNT(*) FROM checks WHERE model_id='zai/test-model-a'").fetchone()[0] == 1
|
|
db.close()
|
|
|
|
|
|
def test_empty_catalog_does_not_hide_everything(core, omni_server):
|
|
original = {m["id"] for m in core.client.get("/api/models").json()}
|
|
omni_server.state["models"] = {"data": []}
|
|
core.client.post("/api/sync")
|
|
assert {m["id"] for m in core.client.get("/api/models").json()} == original
|