[Checkins] SVN: zope.app.form/branches/3.12/ Improve truth testing for ItemDisplayWidget [LP:159232]
Christian Theune
ct at gocept.com
Sat Apr 24 06:13:53 EDT 2010
Log message for revision 111334:
Improve truth testing for ItemDisplayWidget [LP:159232]
Changed:
U zope.app.form/branches/3.12/CHANGES.txt
U zope.app.form/branches/3.12/src/zope/app/form/browser/itemswidgets.py
U zope.app.form/branches/3.12/src/zope/app/form/browser/tests/test_itemswidget.py
-=-
Modified: zope.app.form/branches/3.12/CHANGES.txt
===================================================================
--- zope.app.form/branches/3.12/CHANGES.txt 2010-04-24 08:31:25 UTC (rev 111333)
+++ zope.app.form/branches/3.12/CHANGES.txt 2010-04-24 10:13:52 UTC (rev 111334)
@@ -5,7 +5,7 @@
3.12.3 (unreleased)
===================
-- ...
+- Improve truth testing for ItemDisplayWidget [LP:159232]
3.12.2 (2010-02-21)
===================
Modified: zope.app.form/branches/3.12/src/zope/app/form/browser/itemswidgets.py
===================================================================
--- zope.app.form/branches/3.12/src/zope/app/form/browser/itemswidgets.py 2010-04-24 08:31:25 UTC (rev 111333)
+++ zope.app.form/branches/3.12/src/zope/app/form/browser/itemswidgets.py 2010-04-24 10:13:52 UTC (rev 111334)
@@ -232,7 +232,7 @@
def __call__(self):
"""See IBrowserWidget."""
value = self._getFormValue()
- if not value:
+ if value is None or value == u'':
return self.translate(self._messageNoValue)
else:
term = self.vocabulary.getTerm(value)
Modified: zope.app.form/branches/3.12/src/zope/app/form/browser/tests/test_itemswidget.py
===================================================================
--- zope.app.form/branches/3.12/src/zope/app/form/browser/tests/test_itemswidget.py 2010-04-24 08:31:25 UTC (rev 111333)
+++ zope.app.form/branches/3.12/src/zope/app/form/browser/tests/test_itemswidget.py 2010-04-24 10:13:52 UTC (rev 111334)
@@ -136,6 +136,39 @@
self.failIf(self._makeWidget().required)
+containerVocab = SimpleVocabulary(
+ [SimpleTerm(value, token, title) for value, token, title in (
+ ((), 'container1', 'Container One'),
+ ((1,), 'container2', 'Container Two'),
+ ((2,), 'container3', 'Container Three'))])
+
+class ITestContainer(Interface):
+ container = Choice(
+ title=u"Container",
+ description=u"The container",
+ vocabulary=containerVocab,
+ required=True)
+
+class TestContainer(object):
+ implements(ITestContainer)
+
+ def __init__(self, container=None):
+ self.container = container
+
+class ContainerItemDisplayWidgetTest(VerifyResults,
+ PlacelessSetup,
+ unittest.TestCase):
+ def test_handle_empty_containers(self):
+ # Regression test for bug 159232"""
+ field = ITestContainer.get('container')
+
+ request = TestRequest(form={'field.container': 'container1'})
+ container = TestContainer()
+ bound = field.bind(container)
+ widget = ItemDisplayWidget(bound, field.vocabulary, request)
+
+ self.assertEqual(widget(), 'Container One')
+
class ItemsMultiDisplayWidgetTest(ItemsWidgetBaseTest):
_widget = ItemsMultiDisplayWidget
@@ -578,6 +611,7 @@
def test_suite():
suite = unittest.makeSuite(ItemDisplayWidgetTest)
+ suite.addTest(unittest.makeSuite(ContainerItemDisplayWidgetTest))
suite.addTest(unittest.makeSuite(ItemsMultiDisplayWidgetTest))
suite.addTest(unittest.makeSuite(ListDisplayWidgetTest))
suite.addTest(unittest.makeSuite(SetDisplayWidgetTest))
More information about the checkins
mailing list