Доработка управления моделями

This commit is contained in:
Shaman
2026-10-05 02:19:46 +03:00
parent f5ec608fc2
commit 0c5c0b423b
16 changed files with 629 additions and 252 deletions
+42 -11
View File
@@ -1,4 +1,7 @@
from app.config import DEFAULT_MAPPING, Settings
import pytest
from app.config import Settings
from app.errors import ConfigError
def test_defaults():
@@ -6,7 +9,7 @@ def test_defaults():
assert s.comfy_base_url == "http://192.168.0.3:8188"
assert s.execution_timeout == 300.0
assert s.poll_interval == 1.5
assert s.mapping() == DEFAULT_MAPPING
assert s.models_file.name == "models.json"
def test_env_override(monkeypatch):
@@ -21,12 +24,40 @@ def test_env_override(monkeypatch):
assert s.poll_interval == 0.5
def test_mapping_file_override(tmp_path):
f = tmp_path / "mapping.json"
f.write_text('{"create": {"prompt": {"node": "1", "field": "t"}}}', encoding="utf-8")
s = Settings(_env_file=None, mapping_file=f)
m = s.mapping()
assert m["create"]["prompt"] == {"node": "1", "field": "t"}
# other sections/keys keep defaults
assert m["edit"] == DEFAULT_MAPPING["edit"]
assert m["create"]["seed"] == DEFAULT_MAPPING["create"]["seed"]
def test_registry_loads_shipped_in_order():
s = Settings(_env_file=None)
registry = s.load_registry()
# order preserved (first = preferred for default selection)
assert list(registry) == ["z-image-turbo", "qwen-image-edit"]
assert registry["z-image-turbo"].workflow.name == "z_image_turbo.json"
assert registry["z-image-turbo"].owned_by == "comfy-adapter"
def test_registry_missing_file_fails_fast(tmp_path):
s = Settings(_env_file=None, models_file=tmp_path / "nope.json")
with pytest.raises(ConfigError, match="not found"):
s.load_registry()
def test_registry_malformed_json_fails_fast(tmp_path):
f = tmp_path / "models.json"
f.write_text("{not valid", encoding="utf-8")
s = Settings(_env_file=None, models_file=f)
with pytest.raises(ConfigError, match="not valid JSON"):
s.load_registry()
def test_registry_empty_fails_fast(tmp_path):
f = tmp_path / "models.json"
f.write_text("{}", encoding="utf-8")
s = Settings(_env_file=None, models_file=f)
with pytest.raises(ConfigError, match="non-empty"):
s.load_registry()
def test_registry_bad_entry_fails_fast(tmp_path):
f = tmp_path / "models.json"
f.write_text('{"m": {"not_workflow": "x.json"}}', encoding="utf-8")
s = Settings(_env_file=None, models_file=f)
with pytest.raises(ConfigError, match="invalid entry"):
s.load_registry()