[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/ View uses getContent() and test_handle_change now works.
Charlie Clark
charlie at begeistert.org
Thu Sep 29 05:11:25 EST 2011
Log message for revision 122997:
View uses getContent() and test_handle_change now works.
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/syndication.py
U Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/syndication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/syndication.py 2011-09-29 09:05:39 UTC (rev 122996)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/syndication.py 2011-09-29 10:11:25 UTC (rev 122997)
@@ -125,17 +125,25 @@
def syndtool(self):
return getUtility(ISyndicationTool)
+ @property
@memoize
def enabled(self, action=None):
return self.syndtool.isAllowed
+ @property
@memoize
def disabled(self, action=None):
return not self.syndtool.isAllowed
+ @memoize
+ def getContent(self):
+ syndtool = getUtility(ISyndicationTool)
+ return SyndicationToolSchemaAdapter(syndtool)
+
def setUpWidgets(self, ignore_request=False):
+ self.adapters = {}
fields = self.form_fields
- if self.disabled():
+ if self.disabled:
fields = form.FormFields()
super(Site, self).setUpWidgets(ignore_request)
@@ -229,7 +237,6 @@
def handle_change(self, action, data):
self._handle_success(action, data)
- #self.adapter.set_info(**data)
self.status = _(u"Syndication settings changed.")
self._setRedirect("portal_actions", "object/syndication")
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py 2011-09-29 09:05:39 UTC (rev 122996)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/admin/tests/test_syndication.py 2011-09-29 10:11:25 UTC (rev 122997)
@@ -16,12 +16,14 @@
import unittest
from zope.component import getSiteManager
+from zope.interface import implements
from zope.i18n.interfaces import IUserPreferredCharsets
from zope.interface import alsoProvides
from zope.testing.cleanup import cleanUp
from Products.CMFCore.interfaces import IActionsTool
from Products.CMFCore.interfaces import IFolderish
+from Products.CMFCore.interfaces import IPropertiesTool
from Products.CMFCore.interfaces import IMembershipTool
from Products.CMFCore.interfaces import ISyndicationInfo
from Products.CMFCore.interfaces import ISyndicationTool
@@ -40,6 +42,9 @@
syUpdateBase = updateBase = ""
max_items = 15
+ def getProperty(self, key, default):
+ return getattr(self, key, default)
+
def editProperties(self, **kw):
for k, v in kw.items():
setattr(self, k, v)
@@ -47,24 +52,39 @@
def isSiteSyndicationAllowed(self):
return self.isAllowed
+ def hasProperty(self, key):
+ return getattr(self, key)
+ def _updateProperty(self, key, value):
+ setattr(self, key, value)
+
+
class DummySyndicationAdapter(object):
def __init__(self, context):
self.context = context
+class DummyPropertiesTool(DummyTool):
+
+ def getProperty(self, key, default):
+ return getattr(self, key, default)
+
+
class SyndicationViewTests(unittest.TestCase):
def setUp(self):
"""Setup a site"""
self.site = DummySite('site')
+ alsoProvides(self.site, IPropertiesTool)
sm = getSiteManager()
sm.registerUtility(DummySyndicationTool(), ISyndicationTool)
sm.registerUtility(DummyTool(), IActionsTool)
sm.registerUtility(DummyTool(), IMembershipTool)
sm.registerUtility(DummyTool().__of__(self.site), IURLTool)
- sm.registerAdapter(DummySyndicationAdapter, (IFolderish, ), ISyndicationInfo)
+ sm.registerUtility(DummyPropertiesTool(), IPropertiesTool)
+ from Products.CMFDefault.browser.admin.syndication import ISyndicationSchema
+ sm.registerAdapter(self._getTargetAdapter(), (IFolderish, ), ISyndicationSchema)
def tearDown(self):
cleanUp()
@@ -75,40 +95,47 @@
alsoProvides(request, IUserPreferredCharsets)
return Site(self.site, request)
+ def _getTargetAdapter(self):
+ from Products.CMFDefault.browser.admin.syndication import SyndicationToolSchemaAdapter
+ return SyndicationToolSchemaAdapter
+
def test_enabled(self):
view = self._getTargetClass()
- self.assertFalse(view.enabled())
+ self.assertFalse(view.enabled)
def test_disabled(self):
view = self._getTargetClass()
- self.assertTrue(view.disabled())
+ self.assertTrue(view.disabled)
def test_handle_enable(self):
view = self._getTargetClass()
view.handle_enable("enable", {})
- self.assertTrue(view.enabled())
+ self.assertTrue(view.enabled)
self.assertEqual(view.status, u"Syndication enabled.")
self.assertEqual(view.request.RESPONSE.location,
"http://www.foobar.com/bar/site?portal_status_message="
"Syndication%20enabled.")
- #def test_handle_change(self):
- #view = self._getTargetClass()
- #self.assertEqual(view.syndtool.updatePeriod, 'daily')
- #self.assertEqual(view.syndtool.updateFrequency, 1)
- #self.assertEqual(view.syndtool.updateBase, "")
- #self.assertEqual(view.syndtool.max_items, 15)
- #data = {'frequency':3, 'period':'weekly', 'base':'active',
- #'max_items':10}
- #view.handle_change("change", data)
- #self.assertEqual(view.syndtool.updatePeriod, 'weekly')
- #self.assertEqual(view.syndtool.updateFrequency, 3)
- #self.assertEqual(view.syndtool.updateBase, "active")
- #self.assertEqual(view.syndtool.max_items, 10)
- #self.assertEqual(view.status, u"Syndication settings changed.")
- #self.assertEqual(view.request.RESPONSE.location,
- #"http://www.foobar.com/bar/site?portal_status_message="
- #"Syndication%20settings%20changed.")
+ def test_handle_change(self):
+ import datetime
+ today = datetime.datetime.now()
+ view = self._getTargetClass()
+ view.adapters = {DummySyndicationAdapter: ISyndicationInfo}
+ self.assertEqual(view.getContent().period, 'daily')
+ self.assertEqual(view.getContent().frequency, 1)
+ self.assertEqual(view.getContent().base, "")
+ self.assertEqual(view.getContent().max_items, 15)
+ data = {'frequency':3, 'period':'weekly', 'base':today,
+ 'max_items':10}
+ view.handle_change("change", data)
+ self.assertEqual(view.getContent().period, 'weekly')
+ self.assertEqual(view.getContent().frequency, 3)
+ self.assertEqual(view.getContent().base, today)
+ self.assertEqual(view.getContent().max_items, 10)
+ self.assertEqual(view.status, u"Syndication settings changed.")
+ self.assertEqual(view.request.RESPONSE.location,
+ "http://www.foobar.com/bar/site?portal_status_message="
+ "Syndication%20settings%20changed.")
def test_handle_disable(self):
view = self._getTargetClass()
More information about the checkins
mailing list