mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 11:41:49 +02:00
test(cli/rpc_register): e2e RPCRegister
This commit is contained in:
0
tests/end-2-end/__init__.py
Normal file
0
tests/end-2-end/__init__.py
Normal file
25
tests/end-2-end/conftest.py
Normal file
25
tests/end-2-end/conftest.py
Normal file
@ -0,0 +1,25 @@
|
||||
import pytest
|
||||
|
||||
from bec_widgets.cli.rpc_register import RPCRegister
|
||||
from bec_widgets.cli.server import BECWidgetsCLIServer
|
||||
from bec_widgets.utils import BECDispatcher
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def rpc_register():
|
||||
yield RPCRegister()
|
||||
RPCRegister.reset_singleton()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def rpc_server(qtbot, bec_client_lib, threads_check):
|
||||
dispatcher = BECDispatcher(client=bec_client_lib) # Has to init singleton with fixture client
|
||||
server = BECWidgetsCLIServer(gui_id="figure")
|
||||
qtbot.addWidget(server.fig)
|
||||
qtbot.waitExposed(server.fig)
|
||||
qtbot.wait(1000) # 1s long to wait until gui is ready
|
||||
yield server
|
||||
dispatcher.disconnect_all()
|
||||
server.client.shutdown()
|
||||
server.shutdown()
|
||||
dispatcher.reset_singleton()
|
@ -3,22 +3,6 @@ import pytest
|
||||
from bec_lib import MessageEndpoints
|
||||
|
||||
from bec_widgets.cli.client import BECFigure, BECImageShow, BECMotorMap, BECWaveform
|
||||
from bec_widgets.cli.server import BECWidgetsCLIServer
|
||||
from bec_widgets.utils import BECDispatcher
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def rpc_server(qtbot, bec_client_lib, threads_check):
|
||||
dispatcher = BECDispatcher(client=bec_client_lib) # Has to init singleton with fixture client
|
||||
server = BECWidgetsCLIServer(gui_id="id_test")
|
||||
qtbot.addWidget(server.fig)
|
||||
qtbot.waitExposed(server.fig)
|
||||
qtbot.wait(1000) # 1s long to wait until gui is ready
|
||||
yield server
|
||||
dispatcher.disconnect_all()
|
||||
server.client.shutdown()
|
||||
server.shutdown()
|
||||
dispatcher.reset_singleton()
|
||||
|
||||
|
||||
def test_rpc_waveform1d_custom_curve(rpc_server, qtbot):
|
50
tests/end-2-end/test_rpc_register_e2e.py
Normal file
50
tests/end-2-end/test_rpc_register_e2e.py
Normal file
@ -0,0 +1,50 @@
|
||||
import pytest
|
||||
|
||||
from bec_widgets.cli.client import BECFigure, BECImageShow, BECMotorMap, BECWaveform
|
||||
|
||||
|
||||
def find_deepest_value(d: dict):
|
||||
"""
|
||||
Recursively find the deepest value in a dictionary
|
||||
Args:
|
||||
d(dict): Dictionary to search
|
||||
|
||||
Returns:
|
||||
The deepest value in the dictionary.
|
||||
"""
|
||||
if isinstance(d, dict):
|
||||
if d:
|
||||
return find_deepest_value(next(iter(d.values())))
|
||||
return d
|
||||
|
||||
|
||||
def test_rpc_register_list_connections(rpc_server, rpc_register, qtbot):
|
||||
fig = BECFigure(rpc_server.gui_id)
|
||||
fig_server = rpc_server.fig
|
||||
|
||||
plt = fig.plot("samx", "bpm4i")
|
||||
im = fig.image("eiger")
|
||||
motor_map = fig.motor_map("samx", "samy")
|
||||
plt_z = fig.add_plot("samx", "samy", "bpm4i")
|
||||
|
||||
all_connections = rpc_register.list_all_connections()
|
||||
|
||||
# Construct dict of all rpc items manually
|
||||
all_subwidgets_expected = dict(fig_server.widgets)
|
||||
curve_1D = find_deepest_value(fig_server.widgets[plt.rpc_id]._curves_data)
|
||||
curve_2D = find_deepest_value(fig_server.widgets[plt_z.rpc_id]._curves_data)
|
||||
curves_expected = {curve_1D.rpc_id: curve_1D, curve_2D.rpc_id: curve_2D}
|
||||
fig_expected = {fig.rpc_id: fig_server}
|
||||
image_item_expected = {
|
||||
fig_server.widgets[im.rpc_id].images[0].rpc_id: fig_server.widgets[im.rpc_id].images[0]
|
||||
}
|
||||
|
||||
all_connections_expected = {
|
||||
**all_subwidgets_expected,
|
||||
**curves_expected,
|
||||
**fig_expected,
|
||||
**image_item_expected,
|
||||
}
|
||||
|
||||
assert len(all_connections) == 8
|
||||
assert all_connections == all_connections_expected
|
Reference in New Issue
Block a user