[Zope-Checkins] SVN: Zope/trunk/src/App/tests/test_ApplicationManager.py Test coverage for App.ApplicationManager.{FakeConnection, DatabaseChooser}.

Tres Seaver tseaver at palladion.com
Wed Apr 7 21:21:27 EDT 2010


Log message for revision 110618:
  Test coverage for App.ApplicationManager.{FakeConnection,DatabaseChooser}.

Changed:
  A   Zope/trunk/src/App/tests/test_ApplicationManager.py

-=-
Added: Zope/trunk/src/App/tests/test_ApplicationManager.py
===================================================================
--- Zope/trunk/src/App/tests/test_ApplicationManager.py	                        (rev 0)
+++ Zope/trunk/src/App/tests/test_ApplicationManager.py	2010-04-08 01:21:26 UTC (rev 110618)
@@ -0,0 +1,151 @@
+import unittest
+
+class FakeConnectionTests(unittest.TestCase):
+
+    def _getTargetClass(self):
+        from App.ApplicationManager import FakeConnection
+        return FakeConnection
+
+    def _makeOne(self, db, parent_jar):
+        return self._getTargetClass()(db, parent_jar)
+
+    def test_holds_db(self):
+        db = object()
+        parent_jar = object()
+        fc = self._makeOne(db, parent_jar)
+        self.failUnless(fc.db() is db)
+
+class DatabaseChooserTests(unittest.TestCase):
+
+    def setUp(self):
+        import App.config
+        self._old_config = App.config._config
+
+    def tearDown(self):
+        import App.config
+        App.config._config = self._old_config
+
+    def _getTargetClass(self):
+        from App.ApplicationManager import DatabaseChooser
+        return DatabaseChooser
+
+    def _makeOne(self, id):
+        return self._getTargetClass()(id)
+
+    def _makeRoot(self):
+        from ExtensionClass import Base
+        class Root(Base):
+            _p_jar = None
+            def getPhysicalRoot(self):
+                return self
+        return Root()
+
+    def _makeConfig(self, **kw):
+        import App.config
+        class DummyConfig:
+            pass
+        App.config._config = config = DummyConfig()
+        config.dbtab = DummyDBTab(kw)
+
+    def test_getDatabaseNames_sorted(self):
+        self._makeConfig(foo=object(), bar=object(), qux=object())
+        dc = self._makeOne('test')
+        self.assertEqual(list(dc.getDatabaseNames()), ['bar', 'foo', 'qux'])
+
+    def test___getitem___miss(self):
+        self._makeConfig(foo=object(), bar=object(), qux=object())
+        dc = self._makeOne('test')
+        self.assertRaises(KeyError, dc.__getitem__, 'nonesuch')
+
+    def test___getitem___hit(self):
+        from App.ApplicationManager import AltDatabaseManager
+        from App.ApplicationManager import FakeConnection
+        foo=object()
+        bar=object()
+        qux=object()
+        self._makeConfig(foo=foo, bar=bar, qux=qux)
+        root = self._makeRoot()
+        dc = self._makeOne('test').__of__(root)
+        found = dc['foo']
+        self.failUnless(isinstance(found, AltDatabaseManager))
+        self.assertEqual(found.id, 'foo')
+        self.failUnless(found.aq_parent is dc)
+        conn = found._p_jar
+        self.failUnless(isinstance(conn, FakeConnection))
+        self.failUnless(conn.db() is foo)
+
+    def test___bobo_traverse___miss(self):
+        self._makeConfig(foo=object(), bar=object(), qux=object())
+        dc = self._makeOne('test')
+        self.assertRaises(AttributeError,
+                          dc.__bobo_traverse__, None, 'nonesuch')
+
+    def test___bobo_traverse___hit_db(self):
+        from App.ApplicationManager import AltDatabaseManager
+        from App.ApplicationManager import FakeConnection
+        foo=object()
+        bar=object()
+        qux=object()
+        self._makeConfig(foo=foo, bar=bar, qux=qux)
+        root = self._makeRoot()
+        dc = self._makeOne('test').__of__(root)
+        found = dc.__bobo_traverse__(None, 'foo')
+        self.failUnless(isinstance(found, AltDatabaseManager))
+        self.assertEqual(found.id, 'foo')
+        self.failUnless(found.aq_parent is dc)
+        conn = found._p_jar
+        self.failUnless(isinstance(conn, FakeConnection))
+        self.failUnless(conn.db() is foo)
+
+    def test___bobo_traverse___miss_db_hit_attr(self):
+        foo=object()
+        bar=object()
+        qux=object()
+        self._makeConfig(foo=foo, bar=bar, qux=qux)
+        root = self._makeRoot()
+        dc = self._makeOne('test').__of__(root)
+        dc.spam = spam = object()
+        found = dc.__bobo_traverse__(None, 'spam')
+        self.failUnless(found is spam)
+
+    def test_tpValues(self):
+        from App.ApplicationManager import AltDatabaseManager
+        foo=object()
+        bar=object()
+        qux=object()
+        self._makeConfig(foo=foo, bar=bar, qux=qux)
+        root = self._makeRoot()
+        dc = self._makeOne('test').__of__(root)
+        values = dc.tpValues()
+        self.assertEqual(len(values), 3)
+        self.failUnless(isinstance(values[0], AltDatabaseManager))
+        self.assertEqual(values[0].id, 'bar')
+        self.assertEqual(values[0]._p_jar, None)
+        self.failUnless(isinstance(values[1], AltDatabaseManager))
+        self.assertEqual(values[1].id, 'foo')
+        self.assertEqual(values[1]._p_jar, None)
+        self.failUnless(isinstance(values[2], AltDatabaseManager))
+        self.assertEqual(values[2].id, 'qux')
+        self.assertEqual(values[2]._p_jar, None)
+
+
+class DummyDBTab:
+    def __init__(self, databases=None):
+        self._databases = databases or {}
+
+    def listDatabaseNames(self):
+        return self._databases.keys()
+
+    def hasDatabase(self, name):
+        return name in self._databases
+
+    def getDatabase(self, name):
+        return self._databases[name]
+
+
+
+def test_suite():
+    return unittest.TestSuite((
+        unittest.makeSuite(FakeConnectionTests),
+        unittest.makeSuite(DatabaseChooserTests),
+    ))



More information about the Zope-Checkins mailing list