From 9d2b3315b48e7b044f8a503369b7db28adf8955f Mon Sep 17 00:00:00 2001 From: Malthe Borch Date: Tue, 2 Aug 2011 13:16:53 +0200 Subject: [PATCH] Add ``includeme`` support and attach registration directives to configurator. --- lumin/__init__.py | 12 +++++++++++- lumin/db.py | 6 +++++- lumin/tests/test_config.py | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 2 deletions(-) create mode 100644 lumin/tests/test_config.py diff --git a/lumin/__init__.py b/lumin/__init__.py index 6bd2f89..8743c29 100644 --- a/lumin/__init__.py +++ b/lumin/__init__.py @@ -1 +1,11 @@ -#a package +from .db import register_mongodb +from .db import register_memcached + +def includeme(config): + """ Function meant to be included via + :meth:`pyramid.config.Configurator.include`, which sets up the + Configurator with a ``register_path`` method.""" + + config.add_directive('register_mongodb', register_mongodb, action_wrap=False) + config.add_directive('register_memcached', register_memcached, action_wrap=False) + config.scan('lumin') diff --git a/lumin/db.py b/lumin/db.py index 40fb240..f0d6774 100644 --- a/lumin/db.py +++ b/lumin/db.py @@ -58,7 +58,11 @@ def add_memcached(event): if mc: event.request.mc = mc -def register_memchached(config, mc_host): +def register_memcached(config, mc_host): + if memcache is None: + # Raise import error exception + import memcached + mc_conn = memcache.Client(mc_host) config.registerUtility(mc_conn, IMemcachedClient) diff --git a/lumin/tests/test_config.py b/lumin/tests/test_config.py new file mode 100644 index 0000000..2001b7e --- /dev/null +++ b/lumin/tests/test_config.py @@ -0,0 +1,36 @@ +import unittest +import pyramid.testing + + +class ConfigurationTest(unittest.TestCase): + def setUp(self): + self.config = pyramid.testing.setUp() + + def tearDown(self): + pyramid.testing.tearDown() + + def test_register_mongodb_directive(self): + import lumin + self.config.include(lumin) + + from lumin.db import IMongoDBConnection + connection = self.config.registry.queryUtility(IMongoDBConnection) + self.assertTrue(connection is None) + + # Now, let's register a database connection + self.config.register_mongodb('mongodb://localhost/') + connection = self.config.registry.queryUtility(IMongoDBConnection) + self.assertTrue(connection is not None) + + def test_register_memcached_directive(self): + import lumin + self.config.include(lumin) + + from lumin.db import IMemcachedClient + client = self.config.registry.queryUtility(IMemcachedClient) + self.assertTrue(client is None) + + # Now, let's register a memcached client + self.config.register_memcached('http://localhost/') + client = self.config.registry.queryUtility(IMemcachedClient) + self.assertTrue(client is not None)