0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 11:41:49 +02:00

test: test_extreme.py on_scan_segment tested with all entries correctly defined

This commit is contained in:
wyzula-jan
2023-10-02 11:38:33 +02:00
parent ae79faa7ed
commit 0ec65a0b41

View File

@ -1,3 +1,5 @@
from unittest.mock import MagicMock
import pyqtgraph as pg import pyqtgraph as pg
import pytest import pytest
@ -6,12 +8,13 @@ from bec_widgets.examples.extreme.extreme import PlotApp
def setup_plot_app(qtbot, config): def setup_plot_app(qtbot, config):
"""Helper function to setup the PlotApp widget.""" """Helper function to setup the PlotApp widget."""
widget = PlotApp(config) client = MagicMock()
widget = PlotApp(config=config, client=client)
qtbot.addWidget(widget) qtbot.addWidget(widget)
return widget return widget
config_device_mode = { config_device_mode_all_filled = {
"plot_settings": { "plot_settings": {
"background_color": "black", "background_color": "black",
"num_columns": 2, "num_columns": 2,
@ -23,7 +26,7 @@ config_device_mode = {
"plot_name": "BPM4i plots vs samy", "plot_name": "BPM4i plots vs samy",
"x": { "x": {
"label": "Motor Y", "label": "Motor Y",
"signals": [{"name": "samy"}], "signals": [{"name": "samy", "entry": "samy"}],
}, },
"y": { "y": {
"label": "bpm4i", "label": "bpm4i",
@ -34,7 +37,7 @@ config_device_mode = {
"plot_name": "Gauss plots vs samx", "plot_name": "Gauss plots vs samx",
"x": { "x": {
"label": "Motor X", "label": "Motor X",
"signals": [{"name": "samx"}], "signals": [{"name": "samy", "entry": "samy"}],
}, },
"y": { "y": {
"label": "Gauss", "label": "Gauss",
@ -44,6 +47,39 @@ config_device_mode = {
], ],
} }
config_device_mode_no_entry = {
"plot_settings": {
"background_color": "black",
"num_columns": 2,
"colormap": "plasma",
"scan_types": False,
},
"plot_data": [
{
"plot_name": "BPM4i plots vs samy",
"x": {
"label": "Motor Y",
"signals": [{"name": "samy"}], # Entry is missing
},
"y": {
"label": "bpm4i",
"signals": [{"name": "bpm4i"}], # Entry is missing
},
},
{
"plot_name": "Gauss plots vs samx",
"x": {
"label": "Motor X",
"signals": [{"name": "samy"}], # Entry is missing
},
"y": {
"label": "Gauss",
"signals": [{"name": "gauss_bpm"}], # Entry is missing
},
},
],
}
config_scan_mode = config = { config_scan_mode = config = {
"plot_settings": { "plot_settings": {
"background_color": "white", "background_color": "white",
@ -124,7 +160,7 @@ config_scan_mode = config = {
@pytest.mark.parametrize( @pytest.mark.parametrize(
"config, plot_setting_bg, num_plot ,pg_background", "config, plot_setting_bg, num_plot ,pg_background",
[ [
(config_device_mode, "black", 2, "k"), (config_device_mode_all_filled, "black", 2, "k"),
# (config_scan_mode, "white", 5, "w") #TODO fix the extreme plot function to be able to init the plot before scan mode # (config_scan_mode, "white", 5, "w") #TODO fix the extreme plot function to be able to init the plot before scan mode
], ],
) )
@ -139,14 +175,14 @@ def test_init_config(qtbot, config, plot_setting_bg, num_plot, pg_background):
"config, num_columns_input, expected_num_columns, expected_plot_names, expected_coordinates", "config, num_columns_input, expected_num_columns, expected_plot_names, expected_coordinates",
[ [
( (
config_device_mode, config_device_mode_all_filled,
2, 2,
2, 2,
["BPM4i plots vs samy", "Gauss plots vs samx"], ["BPM4i plots vs samy", "Gauss plots vs samx"],
[(0, 0), (0, 1)], [(0, 0), (0, 1)],
), ),
( (
config_device_mode, config_device_mode_all_filled,
5, 5,
2, 2,
["BPM4i plots vs samy", "Gauss plots vs samx"], ["BPM4i plots vs samy", "Gauss plots vs samx"],
@ -175,3 +211,42 @@ def test_init_ui(
# Validate the grid_coordinates # Validate the grid_coordinates
assert plot_app.grid_coordinates == expected_coordinates assert plot_app.grid_coordinates == expected_coordinates
@pytest.mark.parametrize(
"msg, metadata, expected_data",
[
# Case: msg does not have 'scanID'
({"data": {}}, {}, {}),
# Case: msg contains all valid fields for multiple plots
(
{
"data": {
"samy": {"samy": {"value": 10}},
"bpm4i": {"bpm4i": {"value": 5}},
"gauss_bpm": {"gauss_bpm": {"value": 7}},
},
"scanID": 1,
},
{},
{
("samy", "samy", "bpm4i", "bpm4i"): {"x": [10], "y": [5]},
("samy", "samy", "gauss_bpm", "gauss_bpm"): {"x": [10], "y": [7]},
},
),
],
)
def test_on_scan_segment_device_mode_all_entries_in_config(qtbot, msg, metadata, expected_data):
"""
Ideal case when user fills config with both name and entry for all signals
and both name and entry is included in msg as well.
"""
plot_app = setup_plot_app(qtbot, config_device_mode_all_filled)
# Create an instance of class and pass in the mock object for 'dev'
plot_app.init_curves = MagicMock()
plot_app.data = {}
plot_app.scanID = 0
plot_app.on_scan_segment(msg, metadata)
assert plot_app.data == expected_data