feat: add semantic status bar colors
This commit is contained in:
@@ -180,6 +180,74 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
"回写旧数据到 Excel",
|
||||
window.tabs.widget(0).write_back_button.text(),
|
||||
)
|
||||
self.assertIn(gui.COLOR_MUTED, window.statusBar().styleSheet())
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_main_window_status_bar_uses_semantic_colors_and_resets(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
window = MainWindow(config=self.make_config(temp_dir))
|
||||
self.addCleanup(window.close)
|
||||
|
||||
window.show_status("更新失败", level="danger")
|
||||
self.assertEqual("更新失败", window.statusBar().currentMessage())
|
||||
self.assertIn(gui.COLOR_DANGER, window.statusBar().styleSheet())
|
||||
|
||||
window.show_status("设置已保存", level="success")
|
||||
self.assertIn(gui.COLOR_SUCCESS, window.statusBar().styleSheet())
|
||||
|
||||
window.show_status("就绪", level="muted")
|
||||
self.assertEqual("就绪", window.statusBar().currentMessage())
|
||||
self.assertIn(gui.COLOR_MUTED, window.statusBar().styleSheet())
|
||||
self.assertNotIn(gui.COLOR_DANGER, window.statusBar().styleSheet())
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_status_callbacks_classify_success_warning_and_failure(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
statuses = []
|
||||
|
||||
def capture(message, level=None):
|
||||
statuses.append((message, level))
|
||||
|
||||
cfg = self.make_config(temp_dir)
|
||||
generate_tab = GenerateTab(
|
||||
config=cfg,
|
||||
status_callback=capture,
|
||||
title_prompt_path=os.path.join(temp_dir, "title_prompt.txt"),
|
||||
cover_prompts_dir=os.path.join(temp_dir, "cover_prompts"),
|
||||
)
|
||||
self.addCleanup(generate_tab.close)
|
||||
|
||||
statuses.clear()
|
||||
generate_tab.save_title_prompt()
|
||||
self.assertEqual(("标题提示词已保存", "success"), statuses[-1])
|
||||
|
||||
statuses.clear()
|
||||
generate_tab.start_generate()
|
||||
self.assertIn("当前筛选结果没有可生成的缺失内容", statuses[-1][0])
|
||||
self.assertEqual("warning", statuses[-1][1])
|
||||
|
||||
model = gui.GenerateTaskTableModel(db_path=os.path.join(temp_dir, "missing_tables.sqlite"), status_callback=capture)
|
||||
editable_task = SimpleNamespace(
|
||||
id=999,
|
||||
alias="papa",
|
||||
account_name="papa 店铺",
|
||||
item_id="28431952912",
|
||||
old_title="旧标题",
|
||||
new_title="新标题",
|
||||
new_cover_path="",
|
||||
stage="generated",
|
||||
status="success",
|
||||
committed=0,
|
||||
last_error="",
|
||||
)
|
||||
model.set_tasks([editable_task], [])
|
||||
statuses.clear()
|
||||
ok = model.setData(model.index(0, 3), "新标题 2")
|
||||
self.assertFalse(ok)
|
||||
self.assertIn("新标题修改失败", statuses[-1][0])
|
||||
self.assertEqual("danger", statuses[-1][1])
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user