django-components/tests/test_registry.py
Ryan Hiebert f219370be2 Use dictionary to compare registry
The registry is a dictionary, so comparing items() has a couple of
problems:

1. The order of a dictionary is unstable, so it may not turn out as
   expected.
2. items() returns a list in Python 2, but a dict_items in Python 3,
   which makes the comparison fail.
2015-06-13 13:42:27 -05:00

38 lines
1.4 KiB
Python

import unittest
from django_components import component
class MockComponent(object):
pass
class ComponentRegistryTest(unittest.TestCase):
def setUp(self):
self.registry = component.ComponentRegistry()
def test_simple_register(self):
self.registry.register(name="testcomponent", component=MockComponent)
self.assertEqual(
self.registry._registry,
{"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._registry,
{"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._registry, {})
def test_raises_on_failed_unregister(self):
with self.assertRaises(component.NotRegistered):
self.registry.unregister(name="testcomponent")