def setUp(self):
     self.registry = PreconditionRegistry()
 def setUp(self):
     self.registry = PreconditionRegistry()
class PreconditionRegistryTests(unittest.TestCase):

    def setUp(self):
        self.registry = PreconditionRegistry()

    def test_registry(self):
        self.assertEqual(len(self.registry), 0)
        with self.assertRaises(ValueError):
            # nothing registered
            self.registry.dispatch(
                webdav_handle=None, filename='test.html', view_name='htmlview', request=None)

    def test_correct_entries(self):
        p = Precondition(
            suffixes=('.html',), view_names=['htmlview'], view_handler=view_handler)
        self.registry.register(p)
        p = Precondition(
            suffixes=('.xml',), view_names=['xmlview'], view_handler=view_handler2)
        self.registry.register(p)

        result = self.registry.dispatch(
            webdav_handle=None, filename='test.html', view_name='htmlview', request=None)
        self.assertEqual(result, u'hello world')

        result = self.registry.dispatch(
            webdav_handle=None, filename='test.xml', view_name='xmlview', request=None)
        self.assertEqual(result, u'world hello')

        with self.assertRaises(ValueError):
            self.registry.dispatch(
                webdav_handle=None, filename='test.xml', view_name='htmlview', request=None)

    def test_default_fallback(self):
        self.registry.set_default(Precondition(view_handler=default_handler))
        result = self.registry.dispatch(
            webdav_handle=None, filename='xxxxx', view_name='xxxxxx', request=None)
        self.assertEqual(result, u'default handler')

    def test_class_as_view_handler(self):
        self.registry.set_default(
            Precondition(view_handler=class_view_handler))
        result = self.registry.dispatch(
            webdav_handle=None, filename='xxxxx', view_name='xxxxxx', request=None)
        self.assertEqual(result, u'i am a class view handler')

    def test_register_improper_tyoe(self):
        with self.assertRaises(TypeError):
            self.registry.register(None)
class PreconditionRegistryTests(unittest.TestCase):

    def setUp(self):
        self.registry = PreconditionRegistry()

    def test_registry(self):
        self.assertEqual(len(self.registry), 0)
        with self.assertRaises(ValueError):
            # nothing registered
            self.registry.dispatch(
                get_handle=None, filename='test.html', view_name='htmlview', request=None)

    def test_correct_entries(self):
        p = Precondition(
            suffixes=('.html',), view_names=['htmlview'], view_handler=view_handler)
        self.registry.register(p)
        p = Precondition(
            suffixes=('.xml',), view_names=['xmlview'], view_handler=view_handler2)
        self.registry.register(p)

        result = self.registry.dispatch(
            get_handle=None, filename='test.html', view_name='htmlview', request=None)
        self.assertEqual(result, u'hello world')

        result = self.registry.dispatch(
            get_handle=None, filename='test.xml', view_name='xmlview', request=None)
        self.assertEqual(result, u'world hello')

        with self.assertRaises(ValueError):
            self.registry.dispatch(
                get_handle=None, filename='test.xml', view_name='htmlview', request=None)

    def test_default_fallback(self):
        self.registry.set_default(Precondition(view_handler=default_handler))
        result = self.registry.dispatch(
            get_handle=None, filename='xxxxx', view_name='xxxxxx', request=None)
        self.assertEqual(result, u'default handler')

    def test_class_as_view_handler(self):
        self.registry.set_default(
            Precondition(view_handler=class_view_handler))
        result = self.registry.dispatch(
            get_handle=None, filename='xxxxx', view_name='xxxxxx', request=None)
        self.assertEqual(result, u'i am a class view handler')

    def test_register_improper_tyoe(self):
        with self.assertRaises(TypeError):
            self.registry.register(None)