diff --git a/ChangeLog b/ChangeLog index 752192090..1cfc2103b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19,6 +19,14 @@ 2009-10-07 Wolfgang Sourdeau + * Tests/webdavlib.py (MailDAVMailQuery._initSort): we now accept + multiple sort parameters. + + * Tests/test-maildav.py (DAVMailCollectionTest._testSort): new + method to test sorting messages. + (DAVMailCollectionTest.testREPORTMailQuery): added some tests for + "SORT". + * SoObjects/SOGo/SOGoParentFolder.m (-hasLocalSubfolderNamed): rewritten parts of the method to better fit our coding standards. Exported method in the SOGoParentFolder.h to avoid warnings where diff --git a/Tests/test-maildav.py b/Tests/test-maildav.py index 984b2423b..72647fff3 100755 --- a/Tests/test-maildav.py +++ b/Tests/test-maildav.py @@ -36,7 +36,7 @@ User-Agent: Thunderbird 2.0.0.22 (Macintosh/20090605) References: <4AC3BF1B.3010806@inverse.ca> MIME-Version: 1.0 To: message1to@cyril.dev -CC: message1cc@cyril.dev, user10@cyril.dev +CC: 2message1cc@cyril.dev, user10@cyril.dev Subject: message1subject Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit @@ -60,7 +60,7 @@ User-Agent: Thunderbird 2.0.0.22 (Macintosh/20090605) MIME-Version: 1.0 From: Cyril To: message2to@cyril.dev -CC: message2cc@cyril.dev +CC: 3message2cc@cyril.dev Subject: message2subject Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit @@ -152,7 +152,7 @@ User-Agent: Thunderbird 2.0.0.22 (Macintosh/20090605) MIME-Version: 1.0 From: Cyril To: message3to@cyril.dev -CC: message3cc@cyril.dev +CC: 1message3cc@cyril.dev Subject: Hallo Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit @@ -330,6 +330,34 @@ class DAVMailCollectionTest(unittest.TestCase): "filter %s:\n\tunexpected amount of refs: %d" % (filter[0], received_count)) + def _testSort(self, sortOrder): + expected_hrefs = sortOrder[1] + expected_count = len(expected_hrefs) + + received_count = 0 + url = "%sfolder%s" % (self.resource, "test-dav-mail") + query = webdavlib.MailDAVMailQuery(url, ["displayname"], + None, sortOrder[0]) + self.client.execute(query) + self.assertEquals(query.response["status"], 207, + "sortOrder %s:\n\tunexpected status: %d" + % (sortOrder[0], query.response["status"])) + query.xpath_namespace = { "D": "DAV:", + "I": "urn:inverse:params:xml:ns:inverse-dav" } + response_nodes = query.xpath_evaluate("/D:multistatus/D:response") + for response_node in response_nodes: + href_node = query.xpath_evaluate("D:href", response_node)[0] + href = href_node.childNodes[0].nodeValue + received_count = received_count + 1 + self.assertEquals(expected_hrefs[received_count], href, + "sortOrder %s:\n\tunexpected href: %s (expecting: %s)" + % (sortOrder[0], href, + expected_hrefs[received_count])) + + self.assertEquals(expected_count, received_count, + "sortOrder %s:\n\tunexpected amount of refs: %d" + % (sortOrder[0], received_count)) + def testREPORTMailQuery(self): """mail-query""" self._deleteCollection("test-dav-mail") @@ -552,12 +580,32 @@ class DAVMailCollectionTest(unittest.TestCase): self._testFilters(filters) # 1. test sort: (receive-date) ARRIVAL + self._testSort(([ "{urn:schemas:mailheader:}received" ], + [ msg2Loc, msg3Loc, msg1Loc ])) + # 1. test sort: (date) DATE + self._testSort(([ "{urn:schemas:mailheader:}date" ], + [ msg1Loc, msg2Loc, msg3Loc ])) + # 1. test sort: CC + self._testSort(([ "{urn:schemas:mailheader:}cc" ], + [ msg3Loc, msg1Loc, msg2Loc ])) + # 1. test sort: FROM + self._testSort(([ "{urn:schemas:mailheader:}from" ], + [ msg1Loc, msg2Loc, msg3Loc ])) + # 1. test sort: SIZE + self._testSort(([ "{DAV:}getcontentlength" ], + [ msg3Loc, msg1Loc, msg2Loc ])) + # 1. test sort: SUBJECT + self._testSort(([ "{urn:schemas:mailheader:}displayName" ], + [ msg3Loc, msg1Loc, msg2Loc ])) + # 1. test sort: TO + self._testSort(([ "{urn:schemas:mailheader:}to" ], + [ msg1Loc, msg2Loc, msg3Loc ])) self._deleteCollection("test-dav-mail") @@ -581,7 +629,7 @@ class DAVMailCollectionTest(unittest.TestCase): ("{urn:schemas:httpmail:}textdescription", "" % message1, 0), ("{urn:schemas:httpmail:}unreadcount", None, 0), - ("{urn:schemas:mailheader:}cc","message1cc@cyril.dev, user10@cyril.dev", 0), + ("{urn:schemas:mailheader:}cc","2message1cc@cyril.dev, user10@cyril.dev", 0), ("{urn:schemas:mailheader:}date", "Mon, 28 Sep 2009 11:42:14 GMT", 0), ("{urn:schemas:mailheader:}from", "Cyril ", 0), ("{urn:schemas:mailheader:}in-reply-to", None, 0), diff --git a/Tests/webdavlib.py b/Tests/webdavlib.py index 5f5c7c834..78843ae2d 100644 --- a/Tests/webdavlib.py +++ b/Tests/webdavlib.py @@ -345,13 +345,10 @@ class MailDAVMailQuery(WebDAVREPORT): sort_tag = self.ns_mgr.register("sort", xmlns_inversedav) sort_node = _WD_XMLTreeElement(sort_tag) self.top_node.append(sort_node) - sort_subtag = self.ns_mgr.register(sort[0], xmlns_inversedav) - if len(sort) > 1: - attributes = sort[1] - else: - attributes = {} - sort_subnode = _WD_XMLTreeElement(sort_subtag, attributes) - sort_node.append(sort_subnode) + + for item in sort: + sort_subnode = _WD_XMLTreeElement(self.render_tag(item)) + sort_node.append(sort_subnode) # private classes to handle XML stuff class _WD_XMLNS_MGR: