feat(ai-studio): add main workspace tab
This commit is contained in:
+58
-3
@@ -12,7 +12,7 @@ sys.path.insert(0, os.path.dirname(__file__))
|
||||
from _helpers import TempDirMixin
|
||||
|
||||
from app import gui
|
||||
from app import accounts, ai, appconfig, db, image_paths, prompts, update_check
|
||||
from app import accounts, ai, appconfig, db, image_paths, image_studio, prompts, update_check
|
||||
|
||||
if gui.QT_IMPORT_ERROR is not None:
|
||||
raise unittest.SkipTest("PySide6 未安装")
|
||||
@@ -33,6 +33,7 @@ from app.gui import (
|
||||
CollectTab,
|
||||
GenerateWorker,
|
||||
GenerateTab,
|
||||
ImageStudioTab,
|
||||
MainWindow,
|
||||
SettingsTab,
|
||||
TAB_STYLE,
|
||||
@@ -436,13 +437,13 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
self.assert_foreground(model, 0, 4, gui.COLOR_SUCCESS)
|
||||
self.assert_foreground(model, 0, 5, gui.COLOR_SUCCESS)
|
||||
|
||||
def test_main_window_has_five_tabs_in_workflow_order(self):
|
||||
def test_main_window_has_workflow_tabs_in_order(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
window = MainWindow(config=self.make_config(temp_dir))
|
||||
self.addCleanup(window.close)
|
||||
|
||||
self.assertEqual(gui.display_name(), window.windowTitle())
|
||||
self.assertEqual(5, window.tabs.count())
|
||||
self.assertEqual(6, window.tabs.count())
|
||||
self.assertEqual(
|
||||
TAB_TITLES,
|
||||
[window.tabs.tabText(index) for index in range(window.tabs.count())],
|
||||
@@ -460,6 +461,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
self.assertIsInstance(window.tabs.widget(1), GenerateTab)
|
||||
self.assertIsInstance(window.tabs.widget(2), ApplyTab)
|
||||
self.assertIsInstance(window.tabs.widget(4), SettingsTab)
|
||||
self.assertIsInstance(window.tabs.widget(5), ImageStudioTab)
|
||||
self.assertEqual(
|
||||
"回写旧数据到 Excel",
|
||||
window.tabs.widget(0).write_back_button.text(),
|
||||
@@ -487,6 +489,59 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_image_studio_tab_builds_project_pool_and_template_controls(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
cfg = self.make_config(temp_dir)
|
||||
prompts_dir = os.path.join(temp_dir, "prompts", "image_studio")
|
||||
accounts.create_account("主店", "alias-a", debug_port=9222, config=cfg)
|
||||
prompts.save_image_studio_template("工场模板", "完整提示词", prompts_dir)
|
||||
|
||||
tab = ImageStudioTab(
|
||||
config=cfg,
|
||||
db_path=cfg["db_path"],
|
||||
prompts_dir=prompts_dir,
|
||||
)
|
||||
self.addCleanup(tab.close)
|
||||
|
||||
self.assertEqual("imageStudioTab", tab.objectName())
|
||||
self.assertEqual("⑥ AI工场", TAB_TITLES[5])
|
||||
self.assertGreaterEqual(tab.account_combo.count(), 1)
|
||||
self.assertEqual("alias-a", tab.account_combo.itemData(0))
|
||||
self.assertNotIn(
|
||||
"导入本地图片",
|
||||
" ".join(button.text() for button in tab.findChildren(gui.QPushButton)),
|
||||
)
|
||||
self.assertEqual("完整提示词", prompts.load_image_studio_template("工场模板", prompts_dir))
|
||||
template_index = tab.template_combo.findData("工场模板")
|
||||
self.assertGreaterEqual(template_index, 0)
|
||||
tab.template_combo.setCurrentIndex(template_index)
|
||||
tab.load_selected_template()
|
||||
self.assertEqual("完整提示词", tab.prompt_edit.toPlainText())
|
||||
|
||||
tab.item_id_edit.setText("51100639510")
|
||||
tab.open_project()
|
||||
self.assertIsNotNone(tab.current_project)
|
||||
self.assertEqual("alias-a", tab.current_project.account_alias)
|
||||
self.assertEqual("51100639510", tab.current_project.item_id)
|
||||
self.assertEqual(1, tab.project_table.rowCount())
|
||||
|
||||
original = image_studio.sync_original_asset_urls(
|
||||
tab.current_project.id,
|
||||
[{"index": 1, "src": "https://susercontent.com/main-1.jpg"}],
|
||||
path=cfg["db_path"],
|
||||
)[0]
|
||||
tab.refresh_project_assets()
|
||||
|
||||
self.assertEqual(1, tab.original_table.rowCount())
|
||||
self.assertEqual("1", tab.original_table.item(0, 0).text())
|
||||
self.assertEqual("远程待下载", tab.original_table.item(0, 1).text())
|
||||
self.assertEqual(1, tab.pool_table.rowCount())
|
||||
self.assertEqual("原图", tab.pool_table.item(0, 0).text())
|
||||
self.assertEqual("远程待下载", tab.pool_table.item(0, 2).text())
|
||||
self.assertEqual(original.id, tab.pool_table.item(0, 0).data(gui.Qt.UserRole)["asset_id"])
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_startup_update_gate_forced_blocks_and_opens_download(self):
|
||||
boxes = []
|
||||
|
||||
|
||||
Reference in New Issue
Block a user