diff options
Diffstat (limited to 'addons/base_import/tests/test_base_import.py')
| -rw-r--r-- | addons/base_import/tests/test_base_import.py | 76 |
1 files changed, 37 insertions, 39 deletions
diff --git a/addons/base_import/tests/test_base_import.py b/addons/base_import/tests/test_base_import.py index 2d1d850d3a9..cf324b44abd 100644 --- a/addons/base_import/tests/test_base_import.py +++ b/addons/base_import/tests/test_base_import.py @@ -1,13 +1,12 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. - -import csv +import base64 import io import unittest from odoo.tests.common import TransactionCase, can_import from odoo.modules.module import get_module_resource -from odoo.tools import mute_logger +from odoo.tools import mute_logger, pycompat ID_FIELD = { 'id': 'id', @@ -231,10 +230,10 @@ class TestPreview(TransactionCase): def test_csv_success(self): import_wizard = self.env['base_import.import'].create({ 'res_model': 'base_import.tests.models.preview', - 'file': 'name,Some Value,Counter\n' - 'foo,1,2\n' - 'bar,3,4\n' - 'qux,5,6\n', + 'file': b'name,Some Value,Counter\n' + b'foo,1,2\n' + b'bar,3,4\n' + b'qux,5,6\n', 'file_type': 'text/csv' }) @@ -359,10 +358,10 @@ class test_convert_import_data(TransactionCase): def test_all(self): import_wizard = self.env['base_import.import'].create({ 'res_model': 'base_import.tests.models.preview', - 'file': 'name,Some Value,Counter\n' - 'foo,1,2\n' - 'bar,3,4\n' - 'qux,5,6\n', + 'file': b'name,Some Value,Counter\n' + b'foo,1,2\n' + b'bar,3,4\n' + b'qux,5,6\n', 'file_type': 'text/csv' }) @@ -381,8 +380,8 @@ class test_convert_import_data(TransactionCase): def test_date_fields(self): import_wizard = self.env['base_import.import'].create({ 'res_model': 'res.partner', - 'file': 'name,date,create_date\n' - '"foo","2013年07月18日","2016-10-12 06:06"\n', + 'file': u'name,date,create_date\n' + u'"foo","2013年07月18日","2016-10-12 06:06"\n'.encode('utf-8'), 'file_type': 'text/csv' }) @@ -409,10 +408,10 @@ class test_convert_import_data(TransactionCase): """ import_wizard = self.env['base_import.import'].create({ 'res_model': 'base_import.tests.models.preview', - 'file': 'name,Some Value,Counter\n' - 'foo,1,2\n' - 'bar,3,4\n' - 'qux,5,6\n', + 'file': b'name,Some Value,Counter\n' + b'foo,1,2\n' + b'bar,3,4\n' + b'qux,5,6\n', 'file_type': 'text/csv' }) data, fields = import_wizard._convert_import_data( @@ -433,10 +432,10 @@ class test_convert_import_data(TransactionCase): """ import_wizard = self.env['base_import.import'].create({ 'res_model': 'base_import.tests.models.preview', - 'file': 'name,Some Value,Counter\n' - 'foo,1,2\n' - ',3,\n' - ',5,6\n', + 'file': b'name,Some Value,Counter\n' + b'foo,1,2\n' + b',3,\n' + b',5,6\n', 'file_type': 'text/csv' }) data, fields = import_wizard._convert_import_data( @@ -453,12 +452,12 @@ class test_convert_import_data(TransactionCase): def test_empty_rows(self): import_wizard = self.env['base_import.import'].create({ 'res_model': 'base_import.tests.models.preview', - 'file': 'name,Some Value\n' - 'foo,1\n' - '\n' - 'bar,2\n' - ' \n' - '\t \n', + 'file': b'name,Some Value\n' + b'foo,1\n' + b'\n' + b'bar,2\n' + b' \n' + b'\t \n', 'file_type': 'text/csv' }) data, fields = import_wizard._convert_import_data( @@ -475,8 +474,8 @@ class test_convert_import_data(TransactionCase): def test_nofield(self): import_wizard = self.env['base_import.import'].create({ 'res_model': 'base_import.tests.models.preview', - 'file': 'name,Some Value,Counter\n' - 'foo,1,2\n', + 'file': b'name,Some Value,Counter\n' + b'foo,1,2\n', 'file_type': 'text/csv' }) @@ -485,8 +484,8 @@ class test_convert_import_data(TransactionCase): def test_falsefields(self): import_wizard = self.env['base_import.import'].create({ 'res_model': 'base_import.tests.models.preview', - 'file': 'name,Some Value,Counter\n' - 'foo,1,2\n', + 'file': b'name,Some Value,Counter\n' + b'foo,1,2\n', 'file_type': 'text/csv' }) @@ -501,11 +500,11 @@ class test_convert_import_data(TransactionCase): Ensure importing keep newlines """ output = io.BytesIO() - writer = csv.writer(output, quoting=csv.QUOTE_ALL) + writer = pycompat.csv_writer(output, quoting=1) - data_row = ["\tfoo\n\tbar", " \"hello\" \n\n 'world' "] + data_row = [u"\tfoo\n\tbar", u" \"hello\" \n\n 'world' "] - writer.writerow(["name", "Some Value"]) + writer.writerow([u"name", u"Some Value"]) writer.writerow(data_row) import_wizard = self.env['base_import.import'].create({ @@ -527,16 +526,15 @@ class test_failures(TransactionCase): Ensure big fields (e.g. b64-encoded image data) can be imported and we're not hitting limits of the default CSV parser config """ - import csv, cStringIO from PIL import Image im = Image.new('RGB', (1920, 1080)) - fout = cStringIO.StringIO() + fout = io.BytesIO() - writer = csv.writer(fout, dialect=None) + writer = pycompat.csv_writer(fout, dialect=None) writer.writerows([ - ['name', 'db_datas'], - ['foo', im.tobytes().encode('base64')] + [u'name', u'db_datas'], + [u'foo', base64.b64encode(im.tobytes()).decode('ascii')] ]) import_wizard = self.env['base_import.import'].create({ |
