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

feat: add metadata widget to scan control

This commit is contained in:
2025-02-17 16:27:41 +01:00
committed by wyzula_j
parent 1c0021f98b
commit 7309c1dede
6 changed files with 144 additions and 35 deletions

View File

@ -7,6 +7,7 @@ from bec_lib.messages import AvailableResourceMessage, ScanQueueHistoryMessage,
from bec_widgets.utils.widget_io import WidgetIO
from bec_widgets.widgets.control.scan_control import ScanControl
from bec_widgets.widgets.editors.scan_metadata._metadata_widgets import StrMetadataField
from .client_mocks import mocked_client
@ -403,7 +404,7 @@ def test_run_line_scan_with_parameters(scan_control, mocked_client):
expected_device = mocked_client.device_manager.devices.samx
expected_args_list = [expected_device, args["start"], args["stop"]]
assert called_args == tuple(expected_args_list)
assert called_kwargs == kwargs
assert called_kwargs == kwargs | {"metadata": {"sample_name": ""}}
# Check the emitted signal
mock_slot.assert_called_once()
@ -479,7 +480,7 @@ def test_run_grid_scan_with_parameters(scan_control, mocked_client):
args_row2["steps"],
]
assert called_args == tuple(expected_args_list)
assert called_kwargs == kwargs
assert called_kwargs == kwargs | {"metadata": {"sample_name": ""}}
# Check the emitted signal
mock_slot.assert_called_once()
@ -532,3 +533,22 @@ def test_get_scan_parameters_from_redis(scan_control, mocked_client):
assert args == ["samx", 0.0, 2.0]
assert kwargs == {"steps": 10, "relative": False, "exp_time": 2.0, "burst_at_each_point": 1}
def test_scan_metadata_is_connected(scan_control):
assert scan_control._metadata_form._scan_name == "line_scan"
scan_control.comboBox_scan_selection.setCurrentText("grid_scan")
assert scan_control._metadata_form._scan_name == "grid_scan"
sample_name = scan_control._metadata_form._md_grid_layout.itemAtPosition(0, 1).widget()
assert isinstance(sample_name, StrMetadataField)
sample_name._main_widget.setText("Test Sample")
scan_control._metadata_form._additional_metadata._table_model._data = [
["test key 1", "test value 1"],
["test key 2", "test value 2"],
]
scan_control._metadata_form.validate_form()
assert scan_control._scan_metadata == {
"sample_name": "Test Sample",
"test key 1": "test value 1",
"test key 2": "test value 2",
}

View File

@ -5,11 +5,9 @@ import pytest
from bec_lib.metadata_schema import BasicScanMetadata
from pydantic import Field
from pydantic.types import Json
from PySide6.QtCore import QItemSelectionModel, QModelIndex, QRect
from qtpy.QtCore import QPoint, Qt
from qtpy.QtWidgets import QCheckBox, QDoubleSpinBox, QLineEdit, QSpinBox, QWidget
from qtpy.QtCore import QItemSelectionModel, QPoint, Qt
from bec_widgets.widgets.editors.scan_metadata import AdditionalMetadataTableModel, ScanMetadata
from bec_widgets.widgets.editors.scan_metadata import ScanMetadata
from bec_widgets.widgets.editors.scan_metadata._metadata_widgets import (
BoolMetadataField,
FloatDecimalMetadataField,
@ -191,7 +189,8 @@ def test_additional_metadata_table_add_row(table: AdditionalMetadataTable):
def test_additional_metadata_table_delete_row(table: AdditionalMetadataTable):
assert table._table_model.rowCount() == 3
m = table._table_view.selectionModel()
m.select(table._table_view.indexAt(QPoint(40, 30)), QItemSelectionModel.SelectionFlag.Select)
item = table._table_view.indexAt(QPoint(0, 0)).siblingAtRow(1)
m.select(item, QItemSelectionModel.SelectionFlag.Select)
table.delete_selected_rows()
assert table._table_model.rowCount() == 2
assert list(table.dump_dict().keys()) == ["key1", "key3"]