mirror of
https://github.com/bec-project/bec_widgets.git
synced 2026-04-23 00:32:42 +02:00
51 lines
2.0 KiB
Python
51 lines
2.0 KiB
Python
import sys
|
|
from types import ModuleType
|
|
from unittest.mock import patch
|
|
|
|
from bec_widgets.cli.rpc.rpc_widget_handler import RPCWidgetHandler
|
|
from bec_widgets.utils.plugin_utils import BECClassReference
|
|
|
|
|
|
def test_rpc_widget_handler():
|
|
handler = RPCWidgetHandler()
|
|
assert "Image" in handler.widget_classes
|
|
assert "RingProgressBar" in handler.widget_classes
|
|
assert "BECDockArea" in handler.widget_classes
|
|
|
|
|
|
def test_duplicate_plugins_not_allowed(monkeypatch):
|
|
builtin_module = ModuleType("builtin_test_widgets")
|
|
plugin_module = ModuleType("plugin_test_widgets")
|
|
|
|
SharedWidgetBuiltin = type("SharedWidget", (), {})
|
|
SharedWidgetBuiltin.__module__ = builtin_module.__name__
|
|
setattr(builtin_module, "SharedWidget", SharedWidgetBuiltin)
|
|
|
|
SharedWidgetPlugin = type("SharedWidget", (), {})
|
|
SharedWidgetPlugin.__module__ = plugin_module.__name__
|
|
setattr(plugin_module, "SharedWidget", SharedWidgetPlugin)
|
|
|
|
NewPluginWidget = type("NewPluginWidget", (), {})
|
|
NewPluginWidget.__module__ = plugin_module.__name__
|
|
setattr(plugin_module, "NewPluginWidget", NewPluginWidget)
|
|
|
|
monkeypatch.setitem(sys.modules, builtin_module.__name__, builtin_module)
|
|
monkeypatch.setitem(sys.modules, plugin_module.__name__, plugin_module)
|
|
|
|
with (
|
|
patch(
|
|
"bec_widgets.cli.rpc.rpc_widget_handler.get_all_plugin_widget_references",
|
|
return_value=[
|
|
BECClassReference(name="SharedWidget", module=plugin_module.__name__),
|
|
BECClassReference(name="NewPluginWidget", module=plugin_module.__name__),
|
|
],
|
|
),
|
|
patch(
|
|
"bec_widgets.cli.rpc.rpc_widget_handler.get_custom_class_references",
|
|
return_value=[BECClassReference(name="SharedWidget", module=builtin_module.__name__)],
|
|
),
|
|
):
|
|
handler = RPCWidgetHandler()
|
|
assert handler.widget_classes["SharedWidget"].__module__ == builtin_module.__name__
|
|
assert handler.widget_classes["NewPluginWidget"].__module__ == plugin_module.__name__
|