Files
AareDAQ/tests/unit/gui/test_main_window.py
T

75 lines
2.8 KiB
Python

import pytest
from unittest.mock import MagicMock, patch
from PySide6.QtCore import Qt
from aare.gui.main_window import MainWindow
@pytest.fixture
def mock_ui_state():
with patch("aare.gui.main_window.UIStateManager") as mock:
yield mock
def test_main_window_init(qtbot, mock_ui_state):
# Mocking many things that MainWindow __init__ tries to do
# Especially things that hit the network or expected files
with patch("requests.get") as mock_get, \
patch("aare.gui.main_window.DAQWorker"), \
patch("aare.gui.main_window.SampleCameraThread"), \
patch("aare.gui.main_window.PredictionSubscriber"), \
patch("aare.gui.main_window.VideoThread"), \
patch("aare.gui.main_window.JFJochDBusClient"), \
patch("aare.gui.main_window.WorkflowSSEClient"), \
patch("aare.gui.main_window.jwt.decode") as mock_jwt:
mock_get.return_value.status_code = 200
mock_get.return_value.json.return_value = {"status": "ok"}
mock_jwt.return_value = {"sub": "testuser", "staff": True, "pgroups": ["p123"], "session": 15}
# Create a valid-looking fake JWT
fake_token = "header.payload.signature"
# We need to provide all arguments to MainWindow
win = MainWindow(
base_url="http://localhost:5210",
token=fake_token,
default_image=None,
zmq_addr=None,
pred_zmq_addr=None,
beamline_cam_addr="localhost",
gonio_cam_addr="localhost",
gonio_cam_id=1
)
win.show()
qtbot.addWidget(win)
assert win.windowTitle() == "AareGUI"
assert win.isVisible()
def test_main_window_mount_view(qtbot, mock_ui_state):
with patch("requests.get"), \
patch("aare.gui.main_window.DAQWorker"), \
patch("aare.gui.main_window.SampleCameraThread"), \
patch("aare.gui.main_window.PredictionSubscriber"), \
patch("aare.gui.main_window.VideoThread"), \
patch("aare.gui.main_window.JFJochDBusClient"), \
patch("aare.gui.main_window.WorkflowSSEClient"), \
patch("aare.gui.main_window.jwt.decode") as mock_jwt:
mock_jwt.return_value = {"sub": "testuser", "staff": True, "pgroups": ["p123"], "session": 15}
fake_token = "header.payload.signature"
win = MainWindow(
base_url=None,
token=fake_token,
default_image=None,
zmq_addr=None,
pred_zmq_addr=None,
beamline_cam_addr=None,
gonio_cam_addr=None,
gonio_cam_id=None
)
qtbot.addWidget(win)
win.mount_view()
# This just changes some panel visibility, hard to assert without deep inspection
# but we check it doesn't crash