mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 11:41:49 +02:00
test(setting_dialog): tests added
This commit is contained in:
98
tests/unit_tests/test_setting_dialog.py
Normal file
98
tests/unit_tests/test_setting_dialog.py
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from qtpy.QtWidgets import QWidget
|
||||||
|
|
||||||
|
from bec_widgets.qt_utils.settings_dialog import SettingWidget, SettingsDialog
|
||||||
|
|
||||||
|
|
||||||
|
###################################
|
||||||
|
# SettingWidget base class tests
|
||||||
|
###################################
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def setting_widget(qtbot):
|
||||||
|
widget = SettingWidget()
|
||||||
|
qtbot.addWidget(widget)
|
||||||
|
qtbot.waitExposed(widget)
|
||||||
|
yield widget
|
||||||
|
widget.close()
|
||||||
|
|
||||||
|
|
||||||
|
def test_setting_widget_initialization(setting_widget):
|
||||||
|
assert setting_widget.target_widget is None
|
||||||
|
|
||||||
|
|
||||||
|
def test_setting_widget_set_target_widget(setting_widget):
|
||||||
|
mock_target = MagicMock(spec=QWidget)
|
||||||
|
setting_widget.set_target_widget(mock_target)
|
||||||
|
assert setting_widget.target_widget == mock_target
|
||||||
|
|
||||||
|
|
||||||
|
def test_setting_widget_accept_changes(setting_widget):
|
||||||
|
with patch.object(setting_widget, "accept_changes") as mock_accept_changes:
|
||||||
|
setting_widget.accept_changes()
|
||||||
|
mock_accept_changes.assert_called_once()
|
||||||
|
|
||||||
|
|
||||||
|
def test_setting_widget_display_current_settings(setting_widget):
|
||||||
|
config_dict = {"setting1": "value1", "setting2": "value2"}
|
||||||
|
with patch.object(setting_widget, "display_current_settings") as mock_display_current_settings:
|
||||||
|
setting_widget.display_current_settings(config_dict)
|
||||||
|
mock_display_current_settings.assert_called_once_with(config_dict)
|
||||||
|
|
||||||
|
|
||||||
|
###################################
|
||||||
|
# SettingsDialog tests
|
||||||
|
###################################
|
||||||
|
@pytest.fixture
|
||||||
|
def settings_dialog(qtbot):
|
||||||
|
parent_widget = QWidget()
|
||||||
|
settings_widget = SettingWidget()
|
||||||
|
settings_widget.set_target_widget = MagicMock()
|
||||||
|
settings_widget.display_current_settings = MagicMock()
|
||||||
|
settings_widget.accept_changes = MagicMock()
|
||||||
|
|
||||||
|
dialog = SettingsDialog(
|
||||||
|
parent=parent_widget,
|
||||||
|
settings_widget=settings_widget,
|
||||||
|
window_title="Test Settings",
|
||||||
|
config={"setting1": "value1", "setting2": "value2"},
|
||||||
|
)
|
||||||
|
qtbot.addWidget(dialog)
|
||||||
|
qtbot.waitExposed(dialog)
|
||||||
|
yield dialog, parent_widget, settings_widget
|
||||||
|
dialog.close()
|
||||||
|
|
||||||
|
|
||||||
|
def test_settings_dialog_initialization(settings_dialog):
|
||||||
|
dialog, parent_widget, settings_widget = settings_dialog
|
||||||
|
|
||||||
|
assert dialog.windowTitle() == "Test Settings"
|
||||||
|
settings_widget.set_target_widget.assert_called_once_with(parent_widget)
|
||||||
|
settings_widget.display_current_settings.assert_called_once_with(
|
||||||
|
{"setting1": "value1", "setting2": "value2"}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_settings_dialog_accept(settings_dialog, qtbot):
|
||||||
|
dialog, _, settings_widget = settings_dialog
|
||||||
|
|
||||||
|
dialog.button_box.buttons()[0].click() # OK Button
|
||||||
|
settings_widget.accept_changes.assert_called_once()
|
||||||
|
|
||||||
|
|
||||||
|
def test_settings_dialog_reject(settings_dialog, qtbot):
|
||||||
|
dialog, _, _ = settings_dialog
|
||||||
|
|
||||||
|
with patch.object(dialog, "reject", wraps=dialog.reject) as mock_reject:
|
||||||
|
dialog.button_box.buttons()[1].click() # Cancel Button
|
||||||
|
mock_reject.assert_called_once()
|
||||||
|
|
||||||
|
|
||||||
|
def test_settings_dialog_apply_changes(settings_dialog, qtbot):
|
||||||
|
dialog, _, settings_widget = settings_dialog
|
||||||
|
|
||||||
|
dialog.apply_button.click()
|
||||||
|
settings_widget.accept_changes.assert_called_once()
|
Reference in New Issue
Block a user