75 lines
2.8 KiB
Python
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
|