From 9e98bfd4f0e646b75fbc18016a4eed1325196cdd Mon Sep 17 00:00:00 2001 From: Sebastien Robin <seb@nexedi.com> Date: Mon, 9 Feb 2009 10:15:44 +0000 Subject: [PATCH] * getter on a undefined list property was not working properly any more, bug was introduced by revision 25485 * add unit test to prevent such regression git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@25498 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5Type/Base.py | 7 +++---- product/ERP5Type/tests/testERP5Type.py | 13 +++++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/product/ERP5Type/Base.py b/product/ERP5Type/Base.py index fc1ab326e7..baca7a3463 100644 --- a/product/ERP5Type/Base.py +++ b/product/ERP5Type/Base.py @@ -1378,10 +1378,9 @@ class Base( CopyContainer, if not isinstance(result, (list, tuple)): result = [result] return result - else: - if d is not _MARKER: - return ERP5PropertyManager.getProperty(self, key, d=d, **kw) - return ERP5PropertyManager.getProperty(self, key, **kw) + if d is not _MARKER: + return ERP5PropertyManager.getProperty(self, key, d=d, **kw) + return ERP5PropertyManager.getProperty(self, key, **kw) security.declareProtected( Permissions.AccessContentsInformation, 'getPropertyList' ) def getPropertyList(self, key, d=None): diff --git a/product/ERP5Type/tests/testERP5Type.py b/product/ERP5Type/tests/testERP5Type.py index e328391212..9c4752400d 100644 --- a/product/ERP5Type/tests/testERP5Type.py +++ b/product/ERP5Type/tests/testERP5Type.py @@ -2583,6 +2583,19 @@ class TestPropertySheet: person.setPropertyList('foo_bar', []) self.assertEquals(person.getFooBarList(), []) + def testUndefinedProperties(self): + """ + Make sure that getProperty and setProperty on a property not defined + in a propertysheet is working properly. + """ + person = self.getPersonModule().newContent(portal_type='Person') + self.assertEquals(person.getProperty('foo_bar'), None) + person.setProperty('foo_bar', 'foo') + self.assertEquals(person.getProperty('foo_bar'), 'foo') + self.assertEquals(person.getPropertyList('foo_bar_list'), None) + person.setProperty('foo_bar_list', ['foo', 'bar']) + self.assertEquals(list(person.getProperty('foo_bar_list')), ['foo', 'bar']) + class TestAccessControl(ERP5TypeTestCase): # Isolate test in a dedicaced class in order not to break other tests # when this one fails. -- 2.30.9