mirror of
https://github.com/django-components/django-components.git
synced 2025-07-13 11:54:59 +00:00
66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
import unittest
|
|
|
|
from django_components import component
|
|
|
|
from .django_test_setup import * # NOQA
|
|
|
|
|
|
class MockComponent(component.Component):
|
|
pass
|
|
|
|
|
|
class MockComponent2(component.Component):
|
|
pass
|
|
|
|
|
|
class MockComponentView(component.Component):
|
|
def get(self, request, *args, **kwargs):
|
|
pass
|
|
|
|
|
|
class ComponentRegistryTest(unittest.TestCase):
|
|
def setUp(self):
|
|
self.registry = component.ComponentRegistry()
|
|
|
|
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_simple_register(self):
|
|
self.registry.register(name="testcomponent", component=MockComponent)
|
|
self.assertEqual(self.registry.all(), {"testcomponent": MockComponent})
|
|
|
|
def test_register_two_components(self):
|
|
self.registry.register(name="testcomponent", component=MockComponent)
|
|
self.registry.register(name="testcomponent2", component=MockComponent)
|
|
self.assertEqual(
|
|
self.registry.all(),
|
|
{
|
|
"testcomponent": MockComponent,
|
|
"testcomponent2": MockComponent,
|
|
},
|
|
)
|
|
|
|
def test_prevent_registering_different_components_with_the_same_name(self):
|
|
self.registry.register(name="testcomponent", component=MockComponent)
|
|
with self.assertRaises(component.AlreadyRegistered):
|
|
self.registry.register(name="testcomponent", component=MockComponent2)
|
|
|
|
def test_allow_duplicated_registration_of_the_same_component(self):
|
|
try:
|
|
self.registry.register(name="testcomponent", component=MockComponentView)
|
|
self.registry.register(name="testcomponent", component=MockComponentView)
|
|
except component.AlreadyRegistered:
|
|
self.fail("Should not raise AlreadyRegistered")
|
|
|
|
def test_simple_unregister(self):
|
|
self.registry.register(name="testcomponent", component=MockComponent)
|
|
self.registry.unregister(name="testcomponent")
|
|
self.assertEqual(self.registry.all(), {})
|
|
|
|
def test_raises_on_failed_unregister(self):
|
|
with self.assertRaises(component.NotRegistered):
|
|
self.registry.unregister(name="testcomponent")
|