Commit e8da7994 authored by Ayush Tiwari's avatar Ayush Tiwari

bt5_prototype: Update live tests for BP to use property template item also

parent cf896b1b
...@@ -81,12 +81,15 @@ class TestBusinessPackage(ERP5TypeTestCase): ...@@ -81,12 +81,15 @@ class TestBusinessPackage(ERP5TypeTestCase):
except AttributeError: except AttributeError:
pass pass
def _createBusinessPackage(self): def _createBusinessPackage(self, bp_id=None, title=None):
new_id = 'package_%s'%str(time.time()) if not bp_id:
package = self.portal.portal_templates.newContent(id=new_id, portal_type='Business Package') bp_id = 'package_%s'%str(time.time())
if not title:
title = bp_id
package = self.portal.portal_templates.newContent(id=bp_id, portal_type='Business Package')
#self.assertTrue(package.getBuildingState() == 'draft') #self.assertTrue(package.getBuildingState() == 'draft')
#self.assertTrue(package.getInstallationState() == 'not_installed') #self.assertTrue(package.getInstallationState() == 'not_installed')
package.edit(title = new_id, package.edit(title = bp_id,
version='1.0', version='1.0',
description='package for live test') description='package for live test')
self.tic() self.tic()
...@@ -95,10 +98,8 @@ class TestBusinessPackage(ERP5TypeTestCase): ...@@ -95,10 +98,8 @@ class TestBusinessPackage(ERP5TypeTestCase):
def _buildAndExportBusinessPackage(self, package): def _buildAndExportBusinessPackage(self, package):
""" """
Builds and exports Business Package to a given export directory Builds and exports Business Package to a given export directory
Returns the path of export
""" """
# Build Package
# Expected result should be while building the path object items
# are going to be exported as XML(?)
self.tic() self.tic()
package.build() package.build()
self.tic() self.tic()
...@@ -107,23 +108,24 @@ class TestBusinessPackage(ERP5TypeTestCase): ...@@ -107,23 +108,24 @@ class TestBusinessPackage(ERP5TypeTestCase):
bp_title = pathname2url(package.getTitle()) bp_title = pathname2url(package.getTitle())
package_path = os.path.join(cfg.instancehome, 'tests', '%s' % (bp_title,)) package_path = os.path.join(cfg.instancehome, 'tests', '%s' % (bp_title,))
# Export package (not needed) # Export package at the package_path
package.export(path=package_path, local=True) package.export(path=package_path, local=True)
self.tic() self.tic()
return package_path
def _importBusinessPackage(self, package, package_path):
"""
Imports the package from the path where it had been exported.
"""
self.portal.portal_templates.manage_delObjects(package.getId())
import_package = self.portal.portal_templates.download( import_package = self.portal.portal_templates.download(
url='file:'+package_path, url='file:'+package_path,
id=package.id+'1', id=package.id+'1',
is_package=True) )
return import_package
def _importBusinessPackage(self, package):
self.portal.portal_templates.manage_delObjects(package.getId())
self.tic() self.tic()
import_package = self.portal.portal_templates.download(
url='file:'+self.export_dir,
id=package.getId(),
is_package=True)
return import_package return import_package
def _installBusinessPackage(self, package): def _installBusinessPackage(self, package):
...@@ -132,6 +134,26 @@ class TestBusinessPackage(ERP5TypeTestCase): ...@@ -132,6 +134,26 @@ class TestBusinessPackage(ERP5TypeTestCase):
Expected to install the PathTemplateObject items Expected to install the PathTemplateObject items
""" """
package.install() package.install()
self.tic()
def test_fileImportAndReinstallWithProperty(self):
"""
Test Business Package for Path and ObjectProperty Items together.
Here we export path as well propertie(s) for different objects and check
if we are able to install them back using Business Package
"""
package = self._createBusinessPackage(bp_id='erp5_export_path_and_property')
file_path_list = ['portal_catalog/erp5_mysql_innodb',]
property_list = ['portal_catalog | default_erp5_catalog_id']
package.edit(
template_path_list=file_path_list,
template_object_property_list=property_list
)
self.tic()
package_path = self._buildAndExportBusinessPackage(package)
import_package = self._importBusinessPackage(package, package_path)
self._installBusinessPackage(import_package)
def test_fileImportAndReinstallForDocument(self): def test_fileImportAndReinstallForDocument(self):
""" """
...@@ -139,7 +161,7 @@ class TestBusinessPackage(ERP5TypeTestCase): ...@@ -139,7 +161,7 @@ class TestBusinessPackage(ERP5TypeTestCase):
Expected result: Installs the exported object to the path expected on site. Expected result: Installs the exported object to the path expected on site.
""" """
package = self._createBusinessPackage() package = self._createBusinessPackage(bp_id='erp5_mysql_innodb_catalog_1')
document_file = self.portal.document_module.newContent( document_file = self.portal.document_module.newContent(
portal_type = 'File', portal_type = 'File',
title = 'Test Document', title = 'Test Document',
...@@ -149,18 +171,19 @@ class TestBusinessPackage(ERP5TypeTestCase): ...@@ -149,18 +171,19 @@ class TestBusinessPackage(ERP5TypeTestCase):
self.tic() self.tic()
file_path = document_file.getRelativeUrl() file_path = document_file.getRelativeUrl()
package.edit(template_path_list=[file_path,]) package.edit(template_path_list=file_path)
self.tic()
# Build package # Build package
import_package = self._buildAndExportBusinessPackage(package) package_path = self._buildAndExportBusinessPackage(package)
# Delete document from site # Delete the document
self.portal.document_module.manage_delObjects([document_file.getId(),]) self.portal.document_module.manage_delObjects([document_file.getID(),])
self.tic() self.tic()
# Assert that the file is gone
# Test if the file is gone
self.assertRaises(KeyError, lambda: self.portal.restrictedTraverse(file_path)) self.assertRaises(KeyError, lambda: self.portal.restrictedTraverse(file_path))
#import_package = self._importBusinessPackage(package)
import_package = self._importBusinessPackage(package, package_path)
# Install package # Install package
self._installBusinessPackage(import_package) self._installBusinessPackage(import_package)
...@@ -170,7 +193,7 @@ class TestBusinessPackage(ERP5TypeTestCase): ...@@ -170,7 +193,7 @@ class TestBusinessPackage(ERP5TypeTestCase):
document = self.portal.restrictedTraverse(file_path) document = self.portal.restrictedTraverse(file_path)
self.assertEquals(document.title, 'Test Document') self.assertEquals(document.title, 'Test Document')
def test_sameFileImportAndReinstallOnTwoPackages(self): def _sameFileImportAndReinstallOnTwoPackages(self):
""" """
Test two Business Packages build and installation of same file. Test two Business Packages build and installation of same file.
...@@ -228,7 +251,7 @@ class TestBusinessPackage(ERP5TypeTestCase): ...@@ -228,7 +251,7 @@ class TestBusinessPackage(ERP5TypeTestCase):
document = self.portal.restrictedTraverse(file_path) document = self.portal.restrictedTraverse(file_path)
self.assertEquals(document.title, document_file.title) self.assertEquals(document.title, document_file.title)
def test_AddConflictedFileAtSamePathViaTwoPackages(self): def _AddConflictedFileAtSamePathViaTwoPackages(self):
""" """
Test the result of conflict of two files to be installed at same path Test the result of conflict of two files to be installed at same path
by two different Business Packages by two different Business Packages
...@@ -275,7 +298,7 @@ class TestBusinessPackage(ERP5TypeTestCase): ...@@ -275,7 +298,7 @@ class TestBusinessPackage(ERP5TypeTestCase):
self.assertTrue(conflicted_data) self.assertTrue(conflicted_data)
self.assertEquals(len(conflicted_data[file_path]), 2) self.assertEquals(len(conflicted_data[file_path]), 2)
def test_checkPathTemplateBuildForFolder(self): def _checkPathTemplateBuildForFolder(self):
""" """
This test should ensure that we are able to use folder as path for Business This test should ensure that we are able to use folder as path for Business
Packages without the need to export every path inside it explicitly Packages without the need to export every path inside it explicitly
...@@ -333,7 +356,7 @@ class TestBusinessPackage(ERP5TypeTestCase): ...@@ -333,7 +356,7 @@ class TestBusinessPackage(ERP5TypeTestCase):
self.assertEquals(total_object_count, package_object_count) self.assertEquals(total_object_count, package_object_count)
self.assertEquals(object_id_list, package_object_id_list) self.assertEquals(object_id_list, package_object_id_list)
def test_addObjectPropertyTemplateItemInPackage(self): def _addObjectPropertyTemplateItemInPackage(self):
""" """
Add ObjectPropertyTemplateItem to Business Package with the hash Add ObjectPropertyTemplateItem to Business Package with the hash
""" """
...@@ -370,7 +393,7 @@ class TestBusinessPackage(ERP5TypeTestCase): ...@@ -370,7 +393,7 @@ class TestBusinessPackage(ERP5TypeTestCase):
self.assertIn(relative_url, property_object_hash_list) self.assertIn(relative_url, property_object_hash_list)
self.assertIn(portal_catalog.getRelativeUrl(), property_object_hash_list) self.assertIn(portal_catalog.getRelativeUrl(), property_object_hash_list)
def test_udpateInstallationStateOnlyForBusinessPackage(self): def _udpateInstallationStateOnlyForBusinessPackage(self):
""" """
Updating Business Package with the changed installation state and trying Updating Business Package with the changed installation state and trying
to show the diff between the two installation state to show the diff between the two installation state
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment