gengx
This commit is contained in:
@@ -394,6 +394,109 @@ class MainWindowMinimizeTest(TestCase):
|
||||
self.assertTrue(self.window.isVisible())
|
||||
self.assertTrue(self.window.isMaximized())
|
||||
|
||||
def test_starting_the_listener_switches_to_capsule_by_itself(self):
|
||||
"""开始监听就收进胶囊:控制台不该挡在企业微信前面。"""
|
||||
self.assertFalse(self.window.capsule.isVisible())
|
||||
self.window._running = True
|
||||
self.window.enter_capsule_mode()
|
||||
self.app.processEvents()
|
||||
self.assertTrue(self.window.capsule.isVisible())
|
||||
self.assertFalse(self.window.isVisible())
|
||||
|
||||
def test_entering_capsule_twice_is_harmless(self):
|
||||
self.window._running = True
|
||||
self.window.enter_capsule_mode()
|
||||
self.app.processEvents()
|
||||
geometry = self.window._saved_geometry
|
||||
self.window.enter_capsule_mode()
|
||||
self.app.processEvents()
|
||||
# 第二次不能把"已经藏起来"的几何当成要恢复的几何存进去
|
||||
self.assertIs(self.window._saved_geometry, geometry)
|
||||
self.assertTrue(self.window.capsule.isVisible())
|
||||
|
||||
|
||||
@skipUnless(QApplication is not None, "当前测试环境未安装 PySide6")
|
||||
class SidebarMonitorToggleTest(TestCase):
|
||||
"""侧栏底部整块状态区都要能启动/暂停,不能只有那颗球能点。"""
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.app = QApplication.instance() or QApplication([])
|
||||
cls.app.setStyleSheet(APP_QSS)
|
||||
|
||||
def setUp(self):
|
||||
from wechat_gui_qt import Sidebar
|
||||
|
||||
self.sidebar = Sidebar()
|
||||
self.sidebar.show()
|
||||
self.app.processEvents()
|
||||
self.starts, self.stops = [], []
|
||||
self.sidebar.startRequested.connect(lambda: self.starts.append(1))
|
||||
self.sidebar.stopRequested.connect(lambda: self.stops.append(1))
|
||||
|
||||
def tearDown(self):
|
||||
self.sidebar.close()
|
||||
self.app.processEvents()
|
||||
|
||||
def _click(self, widget):
|
||||
from PySide6.QtCore import QPointF
|
||||
from PySide6.QtGui import QMouseEvent
|
||||
|
||||
pos = QPointF(widget.width() / 2, widget.height() / 2)
|
||||
event = QMouseEvent(
|
||||
QMouseEvent.Type.MouseButtonPress,
|
||||
pos,
|
||||
widget.mapToGlobal(QPoint(int(pos.x()), int(pos.y()))),
|
||||
Qt.LeftButton,
|
||||
Qt.LeftButton,
|
||||
Qt.NoModifier,
|
||||
)
|
||||
self.app.sendEvent(widget, event)
|
||||
self.app.processEvents()
|
||||
|
||||
def test_clicking_the_status_text_starts_the_listener(self):
|
||||
# 用户点的往往正是"已停止"这几个字,过去它完全没反应
|
||||
self._click(self.sidebar.status_title)
|
||||
self.assertEqual((len(self.starts), len(self.stops)), (1, 0))
|
||||
|
||||
def test_clicking_the_status_text_while_running_pauses(self):
|
||||
self.sidebar.set_status("running", "监听中", "后台监控中")
|
||||
self._click(self.sidebar.status_title)
|
||||
self.assertEqual((len(self.starts), len(self.stops)), (0, 1))
|
||||
|
||||
def test_clicking_the_orb_toggles_the_same_way(self):
|
||||
self.sidebar.monitor_button.click()
|
||||
self.sidebar.set_status("running", "监听中", "后台监控中")
|
||||
self.sidebar.monitor_button.click()
|
||||
self.sidebar.set_status("stopped", "已停止", "等待连接")
|
||||
self.sidebar.monitor_button.click()
|
||||
self.assertEqual((len(self.starts), len(self.stops)), (2, 1))
|
||||
|
||||
def test_one_click_never_fires_both_signals(self):
|
||||
"""旧实现每次都 disconnect 再 connect;少断一次就会自相抵消。"""
|
||||
for state, text in (
|
||||
("connecting", "连接中"),
|
||||
("running", "监听中"),
|
||||
("waiting", "等待企业微信"),
|
||||
("stopping", "正在停止"),
|
||||
("stopped", "已停止"),
|
||||
("error", "连接失败"),
|
||||
):
|
||||
self.sidebar.set_status(state, text, text)
|
||||
self.sidebar.monitor_button.click()
|
||||
self.assertEqual(len(self.starts) + len(self.stops), 1)
|
||||
|
||||
def test_the_tooltip_says_what_the_click_will_do(self):
|
||||
self.assertEqual(self.sidebar.status_block.toolTip(), "点击开始监听")
|
||||
self.sidebar.set_status("running", "监听中", "后台监控中")
|
||||
self.assertEqual(self.sidebar.status_block.toolTip(), "点击暂停监听")
|
||||
|
||||
def test_intermediate_states_count_as_running(self):
|
||||
for state in ("connecting", "waiting", "stopping"):
|
||||
self.sidebar.set_status(state, state, state)
|
||||
self.sidebar.monitor_button.click()
|
||||
self.assertEqual((len(self.starts), len(self.stops)), (0, 3))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user