feat: 任务详情字段支持双击复制 (#145)

This commit is contained in:
chengma
2026-08-11 11:32:37 +08:00
parent eb5494cdf1
commit 07c5a85df7
3 changed files with 144 additions and 12 deletions
+42 -1
View File
@@ -6,9 +6,16 @@ from dataclasses import replace
os.environ.setdefault("QT_QPA_PLATFORM", "offscreen")
from PyQt5.QtCore import Qt
from PyQt5.QtTest import QTest
from PyQt5.QtWidgets import QApplication
from src.task_detail_view import TaskDetailWindow, build_task_detail_view_data
from src.task_detail_view import (
CopyableBodyLabel,
CopyableStrongBodyLabel,
TaskDetailWindow,
build_task_detail_view_data,
)
from src.task_models import TaskDetail, TaskStatus, TaskType
@@ -148,6 +155,40 @@ class TaskDetailViewTest(unittest.TestCase):
window.close()
self.app.processEvents()
def test_double_click_copies_full_field_and_updates_feedback(self):
window = TaskDetailWindow(make_detail(collected_data()))
title = next(
label
for label in window.findChildren(CopyableBodyLabel)
if label.text() == "采集标题"
)
QTest.mouseDClick(title, Qt.LeftButton)
self.assertEqual(QApplication.clipboard().text(), "采集标题")
self.assertEqual(window.copyStatusLabel.text(), "已复制:商品标题")
self.assertTrue(
title.textInteractionFlags() & Qt.TextSelectableByKeyboard
)
window.close()
self.app.processEvents()
def test_ctrl_c_copies_price_without_changing_link_behavior(self):
window = TaskDetailWindow(make_detail(collected_data()))
price = next(
label
for label in window.findChildren(CopyableStrongBodyLabel)
if label.text() == "¥10.00~¥12.00"
)
price.setFocus()
QTest.keyClick(price, Qt.Key_C, Qt.ControlModifier)
self.assertEqual(QApplication.clipboard().text(), "¥10.00~¥12.00")
self.assertEqual(window.copyStatusLabel.text(), "已复制:颜色价格")
window.close()
self.app.processEvents()
if __name__ == "__main__":
unittest.main()