[Checkins] SVN: zopyx.versioning/trunk/ testing boilerplate

Andreas Jung andreas at andreas-jung.com
Wed Jun 30 10:41:09 EDT 2010


Log message for revision 114019:
  testing boilerplate
  

Changed:
  U   zopyx.versioning/trunk/setup.py
  U   zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/storage.py
  A   zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/tests/test_storage.py

-=-
Modified: zopyx.versioning/trunk/setup.py
===================================================================
--- zopyx.versioning/trunk/setup.py	2010-06-30 14:39:48 UTC (rev 114018)
+++ zopyx.versioning/trunk/setup.py	2010-06-30 14:41:09 UTC (rev 114019)
@@ -21,10 +21,13 @@
       namespace_packages=['zopyx'],
       include_package_data=True,
       zip_safe=False,
+      test_runner='nose.testrunner',
       install_requires=[
           'setuptools',
           'zope.component',
           'pymongo',
+          'unittest2',
+          'nose',
           # -*- Extra requirements: -*-
       ],
       entry_points="""

Modified: zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/storage.py
===================================================================
--- zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/storage.py	2010-06-30 14:39:48 UTC (rev 114018)
+++ zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/storage.py	2010-06-30 14:41:09 UTC (rev 114019)
@@ -7,6 +7,7 @@
 
 from zope.interface import implements
 from zopyx.versioning.interfaces import IVersionStorage
+from zopyx.versioning import errors
 
 from pymongo.connection import Connection
 
@@ -20,6 +21,10 @@
         self.metadata = self.db.metadata
         self.revisions = self.db.revisions
 
+    def clear(self):
+        self.metadata.remove()
+        self.revisions.remove()
+
     def store(self, id, version_data, creator, comment=None):
 
         id_entry = self.metadata.find_one({'_oid' : id})
@@ -37,13 +42,19 @@
 
     def retrieve(self, id, revision):
 
+        count = self.revisions.find({'_oid' : id}).count()
+        if count == 0:
+            raise errors.NoDocumentFound('No document with ID %s found' % id)
+
         entry = self.revisions.find_one({'_oid' : id, '_rev' : revision})
         if entry:
             del entry['_oid']
             del entry['_rev']
             del entry['_id']
-        return json.dumps(entry)
+            return json.dumps(entry)
 
+        raise errors.NoRevisionFound('No revision %d found for document with ID %s found' % (revision, id))
+
     def remove(self, id):
         self.metadata.remove({'_oid' : id})
         self.revisions.remove({'_oid' : id})

Added: zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/tests/test_storage.py
===================================================================
--- zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/tests/test_storage.py	                        (rev 0)
+++ zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/tests/test_storage.py	2010-06-30 14:41:09 UTC (rev 114019)
@@ -0,0 +1,18 @@
+"""
+MongoDB storage tests
+"""
+
+import unittest2
+from zopyx.versioning.storages.mongodb.storage import MongoDBStorage
+from zopyx.versioning import errors
+
+class StorageTests(unittest2.TestCase):
+
+    def setUp(self):
+        self.storage = MongoDBStorage('localhost', 10200, 'test-db')
+        self.storage.clear()
+
+    def testRetrievalNonExistingDocuments(self):
+        with self.assertRaises(errors.NoDocumentFound):
+            self.storage.retrieve('42', 42)
+



More information about the checkins mailing list