From 9ce190abb86791b6e114376772fc8fabc59cbca2 Mon Sep 17 00:00:00 2001 From: Sebastien Robin <seb@nexedi.com> Date: Wed, 6 Sep 2006 17:01:12 +0000 Subject: [PATCH] make sure that if we give a list of object to update, then we will not erase other objects git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@9723 20353a03-c40f-0410-a6d1-a30d3c3de9de --- product/ERP5/Document/BusinessTemplate.py | 6 +- product/ERP5/tests/testBusinessTemplate.py | 104 +++++++++++++++++++++ 2 files changed, 109 insertions(+), 1 deletion(-) diff --git a/product/ERP5/Document/BusinessTemplate.py b/product/ERP5/Document/BusinessTemplate.py index 6a49bd4760..ec37a609ca 100644 --- a/product/ERP5/Document/BusinessTemplate.py +++ b/product/ERP5/Document/BusinessTemplate.py @@ -3943,11 +3943,15 @@ Business Template is a set of definitions, such as skins, portal types and categ return modified_object_list - def _install(self, force=1, object_to_update={}, **kw): + def _install(self, force=1, object_to_update=None, **kw): """ Install a new Business Template, if force, all will be upgraded or installed otherwise depends of dict object_to_update """ + if object_to_update is not None: + force=0 + else: + object_to_update = {} installed_bt = self.portal_templates.getInstalledBusinessTemplate( self.getTitle()) diff --git a/product/ERP5/tests/testBusinessTemplate.py b/product/ERP5/tests/testBusinessTemplate.py index c66204c6df..190f06a7d3 100644 --- a/product/ERP5/tests/testBusinessTemplate.py +++ b/product/ERP5/tests/testBusinessTemplate.py @@ -972,6 +972,46 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): catalog.filter_dict[method_id]['expression_instance'] = expr_instance catalog.filter_dict[method_id]['type'] = [] + def stepCreateNewCatalogMethod(self, sequence=None, sequence_list=None, **kw): + """ + Create ZSQL Method into catalog + """ + pc = self.getCatalogTool() + catalog = pc._getOb('erp5_mysql', None) + method_id = "z_another_fake_method" + addSQLMethod =catalog.manage_addProduct['ZSQLMethods'].manage_addZSQLMethod + addSQLMethod(id=method_id,title='', connection_id='test test', arguments='', template='') + zsql_method = catalog._getOb(method_id, None) + self.failUnless(zsql_method is not None) + sequence.edit(another_zsql_method_id = method_id) + # set this method in update_object properties of catalog + sql_uncatalog_object = list(catalog.sql_uncatalog_object) + sql_uncatalog_object.append(method_id) + sql_uncatalog_object.sort() + catalog.sql_uncatalog_object = tuple(sql_uncatalog_object) + + def stepChangePreviousCatalogMethod(self, sequence=None, sequence_list=None, **kw): + """ + Create ZSQL Method into catalog + """ + pc = self.getCatalogTool() + catalog = pc._getOb('erp5_mysql', None) + method_id = sequence.get('zsql_method_id') + previous_method = catalog._getOb(method_id,None) + self.assertEquals(previous_method.title,'') + previous_method.title='toto' + self.assertEquals(previous_method.title,'toto') + + def stepCheckCatalogMethodChangeKept(self, sequence=None, sequence_list=None, **kw): + """ + Create ZSQL Method into catalog + """ + pc = self.getCatalogTool() + catalog = pc._getOb('erp5_mysql', None) + method_id = sequence.get('zsql_method_id') + previous_method = catalog._getOb(method_id,None) + self.assertEquals(previous_method.title,'toto') + def stepAddCatalogMethodToBusinessTemplate(self, sequence=None, sequence_list=None, **kw): """ Add catalog method into the business template @@ -982,6 +1022,18 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): self.failUnless(method_id is not None) bt.edit(template_catalog_method_id_list=['erp5_mysql/'+method_id]) + def stepAddNewCatalogMethodToBusinessTemplate(self, sequence=None, sequence_list=None, **kw): + """ + Add catalog method into the business template + """ + bt = sequence.get('current_bt', None) + self.failUnless(bt is not None) + method_id = sequence.get('zsql_method_id', None) + self.failUnless(method_id is not None) + another_method_id = sequence.get('another_zsql_method_id', None) + bt.edit(template_catalog_method_id_list=['erp5_mysql/'+method_id, + 'erp5_mysql/'+another_method_id]) + def stepCheckCatalogMethodExists(self, sequence=None, sequence_list=None, **kw): """ Check presence of ZSQL Method in catalog @@ -1559,6 +1611,14 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): import_bt = sequence.get('import_bt') import_bt.install(force=1) + def stepPartialCatalogMethodInstall(self, sequence=None, sequence_list=None, **kw): + """ + Install importzed business template + """ + import_bt = sequence.get('import_bt') + object_to_update = {'portal_catalog/erp5_mysql/z_another_fake_method':'install'} + import_bt.install(object_to_update=object_to_update) + def stepCreateNewBusinessTemplate(self, sequence=None, sequence_list=None, **kw): """ Create a new Business Template @@ -3264,6 +3324,50 @@ class TestBusinessTemplate(ERP5TypeTestCase, LogInterceptor): ' sequence_list.addSequenceString(sequence_string) sequence_list.play(self, quiet=quiet) + + def test_31_BusinessTemplateWithCatalogMethod(self, quiet=quiet, run=run_all_test): + if not run: return + if not quiet: + message = 'Test that we keep local changes if we specify a list of objects to update' + ZopeTestCase._print('\n%s ' % message) + LOG('Testing... ', 0, message) + sequence_list = SequenceList() + sequence_string = '\ + CreateCatalogMethod \ + CreateKeysAndTable \ + CreateNewBusinessTemplate \ + UseExportBusinessTemplate \ + AddCatalogMethodToBusinessTemplate \ + AddKeysAndTableToBusinessTemplate \ + BuildBusinessTemplate \ + SaveBusinessTemplate \ + RemoveCatalogMethod \ + RemoveKeysAndTable \ + RemoveBusinessTemplate \ + RemoveAllTrashBins \ + ImportBusinessTemplate \ + UseImportBusinessTemplate \ + InstallBusinessTemplate \ + Tic \ + CreateNewCatalogMethod \ + CreateKeysAndTable \ + CreateNewBusinessTemplate \ + UseExportBusinessTemplate \ + AddNewCatalogMethodToBusinessTemplate \ + CheckCatalogMethodExists \ + AddKeysAndTableToBusinessTemplate \ + BuildBusinessTemplate \ + SaveBusinessTemplate \ + ChangePreviousCatalogMethod \ + ImportBusinessTemplate \ + UseImportBusinessTemplate \ + PartialCatalogMethodInstall \ + CheckCatalogMethodChangeKept \ + Tic \ + ' + sequence_list.addSequenceString(sequence_string) + sequence_list.play(self, quiet=quiet) + if __name__ == '__main__': framework() else: -- 2.30.9