fix: 领取任务后立即刷新列表 (#107)

This commit is contained in:
chengma
2026-08-10 17:11:59 +08:00
parent 8931162106
commit 39686d7b3b
8 changed files with 125 additions and 15 deletions
+55 -4
View File
@@ -182,6 +182,20 @@ class FakeCollector:
return FakeCollectResult()
class BlockingCollector:
"""让测试能在新任务落库后、采集结束前检查界面。"""
def __init__(self, started, release):
self.started = started
self.release = release
def collect(self, _task):
self.started.set()
if not self.release.wait(timeout=3):
raise RuntimeError("测试没有及时结束阻塞采集")
return FakeCollectResult()
def fake_collect_factory(*_args):
return FakeCollector()
@@ -1040,6 +1054,43 @@ class PDDTaskPageEventTest(unittest.TestCase):
events.shutdown()
page.deleteLater()
def test_new_claim_refreshes_table_before_collection_finishes(self):
gateway = RecordingClaimGateway(collect_admin_task("COL-EARLY"))
collect_started = threading.Event()
release_collect = threading.Event()
page = PDDTaskPage()
events = PDDTaskPageEvent(
page,
self.repository,
claim_gateway=gateway,
settings_repository=self._saved_settings(),
collect_service_factory=(
lambda *_args: BlockingCollector(
collect_started, release_collect
)
),
)
page.autoFetchRequested.emit()
try:
self.assertTrue(wait_until(self.app, collect_started.is_set))
self.assertTrue(events._claim_busy)
self.assertTrue(
wait_until(
self.app,
lambda: page.taskModel.data_row_count() == 1,
)
)
self.assertEqual(
page.taskModel.row_at(0).remote_task_id, "COL-EARLY"
)
finally:
release_collect.set()
self.assertTrue(wait_until(self.app, lambda: not events._claim_busy))
events.shutdown()
page.deleteLater()
def test_ready_runtime_claims_and_dispatches_purchase_in_worker(self):
gateway = RecordingClaimGateway(purchase_admin_task())
page = PDDTaskPage()
@@ -1091,7 +1142,7 @@ class PDDTaskPageEventTest(unittest.TestCase):
page.autoFetchRequested.emit()
self.assertFalse(events._next_cycle_timer.isActive())
self.assertEqual(page.autoFetchButton.text(), "开始自动获取")
self.assertEqual(page.autoFetchButton.text(), "自动获取")
events.shutdown()
page.deleteLater()
@@ -1113,7 +1164,7 @@ class PDDTaskPageEventTest(unittest.TestCase):
self.assertFalse(page.autoFetchButton.isEnabled())
self.assertTrue(wait_until(self.app, lambda: not events._claim_busy))
self.assertEqual(len(gateway.calls), 1)
self.assertEqual(page.autoFetchButton.text(), "开始自动获取")
self.assertEqual(page.autoFetchButton.text(), "自动获取")
events.shutdown()
page.deleteLater()
@@ -1142,7 +1193,7 @@ class PDDTaskPageEventTest(unittest.TestCase):
page.autoFetchRequested.emit()
self.assertTrue(wait_until(self.app, lambda: not events._claim_busy))
self.assertEqual(page.autoFetchButton.text(), "开始自动获取")
self.assertEqual(page.autoFetchButton.text(), "自动获取")
events.shutdown()
page.deleteLater()
@@ -1307,7 +1358,7 @@ class PDDTaskPageEventTest(unittest.TestCase):
self.assertEqual(gateway.calls, [])
self.assertIn("设置页", page.statusLabel.text())
self.assertFalse(events._auto_fetch_running)
self.assertEqual(page.autoFetchButton.text(), "开始自动获取")
self.assertEqual(page.autoFetchButton.text(), "自动获取")
events.shutdown()
page.deleteLater()