feat: 增加采集任务重新执行入口 (#63)
This commit is contained in:
@@ -6,6 +6,7 @@ import threading
|
||||
import time
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from unittest.mock import patch
|
||||
|
||||
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
|
||||
|
||||
@@ -242,6 +243,56 @@ class PDDTaskPageEventTest(unittest.TestCase):
|
||||
self.assertEqual(row.price_cents, 3990)
|
||||
page.deleteLater()
|
||||
|
||||
def test_rerun_button_follows_current_row_selection(self):
|
||||
self._add_task(1)
|
||||
page = PDDTaskPage()
|
||||
events = PDDTaskPageEvent(page, self.repository)
|
||||
events.load_initial_tasks()
|
||||
|
||||
page.taskTable.clearSelection()
|
||||
self.app.processEvents()
|
||||
self.assertFalse(page.rerunButton.isEnabled())
|
||||
page.taskTable.selectRow(0)
|
||||
self.app.processEvents()
|
||||
self.assertTrue(page.rerunButton.isEnabled())
|
||||
page.taskTable.clearSelection()
|
||||
self.app.processEvents()
|
||||
self.assertFalse(page.rerunButton.isEnabled())
|
||||
events.shutdown()
|
||||
page.deleteLater()
|
||||
|
||||
def test_confirmed_rerun_executes_selected_terminal_collect_task(self):
|
||||
self._add_task(1)
|
||||
first = self.repository.start_collect_run("PDD-001", "USB-001")
|
||||
event = self.repository.save_collect_result(
|
||||
"PDD-001", first.attempt_id, FakeCollectResult().to_pdd_data()
|
||||
)
|
||||
self.repository.mark_outbox_sent(event.id)
|
||||
page = PDDTaskPage()
|
||||
gateway = RecordingClaimGateway()
|
||||
events = PDDTaskPageEvent(
|
||||
page,
|
||||
self.repository,
|
||||
claim_gateway=gateway,
|
||||
settings_repository=self._saved_settings(),
|
||||
collect_service_factory=fake_collect_factory,
|
||||
)
|
||||
|
||||
with patch("src.pdd_ui_event.MessageBox") as message_box:
|
||||
message_box.return_value.exec.return_value = True
|
||||
page.rerunRequested.emit("PDD-001")
|
||||
self.assertTrue(
|
||||
wait_until(self.app, lambda: not events._claim_busy),
|
||||
"重新采集线程没有按时结束",
|
||||
)
|
||||
|
||||
detail = self.repository.get_task("PDD-001")
|
||||
self.assertEqual(detail.status, TaskStatus.SUCCEEDED)
|
||||
self.assertIn("采集完成", page.statusLabel.text())
|
||||
self.assertEqual(gateway.calls, [])
|
||||
events.shutdown()
|
||||
page.deleteLater()
|
||||
|
||||
def test_query_failure_shows_readable_error(self):
|
||||
page = PDDTaskPage()
|
||||
events = PDDTaskPageEvent(page, BrokenRepository())
|
||||
|
||||
Reference in New Issue
Block a user