feat(gui): improve status scope dialogs
This commit is contained in:
+61
-4
@@ -30,6 +30,7 @@ if gui.QT_IMPORT_ERROR is not None:
|
||||
|
||||
from PySide6.QtCore import QItemSelectionModel, QModelIndex, QRect, QSize, QTimer, Qt
|
||||
from PySide6.QtGui import QImage, QKeyEvent, QTextCursor
|
||||
from PySide6.QtTest import QTest
|
||||
from PySide6.QtWidgets import (
|
||||
QAbstractItemView,
|
||||
QApplication,
|
||||
@@ -6126,7 +6127,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_generate_scope_dialog_uses_safe_default_and_red_all_status_choice(self):
|
||||
def test_generate_scope_dialog_uses_safe_default_and_warning_all_status_choice(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
tab = GenerateTab(config=self.make_config(temp_dir))
|
||||
self.addCleanup(tab.close)
|
||||
@@ -6149,8 +6150,19 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
captured["all_style"] = all_button.styleSheet()
|
||||
captured["all_enabled"] = all_button.isEnabled()
|
||||
captured["detail"] = box.informativeText()
|
||||
captured["minimum_width"] = box.minimumWidth()
|
||||
captured["normal_button_width"] = normal_button.width()
|
||||
captured["all_button_width"] = all_button.width()
|
||||
captured["normal_text_width"] = normal_button.fontMetrics().horizontalAdvance(
|
||||
normal_button.text()
|
||||
)
|
||||
captured["all_text_width"] = all_button.fontMetrics().horizontalAdvance(
|
||||
all_button.text()
|
||||
)
|
||||
self.assertIsNotNone(normal_button)
|
||||
self.assertIsNotNone(all_button)
|
||||
self.assertEqual("只生成状态正常的商品", normal_button.text())
|
||||
self.assertEqual("生成所有状态的商品", all_button.text())
|
||||
all_button.click()
|
||||
|
||||
QTimer.singleShot(0, click_all_statuses)
|
||||
@@ -6159,7 +6171,13 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
self.assertEqual("all", scope)
|
||||
self.assertEqual("generateNormalOnlyButton", captured["default"])
|
||||
self.assertTrue(captured["all_enabled"])
|
||||
self.assertIn("#cf222e", captured["all_style"])
|
||||
self.assertGreaterEqual(captured["minimum_width"], 520)
|
||||
self.assertGreaterEqual(captured["normal_button_width"], 480)
|
||||
self.assertGreaterEqual(captured["all_button_width"], 480)
|
||||
self.assertGreater(captured["normal_button_width"], captured["normal_text_width"])
|
||||
self.assertGreater(captured["all_button_width"], captured["all_text_width"])
|
||||
self.assertIn("#bc4c00", captured["all_style"])
|
||||
self.assertNotIn("#cf222e", captured["all_style"])
|
||||
self.assertIn("状态未知1", captured["detail"])
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
@@ -8353,7 +8371,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_collect_scope_dialog_uses_safe_default_and_red_all_status_choice(self):
|
||||
def test_collect_scope_dialog_uses_safe_default_and_warning_all_status_choice(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
tab = CollectTab(config=self.make_config(temp_dir))
|
||||
self.addCleanup(tab.close)
|
||||
@@ -8365,8 +8383,19 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
all_button = box.findChild(QPushButton, "collectAllStatusesButton")
|
||||
captured["default"] = box.defaultButton().objectName()
|
||||
captured["all_style"] = all_button.styleSheet()
|
||||
captured["minimum_width"] = box.minimumWidth()
|
||||
captured["normal_button_width"] = normal_button.width()
|
||||
captured["all_button_width"] = all_button.width()
|
||||
captured["normal_text_width"] = normal_button.fontMetrics().horizontalAdvance(
|
||||
normal_button.text()
|
||||
)
|
||||
captured["all_text_width"] = all_button.fontMetrics().horizontalAdvance(
|
||||
all_button.text()
|
||||
)
|
||||
self.assertIsNotNone(normal_button)
|
||||
self.assertIsNotNone(all_button)
|
||||
self.assertEqual("只采集状态正常的商品", normal_button.text())
|
||||
self.assertEqual("采集所有状态的商品", all_button.text())
|
||||
all_button.click()
|
||||
|
||||
QTimer.singleShot(0, click_all_statuses)
|
||||
@@ -8374,7 +8403,35 @@ class GuiTests(TempDirMixin, unittest.TestCase):
|
||||
|
||||
self.assertEqual("all", scope)
|
||||
self.assertEqual("collectNormalOnlyButton", captured["default"])
|
||||
self.assertIn("#cf222e", captured["all_style"])
|
||||
self.assertGreaterEqual(captured["minimum_width"], 520)
|
||||
self.assertGreaterEqual(captured["normal_button_width"], 480)
|
||||
self.assertGreaterEqual(captured["all_button_width"], 480)
|
||||
self.assertGreater(captured["normal_button_width"], captured["normal_text_width"])
|
||||
self.assertGreater(captured["all_button_width"], captured["all_text_width"])
|
||||
self.assertIn("#bc4c00", captured["all_style"])
|
||||
self.assertNotIn("#cf222e", captured["all_style"])
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
def test_collect_scope_dialog_accepts_default_and_escape_cancels(self):
|
||||
with self.make_temp_dir() as temp_dir:
|
||||
tab = CollectTab(config=self.make_config(temp_dir))
|
||||
self.addCleanup(tab.close)
|
||||
|
||||
def press_return():
|
||||
box = QApplication.activeModalWidget()
|
||||
button = box.findChild(QPushButton, "collectNormalOnlyButton")
|
||||
QTest.keyClick(button, Qt.Key_Return)
|
||||
|
||||
QTimer.singleShot(0, press_return)
|
||||
self.assertEqual("normal_only", tab._choose_collect_scope())
|
||||
|
||||
def press_escape():
|
||||
box = QApplication.activeModalWidget()
|
||||
QTest.keyClick(box, Qt.Key_Escape)
|
||||
|
||||
QTimer.singleShot(0, press_escape)
|
||||
self.assertIsNone(tab._choose_collect_scope())
|
||||
|
||||
self.assert_removed(temp_dir)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user