summaryrefslogtreecommitdiff
path: root/addons/base_import/tests
diff options
context:
space:
mode:
authorXavier Morel <xmo@openerp.com>2012-08-14 11:38:13 +0200
committerXavier Morel <xmo@openerp.com>2012-08-14 11:38:13 +0200
commitde09433413d60fb8e40529a57dad1abac05c9011 (patch)
tree564546c6e779cba4abc116821256764f0c5d35b4 /addons/base_import/tests
parent45d5003dd6678c4ae115fef3a84d153d973c2b39 (diff)
[ADD] feeding of import data into import_data
bzr revid: xmo@openerp.com-20120814093813-ql1uq1kb2766db0e
Diffstat (limited to 'addons/base_import/tests')
-rw-r--r--addons/base_import/tests/test_cases.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/addons/base_import/tests/test_cases.py b/addons/base_import/tests/test_cases.py
index b10749bb585..7cd7cbc5d00 100644
--- a/addons/base_import/tests/test_cases.py
+++ b/addons/base_import/tests/test_cases.py
@@ -237,3 +237,75 @@ class test_preview(TransactionCase):
self.assertEqual(result['preview'], p['preview'])
# Ensure we only have the response fields we expect
self.assertItemsEqual(result.keys(), ['matches', 'fields', 'preview'])
+
+class test_convert_import_data(TransactionCase):
+ """ Tests conversion of base_import.import input into data which
+ can be fed to Model.import_data
+ """
+ def test_all(self):
+ Import = self.registry('base_import.import')
+ id = Import.create(self.cr, self.uid, {
+ 'res_model': 'base_import.tests.models.preview',
+ 'file': base64.b64encode('name,Some Value,Counter\n'
+ 'foo,1,2\n'
+ 'bar,3,4\n'
+ 'qux,5,6\n')
+ })
+ record = Import.browse(self.cr, self.uid, id)
+ data, fields = Import._convert_import_data(
+ record, ['name', 'somevalue', 'othervalue'],
+ {'quote': '"', 'separator': ',', 'headers': True,})
+
+ self.assertItemsEqual(fields, ['name', 'somevalue', 'othervalue'])
+ self.assertItemsEqual(data, [
+ ('foo', '1', '2'),
+ ('bar', '3', '4'),
+ ('qux', '5', '6'),
+ ])
+
+ def test_filtered(self):
+ """ If ``False`` is provided as field mapping for a column,
+ that column should be removed from importable data
+ """
+ Import = self.registry('base_import.import')
+ id = Import.create(self.cr, self.uid, {
+ 'res_model': 'base_import.tests.models.preview',
+ 'file': base64.b64encode('name,Some Value,Counter\n'
+ 'foo,1,2\n'
+ 'bar,3,4\n'
+ 'qux,5,6\n')
+ })
+ record = Import.browse(self.cr, self.uid, id)
+ data, fields = Import._convert_import_data(
+ record, ['name', False, 'othervalue'],
+ {'quote': '"', 'separator': ',', 'headers': True,})
+
+ self.assertItemsEqual(fields, ['name', 'othervalue'])
+ self.assertItemsEqual(data, [
+ ('foo', '2'),
+ ('bar', '4'),
+ ('qux', '6'),
+ ])
+
+ def test_norow(self):
+ """ If a row is composed only of empty values (due to having
+ filtered out non-empty values from it), it should be removed
+ """
+ Import = self.registry('base_import.import')
+ id = Import.create(self.cr, self.uid, {
+ 'res_model': 'base_import.tests.models.preview',
+ 'file': base64.b64encode('name,Some Value,Counter\n'
+ 'foo,1,2\n'
+ ',3,\n'
+ ',5,6\n')
+ })
+ record = Import.browse(self.cr, self.uid, id)
+ data, fields = Import._convert_import_data(
+ record, ['name', False, 'othervalue'],
+ {'quote': '"', 'separator': ',', 'headers': True,})
+
+ self.assertItemsEqual(fields, ['name', 'othervalue'])
+ self.assertItemsEqual(data, [
+ ('foo', '2'),
+ ('', '6'),
+ ])