mirror of
https://github.com/bec-project/bec_widgets.git
synced 2026-03-07 17:32:48 +01:00
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
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
|