django-components/tests/test_registry.py
2021-09-10 11:12:26 +00:00

54 lines
1.8 KiB
Python

import unittest
from django_components import component
from .django_test_setup import * # NOQA
class MockComponent(object):
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_twice(self):
self.registry.register(name="testcomponent", component=MockComponent)
with self.assertRaises(component.AlreadyRegistered):
self.registry.register(
name="testcomponent", component=MockComponent
)
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")