Class decorator and test

This commit is contained in:
Dan Jacob 2021-02-27 16:49:06 +02:00
parent bb3193cd4c
commit 10a117ee88
2 changed files with 25 additions and 0 deletions

View file

@ -97,3 +97,20 @@ def is_slot_node(node):
# This variable represents the global component registry
registry = ComponentRegistry()
def register(name):
"""Class decorator to register a component.
Usage:
@register("my_component")
class MyComponent(component.Component):
...
"""
def decorator(component):
registry.register(name=name, component=component)
return component
return decorator

View file

@ -9,6 +9,14 @@ from .testutils import Django111CompatibleSimpleTestCase as SimpleTestCase
class ComponentRegistryTest(SimpleTestCase):
def test_register_class_decorator(self):
@component.register("decorated_component")
class TestComponent(component.Component):
pass
self.assertEqual(component.registry.get("decorated_component"), TestComponent)
def test_empty_component(self):
class EmptyComponent(component.Component):
pass