Monotone-Parent: 9485d114a246f06ae3df1b188de52f46783459ec

Monotone-Revision: d0eac9f630a7bec45962ad611bb2025a0a264075

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2009-10-07T22:34:24
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Wolfgang Sourdeau 2009-10-07 22:34:24 +00:00
parent c31e3f9d24
commit 08a60d5746
3 changed files with 64 additions and 11 deletions

View File

@ -19,6 +19,14 @@
2009-10-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* 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

View File

@ -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 <message2from@cyril.dev>
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 <message3from@cyril.dev>
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",
"<![CDATA[%s]]>" % 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 <message1from@cyril.dev>", 0),
("{urn:schemas:mailheader:}in-reply-to", None, 0),

View File

@ -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: