feat(apply): filter updates by product status

This commit is contained in:
chengma
2026-07-20 10:35:38 +08:00
parent fa101c16ce
commit ffc4cd8ca2
4 changed files with 75 additions and 11 deletions
+41
View File
@@ -6689,6 +6689,10 @@ class GuiTests(TempDirMixin, unittest.TestCase):
)
db.mark_failed(tasks_a[2].id, "apply", "更新失败", path=cfg["db_path"])
db.set_applied(tasks_b[0].id, True, path=cfg["db_path"])
db.set_product_status(tasks_a[0].id, "normal", path=cfg["db_path"])
db.set_product_status(tasks_a[1].id, "unlisted", path=cfg["db_path"])
db.set_product_status(tasks_a[2].id, "reviewing", path=cfg["db_path"])
db.set_product_status(tasks_b[0].id, "normal", path=cfg["db_path"])
tab = ApplyTab(config=cfg)
self.addCleanup(tab.close)
@@ -6704,6 +6708,17 @@ class GuiTests(TempDirMixin, unittest.TestCase):
[tab.update_mode_combo.itemText(index) for index in range(tab.update_mode_combo.count())],
)
self.assertEqual("applyItemFilter", tab.item_filter.objectName())
self.assertEqual("applyProductStatusFilter", tab.product_status_filter.objectName())
self.assertEqual(
["全部商品状态", "架上商品", "未上架", "审核中", "状态未知", "待检测"],
[
tab.product_status_filter.itemText(index)
for index in range(tab.product_status_filter.count())
],
)
label_texts = [label.text() for label in tab.findChildren(QLabel)]
self.assertIn("商品状态", label_texts)
self.assertIn("更新状态", label_texts)
self.assertEqual("停止", tab.stop_update_button.text())
self.assertEqual("重置更新状态", tab.reset_update_button.text())
self.assertTrue(tab.reset_update_button.isHidden())
@@ -6725,6 +6740,24 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assert_foreground(tab.model, 0, 5, gui.COLOR_PENDING)
self.assertEqual("任务 2/4 条", tab.summary_label.text())
tab.product_status_filter.setCurrentIndex(
tab.product_status_filter.findData("normal")
)
self.assertEqual(1, tab.model.rowCount())
self.assertEqual("51100639510", tab.model.index(0, 1).data())
tab.product_status_filter.setCurrentIndex(
tab.product_status_filter.findData("unlisted")
)
self.assertEqual(1, tab.model.rowCount())
self.assertEqual("51100639511", tab.model.index(0, 1).data())
with mock.patch("app.gui.QMessageBox.warning") as warning, mock.patch(
"app.gui.run_worker"
) as run_worker:
tab.preview_update()
self.assertEqual("商品状态不允许更新", warning.call_args[0][1])
run_worker.assert_not_called()
tab.product_status_filter.setCurrentIndex(tab.product_status_filter.findData("all"))
tab.status_filter.setCurrentIndex(tab.status_filter.findData("failed"))
self.assertEqual(1, tab.model.rowCount())
self.assertEqual("失败", tab.model.index(0, 5).data())
@@ -6758,6 +6791,14 @@ class GuiTests(TempDirMixin, unittest.TestCase):
"商品ID:51100639512",
tab._confirmation_message(list(tab.model.tasks)),
)
self.assertIn(
"商品状态:全部商品状态",
tab._confirmation_message(list(tab.model.tasks)),
)
self.assertIn(
"更新状态:全部状态",
tab._confirmation_message(list(tab.model.tasks)),
)
self.assert_removed(temp_dir)