0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 03:31:50 +02:00
Files
bec_widgets/tests/unit_tests/test_bec_dock.py

115 lines
3.5 KiB
Python

# pylint: disable=missing-function-docstring, missing-module-docstring, unused-import
import pytest
from bec_widgets.widgets.dock import BECDock, BECDockArea
from .client_mocks import mocked_client
@pytest.fixture
def bec_dock_area(qtbot, mocked_client):
widget = BECDockArea(client=mocked_client)
qtbot.addWidget(widget)
qtbot.waitExposed(widget)
yield widget
widget.close()
def test_bec_dock_area_init(bec_dock_area):
assert bec_dock_area is not None
assert bec_dock_area.client is not None
assert isinstance(bec_dock_area, BECDockArea)
assert bec_dock_area.config.widget_class == "BECDockArea"
def test_bec_dock_area_add_remove_dock(bec_dock_area, qtbot):
initial_count = len(bec_dock_area.docks)
# Adding 3 docks
d0 = bec_dock_area.add_dock()
d1 = bec_dock_area.add_dock()
d2 = bec_dock_area.add_dock()
# Check if the docks were added
assert len(bec_dock_area.docks) == initial_count + 3
assert d0.name() in dict(bec_dock_area.docks)
assert d1.name() in dict(bec_dock_area.docks)
assert d2.name() in dict(bec_dock_area.docks)
assert bec_dock_area.docks[d0.name()].config.widget_class == "BECDock"
assert bec_dock_area.docks[d1.name()].config.widget_class == "BECDock"
assert bec_dock_area.docks[d2.name()].config.widget_class == "BECDock"
# Check panels API for getting docks to CLI
assert bec_dock_area.panels == dict(bec_dock_area.docks)
# Remove docks
d0_name = d0.name()
bec_dock_area.remove_dock(d0_name) # TODO fix this, works in jupyter console
qtbot.wait(200)
d1.remove()
qtbot.wait(200)
assert len(bec_dock_area.docks) == initial_count + 1
assert d0.name() not in dict(bec_dock_area.docks)
assert d1.name() not in dict(bec_dock_area.docks)
assert d2.name() in dict(bec_dock_area.docks)
def test_add_remove_bec_figure_to_dock(bec_dock_area):
d0 = bec_dock_area.add_dock()
fig = d0.add_widget("BECFigure")
plt = fig.plot(x_name="samx", y_name="bpm4i")
im = fig.image("eiger")
mm = fig.motor_map("samx", "samy")
assert len(bec_dock_area.docks) == 1
assert len(d0.widgets) == 1
assert len(d0.widget_list) == 1
assert len(fig.widgets) == 3
assert fig.config.widget_class == "BECFigure"
assert plt.config.widget_class == "BECWaveform"
assert im.config.widget_class == "BECImageShow"
assert mm.config.widget_class == "BECMotorMap"
def test_dock_area_errors(bec_dock_area):
d0 = bec_dock_area.add_dock(name="dock_0")
with pytest.raises(ValueError) as excinfo:
bec_dock_area.add_dock(name="dock_0")
assert "Dock with name dock_0 already exists." in str(excinfo.value)
def test_close_docks(bec_dock_area, qtbot):
d0 = bec_dock_area.add_dock(name="dock_0")
d1 = bec_dock_area.add_dock(name="dock_1")
d2 = bec_dock_area.add_dock(name="dock_2")
bec_dock_area.clear_all()
qtbot.wait(200)
assert len(bec_dock_area.docks) == 0
def test_undock_and_dock_docks(bec_dock_area, qtbot):
d0 = bec_dock_area.add_dock(name="dock_0")
d1 = bec_dock_area.add_dock(name="dock_1")
d2 = bec_dock_area.add_dock(name="dock_4")
d3 = bec_dock_area.add_dock(name="dock_3")
d0.detach()
bec_dock_area.detach_dock("dock_1")
d2.detach()
assert len(bec_dock_area.docks) == 4
assert len(bec_dock_area.tempAreas) == 3
d0.attach()
assert len(bec_dock_area.docks) == 4
assert len(bec_dock_area.tempAreas) == 2
bec_dock_area.attach_all()
assert len(bec_dock_area.docks) == 4
assert len(bec_dock_area.tempAreas) == 0