[CalendarServer-changes] [6362] CalendarServer/branches/users/glyph/more-deferreds-6/txdav/carddav/ datastore/test/common.py

source_changes at macosforge.org source_changes at macosforge.org
Thu Sep 23 18:12:37 PDT 2010


Revision: 6362
          http://trac.macosforge.org/projects/calendarserver/changeset/6362
Author:   glyph at apple.com
Date:     2010-09-23 18:12:36 -0700 (Thu, 23 Sep 2010)
Log Message:
-----------
defer all addressbookWithName in txdav tests

Modified Paths:
--------------
    CalendarServer/branches/users/glyph/more-deferreds-6/txdav/carddav/datastore/test/common.py

Modified: CalendarServer/branches/users/glyph/more-deferreds-6/txdav/carddav/datastore/test/common.py
===================================================================
--- CalendarServer/branches/users/glyph/more-deferreds-6/txdav/carddav/datastore/test/common.py	2010-09-24 01:08:51 UTC (rev 6361)
+++ CalendarServer/branches/users/glyph/more-deferreds-6/txdav/carddav/datastore/test/common.py	2010-09-24 01:12:36 UTC (rev 6362)
@@ -17,7 +17,7 @@
 """
 Tests for common addressbook store API functions.
 """
-from twisted.internet.defer import inlineCallbacks
+from twisted.internet.defer import inlineCallbacks, returnValue
 
 from txdav.idav import IPropertyStore, IDataStore
 from txdav.base.propertystore.base import PropertyName
@@ -140,19 +140,23 @@
         return self.transactionUnderTest().addressbookHomeWithUID("home1")
 
 
+    @inlineCallbacks
     def addressbookUnderTest(self):
         """
         Get the addressbook detailed by C{requirements['home1']['addressbook_1']}.
         """
-        return self.homeUnderTest().addressbookWithName("addressbook_1")
+        returnValue((yield (yield self.homeUnderTest())
+            .addressbookWithName("addressbook_1")))
 
 
+    @inlineCallbacks
     def addressbookObjectUnderTest(self):
         """
         Get the addressbook detailed by
         C{requirements['home1']['addressbook_1']['1.vcf']}.
         """
-        return self.addressbookUnderTest().addressbookObjectWithName("1.vcf")
+        returnValue((yield self.addressbookUnderTest())
+                    .addressbookObjectWithName("1.vcf"))
 
 
     def test_addressbookStoreProvides(self):
@@ -182,25 +186,30 @@
         self.assertProvides(IAddressBookHome, self.homeUnderTest())
 
 
+    @inlineCallbacks
     def test_addressbookProvides(self):
         """
         The addressbooks generated by the addressbook store provide L{IAddressBook} and
         its required attributes.
         """
-        self.assertProvides(IAddressBook, self.addressbookUnderTest())
+        self.assertProvides(IAddressBook, (yield self.addressbookUnderTest()))
 
 
+    @inlineCallbacks
     def test_addressbookObjectProvides(self):
         """
         The addressbook objects generated by the addressbook store provide
         L{IAddressBookObject} and its required attributes.
         """
-        self.assertProvides(IAddressBookObject, self.addressbookObjectUnderTest())
+        self.assertProvides(IAddressBookObject,
+                            (yield self.addressbookObjectUnderTest()))
 
+
+    @inlineCallbacks
     def test_notifierID(self):
         home = self.homeUnderTest()
         self.assertEquals(home.notifierID(), "CardDAV|home1")
-        addressbook = home.addressbookWithName("addressbook_1")
+        addressbook = yield home.addressbookWithName("addressbook_1")
         self.assertEquals(addressbook.notifierID(), "CardDAV|home1")
         self.assertEquals(addressbook.notifierID(label="collection"), "CardDAV|home1/addressbook_1")
 
@@ -226,6 +235,7 @@
         self.assertEquals(txn.addressbookHomeWithUID("xyzzy"), None)
 
 
+    @inlineCallbacks
     def test_addressbookWithName_exists(self):
         """
         L{IAddressBookHome.addressbookWithName} returns an L{IAddressBook} provider,
@@ -233,7 +243,7 @@
         """
         home = self.homeUnderTest()
         for name in home1_addressbookNames:
-            addressbook = home.addressbookWithName(name)
+            addressbook = yield home.addressbookWithName(name)
             if addressbook is None:
                 self.fail("addressbook %r didn't exist" % (name,))
             self.assertProvides(IAddressBook, addressbook)
@@ -246,29 +256,32 @@
         L{IAddressBook.rename} changes the name of the L{IAddressBook}.
         """
         home = self.homeUnderTest()
-        addressbook = home.addressbookWithName("addressbook_1")
+        addressbook = yield home.addressbookWithName("addressbook_1")
         addressbook.rename("some_other_name")
+        @inlineCallbacks
         def positiveAssertions():
             self.assertEquals(addressbook.name(), "some_other_name")
-            self.assertEquals(addressbook, home.addressbookWithName("some_other_name"))
-            self.assertEquals(None, home.addressbookWithName("addressbook_1"))
-        positiveAssertions()
+            self.assertEquals(addressbook, (yield home.addressbookWithName("some_other_name")))
+            self.assertEquals(None, (yield home.addressbookWithName("addressbook_1")))
+        yield positiveAssertions()
         yield self.commit()
-        home = self.homeUnderTest()
-        addressbook = home.addressbookWithName("some_other_name")
+        home = yield self.homeUnderTest()
+        addressbook = yield home.addressbookWithName("some_other_name")
         positiveAssertions()
         # FIXME: revert
         # FIXME: test for multiple renames
         # FIXME: test for conflicting renames (a->b, c->a in the same txn)
 
 
+    @inlineCallbacks
     def test_addressbookWithName_absent(self):
         """
         L{IAddressBookHome.addressbookWithName} returns C{None} for addressbooks which
         do not exist.
         """
-        self.assertEquals(self.homeUnderTest().addressbookWithName("xyzzy"),
-                          None)
+        self.assertEquals(
+            (yield (yield self.homeUnderTest()).addressbookWithName("xyzzy")),
+            None)
 
 
     @inlineCallbacks
@@ -279,11 +292,11 @@
         """
         home = self.homeUnderTest()
         name = "new"
-        self.assertIdentical(home.addressbookWithName(name), None)
+        self.assertIdentical((yield home.addressbookWithName(name)), None)
         home.createAddressBookWithName(name)
-        self.assertNotIdentical(home.addressbookWithName(name), None)
+        self.assertNotIdentical((yield home.addressbookWithName(name)), None)
         def checkProperties():
-            addressbookProperties = home.addressbookWithName(name).properties()
+            addressbookProperties = (yield home.addressbookWithName(name)).properties()
             addressbookType = davxml.ResourceType.addressbook #@UndefinedVariable
             self.assertEquals(
                 addressbookProperties[
@@ -300,7 +313,7 @@
 
         # Make sure it's available in a new transaction; i.e. test the commit.
         home = self.homeUnderTest()
-        self.assertNotIdentical(home.addressbookWithName(name), None)
+        self.assertNotIdentical((yield home.addressbookWithName(name)), None)
 
         # FIXME: These two lines aren't in the calendar common tests:
         # home = self.addressbookStore.newTransaction().addressbookHomeWithUID(
@@ -333,9 +346,9 @@
         home = self.homeUnderTest()
         # FIXME: test transactions
         for name in home1_addressbookNames:
-            self.assertNotIdentical(home.addressbookWithName(name), None)
+            self.assertNotIdentical((yield home.addressbookWithName(name)), None)
             home.removeAddressBookWithName(name)
-            self.assertEquals(home.addressbookWithName(name), None)
+            self.assertEquals((yield home.addressbookWithName(name)), None)
 
         yield self.commit()
 
@@ -362,12 +375,13 @@
                           home.removeAddressBookWithName, "xyzzy")
 
 
+    @inlineCallbacks
     def test_addressbookObjects(self):
         """
         L{IAddressBook.addressbookObjects} will enumerate the addressbook objects present
         in the filesystem, in name order, but skip those with hidden names.
         """
-        addressbook1 = self.addressbookUnderTest()
+        addressbook1 = yield self.addressbookUnderTest()
         addressbookObjects = list(addressbook1.addressbookObjects())
 
         for addressbookObject in addressbookObjects:
@@ -383,35 +397,38 @@
         )
 
 
+    @inlineCallbacks
     def test_addressbookObjectsWithRemovedObject(self):
         """
         L{IAddressBook.addressbookObjects} skips those objects which have been
         removed by L{AddressBook.removeAddressBookObjectWithName} in the same
         transaction, even if it has not yet been committed.
         """
-        addressbook1 = self.addressbookUnderTest()
+        addressbook1 = yield self.addressbookUnderTest()
         addressbook1.removeAddressBookObjectWithName("2.vcf")
         addressbookObjects = list(addressbook1.addressbookObjects())
         self.assertEquals(set(o.name() for o in addressbookObjects),
                           set(addressbook1_objectNames) - set(["2.vcf"]))
 
 
+    @inlineCallbacks
     def test_ownerAddressBookHome(self):
         """
         L{IAddressBook.ownerAddressBookHome} should match the home UID.
         """
         self.assertEquals(
-            self.addressbookUnderTest().ownerAddressBookHome().uid(),
-            self.homeUnderTest().uid()
+            (yield self.addressbookUnderTest()).ownerAddressBookHome().uid(),
+            (yield self.homeUnderTest()).uid()
         )
 
 
+    @inlineCallbacks
     def test_addressbookObjectWithName_exists(self):
         """
         L{IAddressBook.addressbookObjectWithName} returns an L{IAddressBookObject}
         provider for addressbooks which already exist.
         """
-        addressbook1 = self.addressbookUnderTest()
+        addressbook1 = yield self.addressbookUnderTest()
         for name in addressbook1_objectNames:
             addressbookObject = addressbook1.addressbookObjectWithName(name)
             self.assertProvides(IAddressBookObject, addressbookObject)
@@ -419,20 +436,22 @@
             # FIXME: add more tests based on CommonTests.requirements
 
 
+    @inlineCallbacks
     def test_addressbookObjectWithName_absent(self):
         """
         L{IAddressBook.addressbookObjectWithName} returns C{None} for addressbooks which
         don't exist.
         """
-        addressbook1 = self.addressbookUnderTest()
+        addressbook1 = yield self.addressbookUnderTest()
         self.assertEquals(addressbook1.addressbookObjectWithName("xyzzy"), None)
 
 
+    @inlineCallbacks
     def test_removeAddressBookObjectWithUID_exists(self):
         """
         Remove an existing addressbook object.
         """
-        addressbook = self.addressbookUnderTest()
+        addressbook = yield self.addressbookUnderTest()
         for name in addressbook1_objectNames:
             uid = (u'uid' + name.rstrip(".vcf"))
             self.assertNotIdentical(addressbook.addressbookObjectWithUID(uid),
@@ -453,7 +472,7 @@
         """
         Remove an existing addressbook object.
         """
-        addressbook = self.addressbookUnderTest()
+        addressbook = yield self.addressbookUnderTest()
         for name in addressbook1_objectNames:
             self.assertNotIdentical(
                 addressbook.addressbookObjectWithName(name), None
@@ -478,37 +497,43 @@
         )
 
 
+    @inlineCallbacks
     def test_removeAddressBookObjectWithName_absent(self):
         """
         Attempt to remove an non-existing addressbook object should raise.
         """
-        addressbook = self.addressbookUnderTest()
+        addressbook = yield self.addressbookUnderTest()
         self.assertRaises(
             NoSuchObjectResourceError,
             addressbook.removeAddressBookObjectWithName, "xyzzy"
         )
 
 
+    @inlineCallbacks
     def test_addressbookName(self):
         """
         L{AddressBook.name} reflects the name of the addressbook.
         """
-        self.assertEquals(self.addressbookUnderTest().name(), "addressbook_1")
+        self.assertEquals((yield self.addressbookUnderTest()).name(), "addressbook_1")
 
 
+    @inlineCallbacks
     def test_addressbookObjectName(self):
         """
         L{IAddressBookObject.name} reflects the name of the addressbook object.
         """
-        self.assertEquals(self.addressbookObjectUnderTest().name(), "1.vcf")
+        self.assertEquals(
+            (yield self.addressbookObjectUnderTest()).name(),
+            "1.vcf")
 
 
+    @inlineCallbacks
     def test_component(self):
         """
         L{IAddressBookObject.component} returns a L{VComponent} describing the
         addressbook data underlying that addressbook object.
         """
-        component = self.addressbookObjectUnderTest().component()
+        component = (yield self.addressbookObjectUnderTest()).component()
 
         self.failUnless(
             isinstance(component, VComponent),
@@ -519,35 +544,39 @@
         self.assertEquals(component.resourceUID(), "uid1")
 
 
+    @inlineCallbacks
     def test_iAddressBookText(self):
         """
         L{IAddressBookObject.iAddressBookText} returns a C{str} describing the same
         data provided by L{IAddressBookObject.component}.
         """
-        text = self.addressbookObjectUnderTest().vCardText()
+        text = (yield self.addressbookObjectUnderTest()).vCardText()
         self.assertIsInstance(text, str)
         self.failUnless(text.startswith("BEGIN:VCARD\r\n"))
         self.assertIn("\r\nUID:uid1\r\n", text)
         self.failUnless(text.endswith("\r\nEND:VCARD\r\n"))
 
 
+    @inlineCallbacks
     def test_addressbookObjectUID(self):
         """
         L{IAddressBookObject.uid} returns a C{str} describing the C{UID} property
         of the addressbook object's component.
         """
-        self.assertEquals(self.addressbookObjectUnderTest().uid(), "uid1")
+        self.assertEquals((yield self.addressbookObjectUnderTest()).uid(), "uid1")
 
 
+    @inlineCallbacks
     def test_addressbookObjectWithUID_absent(self):
         """
         L{IAddressBook.addressbookObjectWithUID} returns C{None} for addressbooks which
         don't exist.
         """
-        addressbook1 = self.addressbookUnderTest()
+        addressbook1 = yield self.addressbookUnderTest()
         self.assertEquals(addressbook1.addressbookObjectWithUID("xyzzy"), None)
 
 
+    @inlineCallbacks
     def test_addressbooks(self):
         """
         L{IAddressBookHome.addressbooks} returns an iterable of L{IAddressBook}
@@ -556,13 +585,15 @@
         """
         # Add a dot directory to make sure we don't find it
         # self.home1._path.child(".foo").createDirectory()
-        home = self.homeUnderTest()
-        addressbooks = list(home.addressbooks())
+        home = yield self.homeUnderTest()
+        addressbooks = list((yield home.addressbooks()))
 
         for addressbook in addressbooks:
             self.assertProvides(IAddressBook, addressbook)
-            self.assertEquals(addressbook,
-                              home.addressbookWithName(addressbook.name()))
+            self.assertEquals(
+                addressbook,
+                (yield home.addressbookWithName(addressbook.name()))
+            )
 
         self.assertEquals(
             set(c.name() for c in addressbooks),
@@ -588,7 +619,7 @@
         L{IAddressBook.createAddressBookObjectWithName} creates a new
         L{IAddressBookObject}.
         """
-        addressbook1 = self.addressbookUnderTest()
+        addressbook1 = yield self.addressbookUnderTest()
         name = "4.vcf"
         self.assertIdentical(addressbook1.addressbookObjectWithName(name), None)
         component = VComponent.fromString(vcard4_text)
@@ -609,6 +640,7 @@
         )
 
 
+    @inlineCallbacks
     def test_createAddressBookObjectWithName_exists(self):
         """
         L{IAddressBook.createAddressBookObjectWithName} raises
@@ -617,11 +649,12 @@
         """
         self.assertRaises(
             ObjectResourceNameAlreadyExistsError,
-            self.addressbookUnderTest().createAddressBookObjectWithName,
+            (yield self.addressbookUnderTest()).createAddressBookObjectWithName,
             "1.vcf", VComponent.fromString(vcard4_text)
         )
 
 
+    @inlineCallbacks
     def test_createAddressBookObjectWithName_invalid(self):
         """
         L{IAddressBook.createAddressBookObjectWithName} raises
@@ -630,17 +663,18 @@
         """
         self.assertRaises(
             InvalidObjectResourceError,
-            self.addressbookUnderTest().createAddressBookObjectWithName,
+            (yield self.addressbookUnderTest()).createAddressBookObjectWithName,
             "new", VComponent.fromString(vcard4notCardDAV_text)
         )
 
 
+    @inlineCallbacks
     def test_setComponent_invalid(self):
         """
         L{IAddressBookObject.setComponent} raises L{InvalidIAddressBookDataError} if
         presented with invalid iAddressBook text.
         """
-        addressbookObject = self.addressbookObjectUnderTest()
+        addressbookObject = (yield self.addressbookObjectUnderTest())
         self.assertRaises(
             InvalidObjectResourceError,
             addressbookObject.setComponent,
@@ -648,12 +682,13 @@
         )
 
 
+    @inlineCallbacks
     def test_setComponent_uidchanged(self):
         """
         L{IAddressBookObject.setComponent} raises L{InvalidAddressBookComponentError}
         when given a L{VComponent} whose UID does not match its existing UID.
         """
-        addressbook1 = self.addressbookUnderTest()
+        addressbook1 = yield self.addressbookUnderTest()
         component = VComponent.fromString(vcard4_text)
         addressbookObject = addressbook1.addressbookObjectWithName("1.vcf")
         self.assertRaises(
@@ -694,7 +729,7 @@
         """
         component = VComponent.fromString(vcard1modified_text)
 
-        addressbook1 = self.addressbookUnderTest()
+        addressbook1 = yield self.addressbookUnderTest()
         addressbookObject = addressbook1.addressbookObjectWithName("1.vcf")
         oldComponent = addressbookObject.component()
         self.assertNotEqual(component, oldComponent)
@@ -732,26 +767,29 @@
         self.checkPropertiesMethod(self.homeUnderTest())
 
 
+    @inlineCallbacks
     def test_addressbookProperties(self):
         """
         L{IAddressBook.properties} returns a property store.
         """
-        self.checkPropertiesMethod(self.addressbookUnderTest())
+        self.checkPropertiesMethod((yield self.addressbookUnderTest()))
 
 
+    @inlineCallbacks
     def test_addressbookObjectProperties(self):
         """
         L{IAddressBookObject.properties} returns a property store.
         """
-        self.checkPropertiesMethod(self.addressbookObjectUnderTest())
+        self.checkPropertiesMethod((yield self.addressbookObjectUnderTest()))
 
 
+    @inlineCallbacks
     def test_newAddressBookObjectProperties(self):
         """
         L{IAddressBookObject.properties} returns an empty property store for a
         addressbook object which has been created but not committed.
         """
-        addressbook = self.addressbookUnderTest()
+        addressbook = yield self.addressbookUnderTest()
         addressbook.createAddressBookObjectWithName(
             "4.vcf", VComponent.fromString(vcard4_text)
         )
@@ -773,15 +811,17 @@
         propertyContent.name = propertyName.name
         propertyContent.namespace = propertyName.namespace
 
-        self.addressbookObjectUnderTest().properties()[
+        (yield self.addressbookObjectUnderTest()).properties()[
             propertyName] = propertyContent
         yield self.commit()
         # Sanity check; are properties even readable in a separate transaction?
         # Should probably be a separate test.
         self.assertEquals(
-            self.addressbookObjectUnderTest().properties()[propertyName],
+            (yield self.addressbookObjectUnderTest()).properties()[
+                propertyName
+            ],
             propertyContent)
-        obj = self.addressbookObjectUnderTest()
+        obj = yield self.addressbookObjectUnderTest()
         vcard1_text = obj.vCardText()
         vcard1_text_withDifferentNote = vcard1_text.replace(
             "NOTE:CardDAV protocol updates",
@@ -796,11 +836,12 @@
         # caching that may take place.
         yield self.commit()
         self.assertEquals(
-            self.addressbookObjectUnderTest().properties()[propertyName],
+            (yield self.addressbookObjectUnderTest()).properties()[propertyName],
             propertyContent
         )
 
 
+    @inlineCallbacks
     def test_dontLeakAddressbooks(self):
         """
         Addressbooks in one user's addressbook home should not show up in another
@@ -808,7 +849,7 @@
         """
         home2 = self.transactionUnderTest().addressbookHomeWithUID(
             "home2", create=True)
-        self.assertIdentical(home2.addressbookWithName("addressbook_1"), None)
+        self.assertIdentical((yield home2.addressbookWithName("addressbook_1")), None)
 
 
     def test_dontLeakObjects(self):
@@ -819,9 +860,9 @@
         home1 = self.homeUnderTest()
         home2 = self.transactionUnderTest().addressbookHomeWithUID(
             "home2", create=True)
-        addressbook1 = home1.addressbookWithName("addressbook_1")
-        addressbook2 = home2.addressbookWithName("addressbook")
-        objects = list(home2.addressbookWithName("addressbook").addressbookObjects())
+        addressbook1 = yield home1.addressbookWithName("addressbook_1")
+        addressbook2 = yield home2.addressbookWithName("addressbook")
+        objects = list((yield (yield home2.addressbookWithName("addressbook")).addressbookObjects()))
         self.assertEquals(objects, [])
         for resourceName in self.requirements['home1']['addressbook_1'].keys():
             obj = addressbook1.addressbookObjectWithName(resourceName)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20100923/3a6129c1/attachment-0001.html>


More information about the calendarserver-changes mailing list