[Checkins] SVN: zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/ more tests, better error handling

Andreas Jung andreas at andreas-jung.com
Fri Jul 2 03:31:25 EDT 2010


Log message for revision 114094:
  more tests, better error handling
  

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

-=-
Modified: zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/storage.py
===================================================================
--- zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/storage.py	2010-07-02 07:25:36 UTC (rev 114093)
+++ zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/storage.py	2010-07-02 07:31:25 UTC (rev 114094)
@@ -63,6 +63,8 @@
         return bool(self.revisions.find_one({'_oid' : id, '_rev' : revision}))
 
     def list_revisions(self, id):
+        if self.revisions.find({'_oid' : id}).count() == 0:
+            raise errors.NoDocumentFound('No document with ID %s found' % id)
 
         revisions = self.revisions.find({'_oid' : id})
         if revisions.count == 0:
@@ -70,6 +72,8 @@
         return sorted([r['_rev'] for r in revisions])
 
     def remove_revision(self, id, revision):
+        if self.revisions.find({'_oid' : id}).count() == 0:
+            raise errors.NoDocumentFound('No document with ID %s found' % id)
         self.revisions.remove({'_oid' : id, '_rev' : revision})
 
 

Modified: zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/tests/test_storage.py
===================================================================
--- zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/tests/test_storage.py	2010-07-02 07:25:36 UTC (rev 114093)
+++ zopyx.versioning/trunk/zopyx/versioning/storages/mongodb/tests/test_storage.py	2010-07-02 07:31:25 UTC (rev 114094)
@@ -3,6 +3,7 @@
 """
 
 import unittest2
+import json
 
 from zope.interface.verify import verifyClass
 
@@ -23,3 +24,14 @@
         with self.assertRaises(errors.NoDocumentFound):
             self.storage.retrieve('42', 42)
 
+    def testStore(self):
+        version_data = {'text' : u'hello world', 'subject' : [u'kw1', u'kw2']}
+        for i in range(5):
+            self.storage.store('42', json.dumps(version_data), 'ajung')
+        revisions = self.storage.list_revisions('42')
+        self.assertEqual(revisions, [0,1,2,3,4])
+
+    def testListRevisionsNonExistingID(self):
+        with self.assertRaises(errors.NoDocumentFound):
+            revisions = self.storage.list_revisions('do.such.document')
+



More information about the checkins mailing list