fix(models): preserve preset rename compatibility

This commit is contained in:
Xubin Ren
2026-08-16 11:50:56 +08:00
parent a956fe1d60
commit 0a6ee1c539
20 changed files with 307 additions and 46 deletions
+39 -1
View File
@@ -24,9 +24,15 @@ def _router(
config_path: Path | None = None,
mcp_runtime_status: Callable[[], Mapping[str, str]] | None = None,
mcp_reload: Callable[[], Awaitable[dict[str, object]]] | None = None,
rename_model_preset: Callable[[str, str], int] | None = None,
refresh_runtime_config: Callable[[], None] | None = None,
) -> WebUISettingsRouter:
return WebUISettingsRouter(
settings=WebUISettingsServices.create(config_path or get_config_path()),
settings=WebUISettingsServices.create(
config_path or get_config_path(),
rename_model_preset=rename_model_preset,
refresh_runtime_config=refresh_runtime_config,
),
bus=SimpleNamespace(),
logger=SimpleNamespace(exception=lambda *_args: None),
check_api_token=lambda _request: authorized,
@@ -346,6 +352,38 @@ async def test_model_preset_mutation_routes(
assert captured["query"] == expected_query
@pytest.mark.asyncio
async def test_model_update_route_forwards_session_rename_dependency(monkeypatch) -> None:
rename_model_preset = MagicMock(return_value=2)
refresh_runtime_config = MagicMock()
captured: dict[str, object] = {}
def update(query, *, config_path=None, rename_model_preset=None):
captured.update(query=query, rename_model_preset=rename_model_preset)
return {"updated": True}
monkeypatch.setattr("nanobot.webui.settings_routes.update_model_configuration", update)
path = "/api/settings/model-configurations/update"
request = _mutation_request(path, {"name": "openai", "new_name": "Codex"})
response = await _router(
rename_model_preset=rename_model_preset,
refresh_runtime_config=refresh_runtime_config,
).dispatch(
None,
request,
path,
)
assert response is not None
assert response.status_code == 200
assert captured == {
"query": {"name": ["openai"], "new_name": ["Codex"]},
"rename_model_preset": rename_model_preset,
}
refresh_runtime_config.assert_called_once_with()
@pytest.mark.asyncio
async def test_settings_get_mutation_route_is_method_not_allowed() -> None:
path = "/api/settings/provider/update"