Skip to content

Commit

Permalink
update test_config
Browse files Browse the repository at this point in the history
so it works as unit only tests
  • Loading branch information
Reed O'Brien committed Nov 14, 2012
1 parent 78b4e6a commit 8abb608
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 7 deletions.
18 changes: 13 additions & 5 deletions lumin/db.py
Expand Up @@ -24,10 +24,18 @@ def get_mongodb(registry):
def add_mongodb(event):
db = get_mongodb(event.request.registry)
event.request.db = db
event.request.fs = GridFS(db)


def register_mongodb(config, db_uri, slave_okay=False):
conn = pymongo.Connection(db_uri, slave_okay=slave_okay)
try:
event.request.fs = GridFS(db)
except TypeError:
## TODO: need to find a better way
## NB: using mock db so we use a mock gfs
## not sure if we can add a mock gfs to the
## firing event in
from lumin.testing import MockGridFS
event.request.fs = MockGridFS(event.request.db)


def register_mongodb(config, db_uri, slave_okay=False, conn=None):
conn = conn if conn else pymongo.Connection(db_uri, slave_okay=slave_okay)
config.registry.registerUtility(conn, IMongoDBConnection)
return conn
41 changes: 39 additions & 2 deletions lumin/tests/test_config.py
@@ -1,5 +1,8 @@
# import os
import unittest

import mongomock

import pyramid.testing


Expand All @@ -15,8 +18,9 @@ def _includelumin(self):
self.config.include(lumin)

def _registerdb(self):
conn = Connection()
self.config.registry.settings['db_name'] = 'frozznob'
self.config.register_mongodb('mongodb://localhost')
self.config.register_mongodb('mongodb://localhost', conn=conn)

def test_register_mongodb_directive(self):
self._includelumin()
Expand All @@ -35,7 +39,7 @@ def test_get_mongodb(self):
self._registerdb()

from lumin.db import get_mongodb
from pymongo.database import Database
from mongomock import Database

conn = get_mongodb(self.config.registry)
self.assertTrue(isinstance(conn, Database))
Expand Down Expand Up @@ -65,3 +69,36 @@ def test_includeme(self):
self.assertFalse(hasattr(self.config, 'register_mongodb'))
lumin.includeme(self.config)
self.assertTrue(hasattr(self.config, 'register_mongodb'))


class Database(mongomock.Database):
def __init__(self, conn):
super(Database, self).__init__(conn)

def __getitem__(self, db_name):
db = self._collections.get(db_name, None)
if db is None:
db = self._collections[db_name] = Collection(self)
return db

def __getattr__(self, attr):
return self[attr]


class Connection(mongomock.Connection):
def __init__(self):
super(Connection, self).__init__()

def __getitem__(self, db_name):
db = self._databases.get(db_name, None)
if db is None:
db = self._databases[db_name] = Database(self)
return db

def __getattr__(self, attr):
return self[attr]


class Collection(mongomock.Collection):
def __call__(self, *args, **kwargs):
pass

0 comments on commit 8abb608

Please sign in to comment.