def test_unproxify(self): #Proxify First self.address_view.proxifyField( {'my_region': 'Base_view.my_list_field'}) self.person_view.proxifyField( {'my_default_region': 'Address_view.my_region'}) field_value_cache.clear() #UnProxify self.person_view.unProxifyField({'my_default_region': 'on'}) field = self.person_view.my_default_region self.assertEqual(field.meta_type, 'ListField') self.assertEqual(field.get_value('title'), 'Country') self.assertEqual( field.get_tales('items')._text, 'here/portal_categories/region/getCategoryChildTranslatedLogicalPathItemList' ) #Test unproxify with old instance. #Proxify First self.person_view.proxifyField({ 'my_career_subordination_title': 'Base_view.my_relation_string_field' }) field_value_cache.clear() #UnProxify self.person_view.unProxifyField( {'my_career_subordination_title': 'on'}) field = self.person_view.my_career_subordination_title self.assertEqual(field.meta_type, 'RelationStringField') self.assertEqual(field.get_value('title'), 'Organisation') self.assertEqual(field.get_value('proxy_listbox_ids'), [ ('OrganisationModule_viewOrganisationList/listbox', 'Organisation') ]) self.assertFalse(field.checkConsistency())
def test_datetime_field(self): field_value_cache.clear() # make sure that boundmethod must not be cached. year_field = self.root.form.datetime_field.sub_form.get_field('year', include_disabled=1) self.assertEqual(True, type(year_field.overrides['items']) is BoundMethod) cache_size = len(field_value_cache) year_field.get_value('items') # See Formulator/StandardFields.py(line:174) # there are two get_value, start_datetime and end_datetime cache_size += 2 # make sure that boundmethod is not cached(cache size does not change) self.assertEqual(True, ('Form.get_value', self.root.form.datetime_field._p_oid, self.root.form.datetime_field._p_oid, 'start_datetime' ) in field_value_cache) self.assertEqual(True, ('Form.get_value', self.root.form.datetime_field._p_oid, self.root.form.datetime_field._p_oid, 'end_datetime' ) in field_value_cache) self.assertEqual(False, ('Form.get_value', year_field._p_oid, year_field._p_oid, 'items' ) in field_value_cache) self.assertEqual(cache_size, len(field_value_cache)) year_field.get_value('size') year_field.get_value('default') self.assertEqual(cache_size+2, len(field_value_cache))
def purgeFieldValueCache(self, method_call_object): """ Interaction method (defined at the Interactor level). Make sure all field value caches are purged """ from Products.ERP5Form.Form import field_value_cache field_value_cache.clear()
def test_datetime_field(self): field_value_cache.clear() # make sure that boundmethod must not be cached. year_field = self.root.form.datetime_field.sub_form.get_field( 'year', include_disabled=1) self.assertEqual(True, type(year_field.overrides['items']) is BoundMethod) cache_size = len(field_value_cache) year_field.get_value('items') # See Formulator/StandardFields.py(line:174) # there are two get_value, start_datetime and end_datetime cache_size += 2 # make sure that boundmethod is not cached(cache size does not change) self.assertEqual(True, ('Form.get_value', self.root.form.datetime_field._p_oid, self.root.form.datetime_field._p_oid, 'start_datetime') in field_value_cache) self.assertEqual(True, ('Form.get_value', self.root.form.datetime_field._p_oid, self.root.form.datetime_field._p_oid, 'end_datetime') in field_value_cache) self.assertEqual(False, ('Form.get_value', year_field._p_oid, year_field._p_oid, 'items') in field_value_cache) self.assertEqual(cache_size, len(field_value_cache)) year_field.get_value('size') year_field.get_value('default') self.assertEqual(cache_size + 2, len(field_value_cache))
def test_multi_level_proxify(self): self.address_view.proxifyField({'my_region':'Base_view.my_list_field'}) self.person_view.proxifyField({'my_default_region':'Address_view.my_region'}) field = self.person_view.my_default_region self.assertEqual(field.meta_type, 'ProxyField') self.assertEqual(field.get_value('form_id'), 'Address_view') self.assertEqual(field.get_value('field_id'), 'my_region') self.assertEqual(field.getTemplateField().getId(), 'my_region') self.assertEqual(field.getRecursiveTemplateField().getId(), 'my_list_field') self.assertEqual(field.is_delegated('title'), True) self.assertEqual(field.get_value('title'), 'Country') self.assertEqual(field.is_delegated('size'), True) self.assertEqual(field.get_value('size'), 1) self.assertEqual(field.is_delegated('items'), False) self.assertEqual(field.get_tales('items')._text, 'here/portal_categories/region/getCategoryChildTranslatedLogicalPathItemList') self.assertEqual(field.is_delegated('enabled'), True) self.assertEqual(field.get_value('enabled'), 1) self.assertEqual(field.is_delegated('description'), True) self.assertEqual(field.get_value('description'), '') self.assertEqual(field.has_value('scrap_variable'), 0) field_value_cache.clear() # must purge cache before changing internal field value. template_field = self.address_view.my_region template_field.values['title'] = 'Region' self.assertEqual(field.get_value('title'), 'Region')
def test_multi_level_proxify(self): self.address_view.proxifyField({'my_region':'Base_view.my_list_field'}) self.person_view.proxifyField({'my_default_region':'Address_view.my_region'}) field = self.person_view.my_default_region self.assertEqual(field.meta_type, 'ProxyField') self.assertEqual(field.get_value('form_id'), 'Address_view') self.assertEqual(field.get_value('field_id'), 'my_region') self.assertEqual(field.getTemplateField().getId(), 'my_region') self.assertEqual(field.getRecursiveTemplateField().getId(), 'my_list_field') self.assertEqual(field.is_delegated('title'), True) self.assertEqual(field.get_value('title'), 'Country') self.assertEqual(field.is_delegated('size'), True) self.assertEqual(field.get_value('size'), 1) self.assertEqual(field.is_delegated('items'), False) self.assertEqual(field.get_tales('items')._text, 'here/portal_categories/region/getCategoryChildTranslatedLogicalPathItemList') self.assertEqual(field.is_delegated('enabled'), True) self.assertEqual(field.get_value('enabled'), 1) self.assertEqual(field.is_delegated('description'), True) self.assertEqual(field.get_value('description'), '') self.assertEqual(field.has_value('scrap_variable'), 0) field_value_cache.clear() # must purge cache before changing internal field value. template_field = self.address_view.my_region template_field.values['title'] = 'Region' self.assertEqual(field.get_value('title'), 'Region')
def purgeFieldValueCache(self, method_call_object): """ Interaction method (defined at the Interactor level). Make sure all field value caches are purged """ from Products.ERP5Form.Form import field_value_cache field_value_cache.clear()
def test_format_precision(self): self.field.values["precision"] = 0 self.assertEqual("12", self.widget.format_value(self.field, 12.34)) # value is rounded self.assertEqual("13", self.widget.format_value(self.field, 12.9)) field_value_cache.clear() # call this before changing internal field values. self.field.values["precision"] = 2 self.assertEqual("0.01", self.widget.format_value(self.field, 0.011)) # value is rounded self.assertEqual("0.01", self.widget.format_value(self.field, 0.009999)) self.assertEqual("1.00", self.widget.format_value(self.field, sum([0.1] * 10))) self.assertEqual("566.30", self.widget.format_value(self.field, 281.80 + 54.50 + 230.00))
def test_format_precision(self): self.field.values['precision'] = 0 self.assertEquals('12', self.widget.format_value(self.field, 12.34)) # value is rounded self.assertEquals('13', self.widget.format_value(self.field, 12.9)) field_value_cache.clear() # call this before changing internal field values. self.field.values['precision'] = 2 self.assertEquals('0.01', self.widget.format_value(self.field, 0.011)) # value is rounded self.assertEquals('0.01', self.widget.format_value(self.field, 0.009999)) self.assertEquals('1.00', self.widget.format_value(self.field, sum([0.1] * 10))) self.assertEquals('566.30', self.widget.format_value(self.field, 281.80 + 54.50 + 230.00))
def test_format_precision(self): self.field.values['precision'] = 0 self.assertEqual('12', self.widget.format_value(self.field, 12.34)) # value is rounded self.assertEqual('13', self.widget.format_value(self.field, 12.9)) field_value_cache.clear() # call this before changing internal field values. self.field.values['precision'] = 2 self.assertEqual('0.01', self.widget.format_value(self.field, 0.011)) # value is rounded self.assertEqual('0.01', self.widget.format_value(self.field, 0.009999)) self.assertEqual('1.00', self.widget.format_value(self.field, sum([0.1] * 10))) self.assertEqual('566.30', self.widget.format_value(self.field, 281.80 + 54.50 + 230.00))
def test_datetime_field(self): field_value_cache.clear() # make sure that boundmethod must not be cached. year_field = self.root.form.datetime_field.sub_form.get_field("year", include_disabled=1) self.assertEqual(True, type(year_field.overrides["items"]) is BoundMethod) cache_size = len(field_value_cache) year_field.get_value("items") # See Formulator/StandardFields.py(line:174) # there are two get_value, start_datetime and end_datetime cache_size += 2 # make sure that boundmethod is not cached(cache size does not change) self.assertEqual( True, ( "Form.get_value", self.root.form.datetime_field._p_oid, self.root.form.datetime_field._p_oid, "start_datetime", ) in field_value_cache, ) self.assertEqual( True, ( "Form.get_value", self.root.form.datetime_field._p_oid, self.root.form.datetime_field._p_oid, "end_datetime", ) in field_value_cache, ) self.assertEqual(False, ("Form.get_value", year_field._p_oid, year_field._p_oid, "items") in field_value_cache) self.assertEqual(cache_size, len(field_value_cache)) year_field.get_value("size") year_field.get_value("default") self.assertEqual(cache_size + 2, len(field_value_cache))
def test_single_level_proxify(self): # StringField self.person_view.proxifyField({'my_name':'Base_view.my_string_field'}) field = self.person_view.my_name self.assertEqual(field.meta_type, 'ProxyField') self.assertEqual(field.get_value('form_id'), 'Base_view') self.assertEqual(field.get_value('field_id'), 'my_string_field') self.assertEqual(field.is_delegated('title'), False) self.assertEqual(field.get_value('title'), 'Name') self.assertEqual(field.is_delegated('display_maxwidth'), False) self.assertEqual(field.get_value('display_maxwidth'), 20) self.assertEqual(field.is_delegated('enabled'), True) self.assertEqual(field.get_value('enabled'), 1) self.assertEqual(field.is_delegated('description'), True) self.assertEqual(field.get_value('description'), '') field_value_cache.clear() # must purge cache before changing internal field value. template_field = self.base_view.my_string_field template_field.values['description'] = 'Description' self.assertEqual(field.get_value('description'), 'Description') field_value_cache.clear() # ListField self.person_view.manage_addField('my_gender', 'Gender', 'ListField') self.person_view.proxifyField({'my_gender':'Base_view.my_gender'}) field = self.person_view.my_gender self.assertEqual(field.is_delegated('title'), True) self.assertEqual(field.get_value('title'), 'Gender') self.assertEqual(field.is_delegated('items'), True) self.assertEqual(field.get_value('items'), [('Male', 'Male'), ('Female', 'Female')]) field_value_cache.clear()
def test_single_level_proxify(self): # StringField self.person_view.proxifyField({'my_name':'Base_view.my_string_field'}) field = self.person_view.my_name self.assertEqual(field.meta_type, 'ProxyField') self.assertEqual(field.get_value('form_id'), 'Base_view') self.assertEqual(field.get_value('field_id'), 'my_string_field') self.assertEqual(field.is_delegated('title'), False) self.assertEqual(field.get_value('title'), 'Name') self.assertEqual(field.is_delegated('display_maxwidth'), False) self.assertEqual(field.get_value('display_maxwidth'), 20) self.assertEqual(field.is_delegated('enabled'), True) self.assertEqual(field.get_value('enabled'), 1) self.assertEqual(field.is_delegated('description'), True) self.assertEqual(field.get_value('description'), '') field_value_cache.clear() # must purge cache before changing internal field value. template_field = self.base_view.my_string_field template_field.values['description'] = 'Description' self.assertEqual(field.get_value('description'), 'Description') field_value_cache.clear() # ListField self.person_view.manage_addField('my_gender', 'Gender', 'ListField') self.person_view.proxifyField({'my_gender':'Base_view.my_gender'}) field = self.person_view.my_gender self.assertEqual(field.is_delegated('title'), True) self.assertEqual(field.get_value('title'), 'Gender') self.assertEqual(field.is_delegated('items'), True) self.assertEqual(field.get_value('items'), [('Male', 'Male'), ('Female', 'Female')]) field_value_cache.clear()
def test_unproxify(self): #Proxify First self.address_view.proxifyField({'my_region':'Base_view.my_list_field'}) self.person_view.proxifyField({'my_default_region':'Address_view.my_region'}) field_value_cache.clear() #UnProxify self.person_view.unProxifyField({'my_default_region':'on'}) field = self.person_view.my_default_region self.assertEqual(field.meta_type, 'ListField') self.assertEqual(field.get_value('title'), 'Country') self.assertEqual(field.get_tales('items')._text, 'here/portal_categories/region/getCategoryChildTranslatedLogicalPathItemList') #Test unproxify with old instance. #Proxify First self.person_view.proxifyField({'my_career_subordination_title':'Base_view.my_relation_string_field'}) field_value_cache.clear() #UnProxify self.person_view.unProxifyField({'my_career_subordination_title':'on'}) field = self.person_view.my_career_subordination_title self.assertEqual(field.meta_type, 'RelationStringField') self.assertEqual(field.get_value('title'), 'Organisation') self.assertEqual(field.get_value('proxy_listbox_ids'), [('OrganisationModule_viewOrganisationList/listbox', 'Organisation')])