Michael Merickel
2018-10-15 bda1306749c62ef4f11cfe567ed7d56c8ad94240
tests/test_registry.py
@@ -1,10 +1,14 @@
import unittest
from zope.interface import Interface
from zope.interface import implementer
class TestRegistry(unittest.TestCase):
    def _getTargetClass(self):
        from pyramid.registry import Registry
        return Registry
    def _makeOne(self, *args, **kw):
        return self._getTargetClass()(*args, **kw)
@@ -35,8 +39,10 @@
        registry = self._makeOne()
        self.assertEqual(registry.has_listeners, False)
        L = []
        def f(event):
            L.append(event)
        registry.registerHandler(f, [IDummyEvent])
        self.assertEqual(registry.has_listeners, True)
        event = DummyEvent()
@@ -47,8 +53,10 @@
        registry = self._makeOne()
        self.assertEqual(registry.has_listeners, False)
        from zope.interface import Interface
        registry.registerSubscriptionAdapter(DummyEvent,
                                             [IDummyEvent], Interface)
        registry.registerSubscriptionAdapter(
            DummyEvent, [IDummyEvent], Interface
        )
        self.assertEqual(registry.has_listeners, True)
    def test__get_settings(self):
@@ -64,6 +72,7 @@
    def test_init_forwards_args(self):
        from zope.interface import Interface
        from zope.interface.registry import Components
        dummy = object()
        c = Components()
        c.registerUtility(dummy, Interface)
@@ -74,17 +83,20 @@
    def test_init_forwards_kw(self):
        from zope.interface import Interface
        from zope.interface.registry import Components
        dummy = object()
        c = Components()
        c.registerUtility(dummy, Interface)
        registry = self._makeOne(bases=(c,))
        self.assertEqual(registry.getUtility(Interface), dummy)
class TestIntrospector(unittest.TestCase):
    def _getTargetClass(slf):
        from pyramid.registry import Introspector
        return Introspector
    def _makeOne(self):
        return self._getTargetClass()()
@@ -92,6 +104,7 @@
        from zope.interface.verify import verifyClass
        from zope.interface.verify import verifyObject
        from pyramid.interfaces import IIntrospector
        verifyClass(IIntrospector, self._getTargetClass())
        verifyObject(IIntrospector, self._makeOne())
@@ -100,8 +113,8 @@
        intr = DummyIntrospectable()
        inst.add(intr)
        self.assertEqual(intr.order, 0)
        category = {'discriminator':intr, 'discriminator_hash':intr}
        self.assertEqual(inst._categories, {'category':category})
        category = {'discriminator': intr, 'discriminator_hash': intr}
        self.assertEqual(inst._categories, {'category': category})
    def test_get_success(self):
        inst = self._makeOne()
@@ -130,9 +143,9 @@
        inst.add(intr2)
        inst.add(intr)
        expected = [
            {'introspectable':intr2, 'related':[]},
            {'introspectable':intr,  'related':[]},
            ]
            {'introspectable': intr2, 'related': []},
            {'introspectable': intr, 'related': []},
        ]
        self.assertEqual(inst.get_category('category'), expected)
    def test_get_category_returns_default_on_miss(self):
@@ -141,6 +154,7 @@
    def test_get_category_with_sortkey(self):
        import operator
        inst = self._makeOne()
        intr = DummyIntrospectable()
        intr.foo = 2
@@ -151,15 +165,17 @@
        inst.add(intr)
        inst.add(intr2)
        expected = [
            {'introspectable':intr2, 'related':[]},
            {'introspectable':intr,  'related':[]},
            ]
            {'introspectable': intr2, 'related': []},
            {'introspectable': intr, 'related': []},
        ]
        self.assertEqual(
            inst.get_category('category', sort_key=operator.attrgetter('foo')),
                              expected)
            expected,
        )
    def test_categorized(self):
        import operator
        inst = self._makeOne()
        intr = DummyIntrospectable()
        intr.foo = 2
@@ -169,12 +185,18 @@
        intr2.foo = 1
        inst.add(intr)
        inst.add(intr2)
        expected = [('category', [
            {'introspectable':intr2, 'related':[]},
            {'introspectable':intr,  'related':[]},
            ])]
        expected = [
            (
                'category',
                [
                    {'introspectable': intr2, 'related': []},
                    {'introspectable': intr, 'related': []},
                ],
            )
        ]
        self.assertEqual(
            inst.categorized(sort_key=operator.attrgetter('foo')), expected)
            inst.categorized(sort_key=operator.attrgetter('foo')), expected
        )
    def test_categories(self):
        inst = self._makeOne()
@@ -191,16 +213,20 @@
        intr2.discriminator_hash = 'discriminator2_hash'
        inst.add(intr)
        inst.add(intr2)
        inst.relate(('category', 'discriminator'),
                    ('category2', 'discriminator2'))
        inst.relate(
            ('category', 'discriminator'), ('category2', 'discriminator2')
        )
        inst.remove('category', 'discriminator')
        self.assertEqual(inst._categories,
                         {'category':
                              {},
                          'category2':
                              {'discriminator2': intr2,
                               'discriminator2_hash': intr2}
                         })
        self.assertEqual(
            inst._categories,
            {
                'category': {},
                'category2': {
                    'discriminator2': intr2,
                    'discriminator2_hash': intr2,
                },
            },
        )
        self.assertEqual(inst._refs.get(intr), None)
        self.assertEqual(inst._refs[intr2], [])
@@ -217,16 +243,22 @@
        intr2.discriminator_hash = 'discriminator2_hash'
        inst.add(intr)
        inst.add(intr2)
        inst.relate(('category', 'discriminator'),
                    ('category2', 'discriminator2'))
        self.assertEqual(inst._categories,
                         {'category':
                              {'discriminator':intr,
                               'discriminator_hash':intr},
                          'category2':
                              {'discriminator2': intr2,
                               'discriminator2_hash': intr2}
                         })
        inst.relate(
            ('category', 'discriminator'), ('category2', 'discriminator2')
        )
        self.assertEqual(
            inst._categories,
            {
                'category': {
                    'discriminator': intr,
                    'discriminator_hash': intr,
                },
                'category2': {
                    'discriminator2': intr2,
                    'discriminator2_hash': intr2,
                },
            },
        )
        self.assertEqual(inst._refs[intr], [intr2])
        self.assertEqual(inst._refs[intr2], [intr])
@@ -238,8 +270,8 @@
            KeyError,
            inst.relate,
            ('category', 'discriminator'),
            ('category2', 'discriminator2')
            )
            ('category2', 'discriminator2'),
        )
    def test_unrelate(self):
        inst = self._makeOne()
@@ -250,18 +282,25 @@
        intr2.discriminator_hash = 'discriminator2_hash'
        inst.add(intr)
        inst.add(intr2)
        inst.relate(('category', 'discriminator'),
                    ('category2', 'discriminator2'))
        inst.unrelate(('category', 'discriminator'),
                    ('category2', 'discriminator2'))
        self.assertEqual(inst._categories,
                         {'category':
                              {'discriminator':intr,
                               'discriminator_hash':intr},
                          'category2':
                              {'discriminator2': intr2,
                               'discriminator2_hash': intr2}
                         })
        inst.relate(
            ('category', 'discriminator'), ('category2', 'discriminator2')
        )
        inst.unrelate(
            ('category', 'discriminator'), ('category2', 'discriminator2')
        )
        self.assertEqual(
            inst._categories,
            {
                'category': {
                    'discriminator': intr,
                    'discriminator_hash': intr,
                },
                'category2': {
                    'discriminator2': intr2,
                    'discriminator2_hash': intr2,
                },
            },
        )
        self.assertEqual(inst._refs[intr], [])
        self.assertEqual(inst._refs[intr2], [])
@@ -274,8 +313,9 @@
        intr2.discriminator_hash = 'discriminator2_hash'
        inst.add(intr)
        inst.add(intr2)
        inst.relate(('category', 'discriminator'),
                    ('category2', 'discriminator2'))
        inst.relate(
            ('category', 'discriminator'), ('category2', 'discriminator2')
        )
        self.assertEqual(inst.related(intr), [intr2])
    def test_related_fail(self):
@@ -287,16 +327,19 @@
        intr2.discriminator_hash = 'discriminator2_hash'
        inst.add(intr)
        inst.add(intr2)
        inst.relate(('category', 'discriminator'),
                    ('category2', 'discriminator2'))
        inst.relate(
            ('category', 'discriminator'), ('category2', 'discriminator2')
        )
        del inst._categories['category']
        self.assertRaises(KeyError, inst.related, intr)
class TestIntrospectable(unittest.TestCase):
    def _getTargetClass(slf):
        from pyramid.registry import Introspectable
        return Introspectable
    def _makeOne(self, *arg, **kw):
        return self._getTargetClass()(*arg, **kw)
@@ -307,6 +350,7 @@
        from zope.interface.verify import verifyClass
        from zope.interface.verify import verifyObject
        from pyramid.interfaces import IIntrospectable
        verifyClass(IIntrospectable, self._getTargetClass())
        verifyObject(IIntrospectable, self._makeOnePopulated())
@@ -326,14 +370,16 @@
    def test___hash__(self):
        inst = self._makeOnePopulated()
        self.assertEqual(hash(inst),
                         hash((inst.category_name,) + (inst.discriminator,)))
        self.assertEqual(
            hash(inst), hash((inst.category_name,) + (inst.discriminator,))
        )
    def test___repr__(self):
        inst = self._makeOnePopulated()
        self.assertEqual(
            repr(inst),
            "<Introspectable category 'category', discriminator 'discrim'>")
            "<Introspectable category 'category', discriminator 'discrim'>",
        )
    def test___nonzero__(self):
        inst = self._makeOnePopulated()
@@ -352,17 +398,22 @@
        inst.register(introspector, action_info)
        self.assertEqual(inst.action_info, action_info)
        self.assertEqual(introspector.intrs, [inst])
        self.assertEqual(introspector.relations,
                         [(('category', 'discrim'), ('category1', 'discrim1'))])
        self.assertEqual(introspector.unrelations,
                         [(('category', 'discrim'), ('category2', 'discrim2'))])
        self.assertEqual(
            introspector.relations,
            [(('category', 'discrim'), ('category1', 'discrim1'))],
        )
        self.assertEqual(
            introspector.unrelations,
            [(('category', 'discrim'), ('category2', 'discrim2'))],
        )
class DummyIntrospector(object):
    def __init__(self):
        self.intrs = []
        self.relations = []
        self.unrelations = []
    def add(self, intr):
        self.intrs.append(intr)
@@ -372,10 +423,12 @@
    def unrelate(self, *pairs):
        self.unrelations.append(pairs)
class DummyModule:
    __path__ = "foo"
    __name__ = "dummy"
    __file__ = ''
class DummyIntrospectable(object):
    category_name = 'category'
@@ -390,12 +443,10 @@
        return hash((self.category_name,) + (self.discriminator,))
from zope.interface import Interface
from zope.interface import implementer
class IDummyEvent(Interface):
    pass
@implementer(IDummyEvent)
class DummyEvent(object):
    pass