feat(product-suite): clarify primary image sorting

This commit is contained in:
chengma
2026-07-22 17:45:31 +08:00
parent 0425771598
commit 70c4323c52
5 changed files with 129 additions and 10 deletions
+45
View File
@@ -2895,8 +2895,15 @@ class ProductSuiteGuiTests(TempDirMixin, unittest.TestCase):
tab.original_list.set_checked_asset_ids([assets[1].id])
tab._refresh_originals(state)
self.assertEqual([assets[1].id], tab.original_list.checked_asset_ids())
self.assertEqual("主图", tab.original_list.item(0).text())
self.assertTrue(tab.original_list.item(0).font().bold())
self.assertIn("拖动到第一位即可设为主图", tab.original_list.item(0).toolTip())
statuses = []
tab._status = lambda message, level=None: statuses.append((message, level))
tab.reorder_originals([assets[1].id, assets[0].id])
self.assertEqual([assets[1].id], tab.original_list.checked_asset_ids())
self.assertEqual([assets[1].id, assets[0].id], tab.original_list.asset_ids())
self.assertEqual(("已更新商品原图顺序,第一张图片为主图", "success"), statuses[-1])
tab.add_task(inherit=True)
self.assertEqual([], tab.original_list.checked_asset_ids())
@@ -3138,6 +3145,10 @@ class ProductSuiteGuiTests(TempDirMixin, unittest.TestCase):
self.assertTrue(state.pull_running())
self.assertEqual("停止拉取蝦皮", tab.pull_button.text())
self.assertTrue(tab.pull_button.isEnabled())
self.assertTrue(tab.original_list.isEnabled())
self.assertFalse(tab.original_list.reordering_enabled())
self.assertFalse(tab.original_list.dragEnabled())
self.assertIn("完成后可调整图片顺序", tab.original_list.toolTip())
worker = state.pull_worker
with mock.patch.object(tab, "_pull_stop_action", return_value="continue"):
@@ -3163,6 +3174,40 @@ class ProductSuiteGuiTests(TempDirMixin, unittest.TestCase):
self.assert_removed(temp_dir)
def test_pull_locks_original_reordering_without_changing_saved_order(self):
with self.make_temp_dir() as temp_dir:
config = self._config(temp_dir)
project, assets = self._create_project_with_assets(temp_dir, config, 2)
tab = ProductSuiteTab(config=config, db_path=config["db_path"])
self.addCleanup(tab.close)
state = tab._displayed_state
state.account_alias = "alias-a"
state.item_id = project.item_id
state.project_id = project.id
state.project_binding_state = project.binding_state
tab._load_state(state)
statuses = []
tab._status = lambda message, level=None: statuses.append((message, level))
state.pull_run_token = "pull-in-progress"
tab._apply_running_state(state)
self.assertTrue(tab.original_list.isEnabled())
self.assertFalse(tab.original_list.reordering_enabled())
tab.reorder_originals([assets[1].id, assets[0].id])
self.assertEqual([assets[0].id, assets[1].id], tab.original_list.asset_ids())
self.assertEqual(
("正在拉取蝦皮主图,完成后可调整图片顺序", "warning"),
statuses[-1],
)
state.pull_run_token = ""
tab._apply_running_state(state)
self.assertTrue(tab.original_list.reordering_enabled())
tab.reorder_originals([assets[1].id, assets[0].id])
self.assertEqual([assets[1].id, assets[0].id], tab.original_list.asset_ids())
self.assert_removed(temp_dir)
def test_stopping_pull_cancels_only_current_pull_downloads(self):
with self.make_temp_dir() as temp_dir:
config = self._config(temp_dir)