0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 11:41:49 +02:00

feat(qt_utils): added error handle utility with popup messageBoxes

This commit is contained in:
2024-07-16 13:47:28 +02:00
parent 9a91583ed0
commit 9ce2279533
3 changed files with 226 additions and 0 deletions

View File

@ -0,0 +1,53 @@
from unittest.mock import patch
import pytest
from qtpy.QtWidgets import QMessageBox
from bec_widgets.qt_utils.error_popups import ErrorPopupUtility, ExampleWidget
@pytest.fixture
def widget(qtbot):
test_widget = ExampleWidget()
qtbot.addWidget(test_widget)
qtbot.waitExposed(test_widget)
yield test_widget
test_widget.close()
@patch.object(QMessageBox, "exec_", return_value=QMessageBox.Ok)
def test_show_error_message_global(mock_exec, widget, qtbot):
error_utility = ErrorPopupUtility()
error_utility.enable_global_error_popups(True)
with qtbot.waitSignal(error_utility.error_occurred, timeout=1000) as blocker:
error_utility.error_occurred.emit("Test Error", "This is a test error message.", widget)
assert mock_exec.called
assert blocker.signal_triggered
@patch.object(QMessageBox, "exec_", return_value=QMessageBox.Ok)
def test_decorated_function(mock_exec, widget, qtbot):
error_utility = ErrorPopupUtility()
error_utility.enable_global_error_popups(False)
with pytest.raises(ValueError) as excinfo:
with qtbot.waitSignal(error_utility.error_occurred, timeout=1000) as blocker:
widget.method_with_error_handling()
assert blocker.signal_triggered
assert mock_exec.called
@patch.object(QMessageBox, "exec_", return_value=QMessageBox.Ok)
def test_not_decorated_function(mock_exec, widget, qtbot):
error_utility = ErrorPopupUtility()
error_utility.enable_global_error_popups(False)
with pytest.raises(ValueError) as excinfo:
with qtbot.waitSignal(error_utility.error_occurred, timeout=1000) as blocker:
widget.method_without_error_handling()
assert not blocker.signal_triggered
assert not mock_exec.called