feat(settings): rename custom gateway models

This commit is contained in:
chengma
2026-07-21 09:23:08 +08:00
parent 0da2d8a3c0
commit d76a1de864
6 changed files with 238 additions and 3 deletions
+79
View File
@@ -2489,6 +2489,85 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assert_removed(temp_dir)
def test_settings_tab_renames_model_and_migrates_default_references(self):
with self.make_temp_dir() as temp_dir:
cfg = self.make_config(temp_dir)
cfg["ai"] = appconfig.default_config()["ai"]
cfg["ai"]["default_text_model"] = "GPT-5.5 文本"
appconfig.save_config(cfg, path=cfg["config_path"])
statuses = []
tab = SettingsTab(
config=cfg,
ai_models_path=cfg["ai_models_path"],
status_callback=statuses.append,
)
self.addCleanup(tab.close)
old_model = appconfig.get_model("GPT-5.5 文本", path=cfg["ai_models_path"])
picker_layout = tab.model_combo.parentWidget().layout()
self.assertIs(tab.add_model_button, picker_layout.itemAt(1).widget())
self.assertIs(tab.rename_model_button, picker_layout.itemAt(2).widget())
self.assertIs(tab.delete_model_button, picker_layout.itemAt(3).widget())
self.assertTrue(tab.rename_model_button.isEnabled())
with mock.patch(
"app.gui.tabs.settings.QInputDialog.getText",
return_value=("自定义文本模型", True),
):
tab.rename_model()
self.assertEqual("自定义文本模型", tab.current_model_name)
self.assertEqual(
{**old_model, "name": "自定义文本模型"},
appconfig.get_model("自定义文本模型", path=cfg["ai_models_path"]),
)
self.assertIsNone(tab._model_by_name("GPT-5.5 文本"))
self.assertEqual(
"自定义文本模型",
tab.default_text_model_combo.currentData(),
)
saved = appconfig.load_config(cfg["config_path"])
self.assertEqual("自定义文本模型", saved["ai"]["default_text_model"])
self.assertEqual("Nano Banana 2", saved["ai"]["default_image_model"])
self.assertIn(
"AI 模型已重命名:GPT-5.5 文本 → 自定义文本模型",
statuses[-1],
)
with mock.patch(
"app.gui.tabs.settings.QInputDialog.getText",
return_value=("", False),
):
tab.rename_model()
self.assertEqual("自定义文本模型", tab.current_model_name)
tab.model_combo.setCurrentIndex(tab.model_combo.findData("Nano Banana 2"))
with mock.patch(
"app.gui.tabs.settings.QInputDialog.getText",
return_value=("自定义图片模型", True),
):
tab.rename_model()
saved = appconfig.load_config(cfg["config_path"])
self.assertEqual("自定义图片模型", saved["ai"]["default_image_model"])
self.assertEqual(
"自定义图片模型",
tab.default_image_model_combo.currentData(),
)
with mock.patch(
"app.gui.tabs.settings.QInputDialog.getText",
return_value=("自定义文本模型", True),
), mock.patch("app.gui.tabs.settings.QMessageBox.warning") as warning:
tab.rename_model()
warning.assert_called_once()
self.assertEqual("自定义图片模型", tab.current_model_name)
self.assertEqual(
"自定义图片模型",
appconfig.load_config(cfg["config_path"])["ai"]["default_image_model"],
)
self.assert_removed(temp_dir)
def test_settings_tab_starts_connection_test_worker(self):
with self.make_temp_dir() as temp_dir:
cfg = self.make_config(temp_dir)