summaryrefslogtreecommitdiff
path: root/addons/base_import/tests/test_base_import.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/base_import/tests/test_base_import.py')
-rw-r--r--addons/base_import/tests/test_base_import.py76
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({