feat: 任务详情字段支持双击复制 (#145)
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user