mirror of
https://github.com/bec-project/bec_widgets.git
synced 2026-06-05 12:58:40 +02:00
wip adding dialog adjusted
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
import shiboken6
|
||||
from bec_lib import messages
|
||||
from qtpy.QtCore import QCoreApplication, QEvent
|
||||
|
||||
from bec_widgets.utils.toolbars.toolbar import ModularToolBar
|
||||
from bec_widgets.widgets.services.beamline_states.beamline_state_pill import (
|
||||
@@ -6,6 +8,7 @@ from bec_widgets.widgets.services.beamline_states.beamline_state_pill import (
|
||||
BeamlineStateManager,
|
||||
BeamlineStatePill,
|
||||
)
|
||||
from bec_widgets.widgets.utility.spinbox.decimal_spinbox import BECSpinBox
|
||||
|
||||
from .client_mocks import mocked_client
|
||||
|
||||
@@ -81,7 +84,7 @@ def test_beamline_state_manager_adds_and_removes_pills(qtbot, mocked_client):
|
||||
assert sorted(widget._state_pills) == ["limits"]
|
||||
|
||||
|
||||
def test_beamline_state_manager_filters_states(qtbot, mocked_client):
|
||||
def test_beamline_state_manager_filters_status(qtbot, mocked_client):
|
||||
widget = BeamlineStateManager(client=mocked_client)
|
||||
qtbot.addWidget(widget)
|
||||
|
||||
@@ -107,7 +110,13 @@ def test_beamline_state_manager_filters_states(qtbot, mocked_client):
|
||||
|
||||
assert isinstance(widget._toolbar, ModularToolBar)
|
||||
|
||||
widget._selected_state_names = {"limits"}
|
||||
widget._state_pills["limits"].update_state(
|
||||
{"name": "limits", "status": "valid", "label": "Within limits."}, {}
|
||||
)
|
||||
widget._state_pills["shutter_open"].update_state(
|
||||
{"name": "shutter_open", "status": "invalid", "label": "Closed."}, {}
|
||||
)
|
||||
widget._selected_statuses = {"valid"}
|
||||
widget._apply_filters()
|
||||
|
||||
assert not widget._hidden_summary.isHidden()
|
||||
@@ -120,6 +129,39 @@ def test_beamline_state_manager_filters_states(qtbot, mocked_client):
|
||||
assert not widget._hidden_content.isHidden()
|
||||
|
||||
|
||||
def test_beamline_state_manager_status_filter_reacts_to_state_changes(qtbot, mocked_client):
|
||||
widget = BeamlineStateManager(client=mocked_client)
|
||||
qtbot.addWidget(widget)
|
||||
|
||||
widget.update_available_states(
|
||||
{
|
||||
"states": [
|
||||
{
|
||||
"name": "limits",
|
||||
"title": "Limits",
|
||||
"state_type": "DeviceWithinLimitsState",
|
||||
"parameters": {"device": "samx"},
|
||||
}
|
||||
]
|
||||
},
|
||||
{},
|
||||
)
|
||||
|
||||
widget._selected_statuses = {"valid"}
|
||||
widget._state_pills["limits"].update_state(
|
||||
{"name": "limits", "status": "valid", "label": "Within limits."}, {}
|
||||
)
|
||||
|
||||
assert widget._hidden_summary.isHidden()
|
||||
|
||||
widget._state_pills["limits"].update_state(
|
||||
{"name": "limits", "status": "invalid", "label": "Out of limits."}, {}
|
||||
)
|
||||
|
||||
assert not widget._hidden_summary.isHidden()
|
||||
assert widget._state_pills["limits"].parent() is widget._hidden_content
|
||||
|
||||
|
||||
def test_beamline_state_manager_filters_devices(qtbot, mocked_client):
|
||||
widget = BeamlineStateManager(client=mocked_client)
|
||||
qtbot.addWidget(widget)
|
||||
@@ -158,7 +200,6 @@ def test_add_beamline_state_dialog_uses_device_signal_widgets_and_normalizes_nam
|
||||
dialog = AddBeamlineStateDialog(client=mocked_client)
|
||||
qtbot.addWidget(dialog)
|
||||
|
||||
dialog._type_combo.setCurrentIndex(1)
|
||||
dialog._name.setText("samx-limits")
|
||||
dialog._title.setText("samx-limits-15")
|
||||
dialog._device.set_device("samx")
|
||||
@@ -173,6 +214,9 @@ def test_add_beamline_state_dialog_uses_device_signal_widgets_and_normalizes_nam
|
||||
assert config.signal == "samx"
|
||||
assert config.low_limit == 0.0
|
||||
assert config.high_limit == 15.0
|
||||
assert isinstance(dialog._low_limit, BECSpinBox)
|
||||
assert isinstance(dialog._high_limit, BECSpinBox)
|
||||
assert dialog._low_limit.width() == dialog._device.width()
|
||||
|
||||
|
||||
def test_add_beamline_state_dialog_generates_name_only_after_valid_device_selection(
|
||||
@@ -181,7 +225,6 @@ def test_add_beamline_state_dialog_generates_name_only_after_valid_device_select
|
||||
dialog = AddBeamlineStateDialog(client=mocked_client)
|
||||
qtbot.addWidget(dialog)
|
||||
|
||||
dialog._type_combo.setCurrentIndex(1)
|
||||
dialog._device.setCurrentText("s")
|
||||
|
||||
assert dialog._name.text() == ""
|
||||
@@ -189,3 +232,20 @@ def test_add_beamline_state_dialog_generates_name_only_after_valid_device_select
|
||||
dialog._device.set_device("samx")
|
||||
|
||||
assert dialog._name.text() == "samx_limits"
|
||||
|
||||
|
||||
def test_add_beamline_state_dialog_cleanup_deletes_device_widgets(qtbot, mocked_client):
|
||||
dialog = AddBeamlineStateDialog(client=mocked_client)
|
||||
qtbot.addWidget(dialog)
|
||||
device = dialog._device
|
||||
signal = dialog._signal
|
||||
|
||||
dialog.reject()
|
||||
assert shiboken6.isValid(device)
|
||||
assert shiboken6.isValid(signal)
|
||||
|
||||
dialog.cleanup()
|
||||
QCoreApplication.sendPostedEvents(None, QEvent.Type.DeferredDelete)
|
||||
|
||||
assert not shiboken6.isValid(device)
|
||||
assert not shiboken6.isValid(signal)
|
||||
|
||||
Reference in New Issue
Block a user