[CalendarServer-changes] [2296]
CalendarServer/branches/propfind-cache/twistedcaldav/test/
test_static.py
source_changes at macosforge.org
source_changes at macosforge.org
Thu Apr 10 11:35:29 PDT 2008
Revision: 2296
http://trac.macosforge.org/projects/calendarserver/changeset/2296
Author: dreid at apple.com
Date: 2008-04-10 11:35:28 -0700 (Thu, 10 Apr 2008)
Log Message:
-----------
Tests for CalendarHomeFile.changed method
Added Paths:
-----------
CalendarServer/branches/propfind-cache/twistedcaldav/test/test_static.py
Added: CalendarServer/branches/propfind-cache/twistedcaldav/test/test_static.py
===================================================================
--- CalendarServer/branches/propfind-cache/twistedcaldav/test/test_static.py (rev 0)
+++ CalendarServer/branches/propfind-cache/twistedcaldav/test/test_static.py 2008-04-10 18:35:28 UTC (rev 2296)
@@ -0,0 +1,112 @@
+##
+# Copyright (c) 2008 Apple Inc. All rights reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+##
+
+"""
+Unittests for CalDAV-aware static resources found in twistedcaldav.static
+"""
+from new import instancemethod
+
+from twisted.trial.unittest import TestCase
+from twistedcaldav.test.test_resource import StubLocatingRequest
+from twistedcaldav.test.test_resource import StubParentResource
+
+from twistedcaldav.static import CalendarHomeFile
+from twistedcaldav.static import CacheTokensProperty
+from twisted.web2.http import HTTPError, StatusResponse
+
+class InMemoryPropertyStore(object):
+ def __init__(self, resource):
+ self.resource = resource
+ self._properties = {}
+
+ def get(self, qname):
+ data = self._properties.get(qname)
+ if data is None:
+ raise HTTPError(StatusResponse(404, "No such property"))
+ return data
+
+ def set(self, property):
+ self._properties[property.qname()] = property
+
+
+def _newCacheTokenStub(self, property=False, data=False):
+ if not hasattr(self, '_called'):
+ self._called = [0,0]
+
+ if property:
+ token = 'propertyToken%d' % (self._called[0],)
+ self._called[0] += 1
+ elif data:
+ token = 'dataToken%d' % (self._called[1],)
+ self._called[1] += 1
+
+ return token
+
+
+class CalendarHomeChangedTests(TestCase):
+ def setUp(self):
+ self.parent = StubParentResource()
+ self.parent.principalCollections = (lambda: [])
+ self.request = StubLocatingRequest({'/calendars/users/': self.parent})
+
+ self.myCalendarHome = CalendarHomeFile(self.mktemp(),
+ self.parent,
+ object())
+ self.properties = InMemoryPropertyStore(self.myCalendarHome)
+ self.myCalendarHome._dead_properties = self.properties
+ self.properties._properties[CacheTokensProperty.qname()] = (
+ CacheTokensProperty.fromString('propertyToken0:dataToken0'))
+
+ self.myCalendarHome._newCacheToken = instancemethod(
+ _newCacheTokenStub,
+ self.myCalendarHome,
+ CalendarHomeFile)
+ self.myCalendarHome._newCacheToken(property=True)
+ self.myCalendarHome._newCacheToken(data=True)
+
+
+ def test_doesntPropogateToParent(self):
+ self.myCalendarHome.changed(self.request, '/calendars/users/dreid')
+ self.assertEquals(self.parent.changedArgs, None)
+ self.assertEquals(self.parent.changedKwArgs, None)
+
+
+ def _test(self, properties=False, data=False, expectedTokens=None):
+ self.myCalendarHome.changed(self.request, '/calendars/users/dreid',
+ properties=properties, data=data)
+
+ tokens = self.properties._properties[CacheTokensProperty.qname()]
+ self.assertEquals(tokens.children[0].data, expectedTokens)
+
+
+ def test_changesPropertyToken(self):
+ self._test(properties=True, expectedTokens='propertyToken1:dataToken0')
+
+
+ def test_changesDataToken(self):
+ self._test(data=True, expectedTokens='propertyToken0:dataToken1')
+
+
+ def test_changesBothTokens(self):
+ self._test(properties=True, data=True,
+ expectedTokens='propertyToken1:dataToken1')
+
+
+ def test_initializesNonExistantProperty(self):
+ self.properties._properties = {}
+ self.myCalendarHome._called = [0,0]
+ self._test(properties=False, data=False,
+ expectedTokens='propertyToken0:dataToken0')
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20080410/178dfdd0/attachment.html
More information about the calendarserver-changes
mailing list