[Erp5-report] r26278 - /erp5/trunk/products/ERP5OOo/tests/testOOoImport.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Sat Apr 4 11:27:46 CEST 2009
Author: jerome
Date: Sat Apr 4 11:20:35 2009
New Revision: 26278
URL: http://svn.erp5.org?rev=26278&view=rev
Log:
re add all tests that has been added since this tests had been branched for new import
Modified:
erp5/trunk/products/ERP5OOo/tests/testOOoImport.py
Modified: erp5/trunk/products/ERP5OOo/tests/testOOoImport.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/tests/testOOoImport.py?rev=26278&r1=26277&r2=26278&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/tests/testOOoImport.py [utf8] (original)
+++ erp5/trunk/products/ERP5OOo/tests/testOOoImport.py [utf8] Sat Apr 4 11:20:35 2009
@@ -712,6 +712,7 @@
sequence_list.play(self, quiet=quiet)
'''
+ # CategoryTool_importCategoryFile tests
def test_CategoryTool_importCategoryFile(self):
# tests simple use of CategoryTool_importCategoryFile script
self.portal.portal_categories.CategoryTool_importCategoryFile(
@@ -745,8 +746,61 @@
self.assertEquals('A Country', france.getDescription())
self.assertEquals('FR', france.getCodification())
self.assertEquals(1, france.getIntIndex())
-
- # simple OOoParser tests
+
+ def test_CategoryTool_importCategoryFile_PathStars(self):
+ # tests CategoryTool_importCategoryFile with * in the paths columns
+ self.portal.portal_categories.CategoryTool_importCategoryFile(
+ import_file=makeFileUpload('import_region_category_path_stars.sxc'))
+ get_transaction().commit()
+ self.tic()
+ region = self.portal.portal_categories.region
+ self.assertEqual(2, len(region))
+ self.assertTrue('europe' in region.objectIds())
+ self.assertTrue('germany' in region.europe.objectIds())
+ self.assertTrue('france' in region.europe.objectIds())
+ france = region.europe.france
+ self.assertEquals('France', france.getTitle())
+ self.assertEquals('A Country', france.getDescription())
+ self.assertEquals('FR', france.getCodification())
+ self.assertEquals(1, france.getIntIndex())
+
+ def test_CategoryTool_importCategoryFile_PathStars_noID(self):
+ # tests CategoryTool_importCategoryFile with * in the paths columns, and no
+ # ID column, and non ascii titles
+ self.portal.portal_categories.CategoryTool_importCategoryFile(
+ import_file=makeFileUpload(
+ 'import_region_category_path_stars_non_ascii.sxc'))
+ get_transaction().commit()
+ self.tic()
+ region = self.portal.portal_categories.region
+ self.assertEqual(2, len(region))
+ self.assertTrue('europe' in region.objectIds())
+ self.assertTrue('germany' in region.europe.objectIds())
+ self.assertTrue('france' in region.europe.objectIds())
+ france = region.europe.france
+ self.assertEquals('Frànce', france.getTitle())
+ self.assertEquals('A Country', france.getDescription())
+ self.assertEquals('FR', france.getCodification())
+ self.assertEquals(1, france.getIntIndex())
+
+ def test_CategoryTool_importCategoryFile_DuplicateIds(self):
+ # tests CategoryTool_importCategoryFile when a document contain same
+ # categories ID at different level (a good candidate for an acquisition
+ # bug)
+ self.portal.portal_categories.CategoryTool_importCategoryFile(
+ import_file=makeFileUpload('import_region_category_duplicate_ids.sxc'))
+ get_transaction().commit()
+ self.tic()
+ region = self.portal.portal_categories.region
+ self.assertEqual(1, len(region))
+ self.assertEquals(['europe'], list(region.objectIds()))
+ self.assertEquals(['france'], list(region.europe.objectIds()))
+ self.assertEquals(['europe'], list(region.europe.france.objectIds()))
+ self.assertEquals(['france'], list(region.europe.france.europe.objectIds()))
+ self.assertEquals([], list(region.europe.france.europe.france.objectIds()))
+
+
+ # OOoParser tests
def test_getSpreadSheetMapping(self):
parser = OOoParser()
parser.openFile(open(makeFilePath('import_data_list.ods'), 'rb'))
@@ -767,6 +821,111 @@
mapping = parser.getSpreadsheetsMapping()
self.assertEquals(['Person'], mapping.keys())
+ def test_getSpreadSheetMappingStyle(self):
+ parser = OOoParser()
+ parser.openFile(open(makeFilePath('import_data_list_with_style.ods'), 'rb'))
+ mapping = parser.getSpreadsheetsMapping()
+ self.assertEquals(['Feuille1'], mapping.keys())
+ self.assertEquals(mapping['Feuille1'][1],
+ ['a line with style'])
+ self.assertEquals(mapping['Feuille1'][2],
+ ['a line with multiple styles'])
+ self.assertEquals(mapping['Feuille1'][3],
+ ['http://www.erp5.org'])
+ self.assertEquals(mapping['Feuille1'][4],
+ ['john.doe at example.com'])
+
+ def test_getSpreadSheetMappingDataTypes(self):
+ parser = OOoParser()
+ parser.openFile(open(makeFilePath('import_data_list_data_type.ods'), 'rb'))
+ mapping = parser.getSpreadsheetsMapping()
+ self.assertEquals(['Feuille1'], mapping.keys())
+ self.assertEquals(mapping['Feuille1'][0],
+ ['1234.5678'])
+ self.assertEquals(mapping['Feuille1'][1],
+ ['1234.5678'])
+ self.assertEquals(mapping['Feuille1'][2],
+ ['0.1'])
+ self.assertEquals(mapping['Feuille1'][3],
+ ['2008-11-14'])
+ self.assertEquals(mapping['Feuille1'][4],
+ ['2008-11-14T10:20:30']) # supported by DateTime
+ self.assertEquals(mapping['Feuille1'][5],
+ ['PT12H34M56S']) # maybe not good, this is raw format
+
+ # Base_getCategoriesSpreadSheetMapping tests
+ def test_Base_getCategoriesSpreadSheetMapping(self):
+ # test structure returned by Base_getCategoriesSpreadSheetMapping
+ mapping = self.portal.Base_getCategoriesSpreadSheetMapping(
+ import_file=makeFileUpload('import_region_category.sxc'))
+ self.assertTrue(isinstance(mapping, dict))
+ self.assertEquals(['region'], list(mapping.keys()))
+ region = mapping['region']
+ self.assertTrue(isinstance(region, list))
+ self.assertEquals(6, len(region))
+ # base category is contained in the list
+ self.assertEquals(dict(path='region',
+ title='region'),
+ region[0])
+ self.assertEquals(dict(path='region/europe',
+ title='Europe'),
+ region[1])
+ self.assertEquals(dict(codification='FR',
+ description='A Country',
+ int_index='1',
+ path='region/europe/france',
+ title='France'),
+ region[2])
+ # strings are encoded in UTF8
+ self.assertTrue(isinstance(region[1]['title'], str))
+ self.assertTrue(isinstance(region[1]['path'], str))
+ for k in region[1].keys():
+ self.assertTrue(isinstance(k, str), (k, type(k)))
+
+ def test_Base_getCategoriesSpreadSheetMapping_DuplicateIdsAtSameLevel(self):
+ # tests Base_getCategoriesSpreadSheetMapping when a document contain same
+ # categories ID at the same level, in that case, a ValueError is raised
+ import_file = makeFileUpload(
+ 'import_region_category_duplicate_ids_same_level.sxc')
+ try:
+ self.portal.portal_categories.Base_getCategoriesSpreadSheetMapping(
+ import_file=import_file)
+ except ValueError, error:
+ # 'france' is the duplicate ID in this spreadsheet
+ self.assertTrue('france' in str(error), str(error))
+ else:
+ self.fail('ValueError not raised')
+
+ # Base_getCategoriesSpreadSheetMapping performs checks on the spreadsheet,
+ # an "invalid spreadsheet" error handler can be provided, to report errors
+ # nicely.
+ message_list = []
+ def on_invalid_spreadsheet(message):
+ message_list.append(message)
+
+ import_file = makeFileUpload(
+ 'import_region_category_duplicate_ids_same_level.sxc')
+ self.portal.portal_categories.Base_getCategoriesSpreadSheetMapping(import_file,
+ invalid_spreadsheet_error_handler=on_invalid_spreadsheet)
+
+ self.assertEquals(1, len(message_list))
+ self.assertTrue('france' in str(message_list[0]))
+
+ def test_Base_getCategoriesSpreadSheetMapping_WrongHierarchy(self):
+ # tests Base_getCategoriesSpreadSheetMapping when the spreadsheet has an
+ # invalid hierarchy (#788)
+ import_file = makeFileUpload(
+ 'import_region_category_wrong_hierarchy.sxc')
+ try:
+ self.portal.portal_categories.Base_getCategoriesSpreadSheetMapping(
+ import_file=import_file)
+ except ValueError, error:
+ # 'wrong_hierarchy' is the ID of the category where the problem happens
+ self.assertTrue('wrong_hierarchy' in str(error), str(error))
+ else:
+ self.fail('ValueError not raised')
+
+
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestOOoImport))
More information about the Erp5-report
mailing list