Files
tryton/trytond/tests/test_importdata.py
T

478 lines
15 KiB
Python
Raw Normal View History

2010-03-04 14:02:27 +01:00
# -*- coding: utf-8 -*-
2014-12-02 12:54:01 +01:00
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
2010-03-04 14:02:27 +01:00
import unittest
2014-03-18 19:49:51 +01:00
from decimal import InvalidOperation
2016-02-06 19:10:35 +01:00
from trytond.tests.test_tryton import install_module, with_transaction
2010-08-19 22:01:12 +02:00
from trytond.transaction import Transaction
2016-02-06 19:10:35 +01:00
from trytond.pool import Pool
2014-03-18 19:49:51 +01:00
from trytond.exceptions import UserError
2010-03-04 14:02:27 +01:00
class ImportDataTestCase(unittest.TestCase):
2014-01-12 19:58:22 +01:00
'Test import_data'
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
@classmethod
def setUpClass(cls):
2013-09-16 11:38:11 +02:00
install_module('tests')
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
@with_transaction()
def test_boolean(self):
2014-01-12 19:58:22 +01:00
'Test boolean'
2016-02-06 19:10:35 +01:00
pool = Pool()
Boolean = pool.get('test.import_data.boolean')
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Boolean.import_data(['boolean'],
[['True']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Boolean.import_data(['boolean'],
[['1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Boolean.import_data(['boolean'],
[['False']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Boolean.import_data(['boolean'],
[['0']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Boolean.import_data(['boolean'],
[['']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Boolean.import_data(['boolean'],
[['True'], ['False']]), 2)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(ValueError, Boolean.import_data,
['boolean'], [['foo']])
@with_transaction()
def test_integer(self):
2014-01-12 19:58:22 +01:00
'Test integer'
2016-02-06 19:10:35 +01:00
pool = Pool()
Integer = pool.get('test.import_data.integer')
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Integer.import_data(['integer'],
[['1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Integer.import_data(['integer'],
[['-1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Integer.import_data(['integer'],
[['']]), 1)
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Integer.import_data(['integer'],
[['1'], ['2']]), 2)
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(ValueError, Integer.import_data,
['integer'], [['1.1']])
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(ValueError, Integer.import_data,
['integer'], [['-1.1']])
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(ValueError, Integer.import_data,
['integer'], [['foo']])
2016-02-06 19:10:35 +01:00
self.assertEqual(Integer.import_data(['integer'],
[['0']]), 1)
@with_transaction()
def test_integer_required(self):
2014-01-12 19:58:22 +01:00
'Test required integer'
2016-02-06 19:10:35 +01:00
pool = Pool()
IntegerRequired = pool.get('test.import_data.integer_required')
transaction = Transaction()
2016-02-06 19:10:35 +01:00
self.assertEqual(IntegerRequired.import_data(['integer'],
[['1']]), 1)
2016-02-06 19:10:35 +01:00
self.assertEqual(IntegerRequired.import_data(['integer'],
[['-1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, IntegerRequired.import_data,
['integer'], [['']])
transaction.rollback()
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(IntegerRequired.import_data(['integer'],
[['1'], ['2']]), 2)
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(ValueError, IntegerRequired.import_data,
['integer'], [['1.1']])
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(ValueError, IntegerRequired.import_data,
['integer'], [['-1.1']])
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(ValueError, IntegerRequired.import_data,
['integer'], [['foo']])
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(IntegerRequired.import_data(['integer'],
[['0']]), 1)
@with_transaction()
def test_float(self):
2014-01-12 19:58:22 +01:00
'Test float'
2016-02-06 19:10:35 +01:00
pool = Pool()
Float = pool.get('test.import_data.float')
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Float.import_data(['float'],
[['1.1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Float.import_data(['float'],
[['-1.1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Float.import_data(['float'],
[['1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Float.import_data(['float'],
[['']]), 1)
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Float.import_data(['float'],
[['1.1'], ['2.2']]), 2)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(ValueError, Float.import_data,
['float'], [['foo']])
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Float.import_data(['float'],
[['0']]), 1)
2016-02-06 19:10:35 +01:00
self.assertEqual(Float.import_data(['float'],
[['0.0']]), 1)
@with_transaction()
def test_float_required(self):
2014-01-12 19:58:22 +01:00
'Test required float'
2016-02-06 19:10:35 +01:00
pool = Pool()
FloatRequired = pool.get('test.import_data.float_required')
transaction = Transaction()
2016-02-06 19:10:35 +01:00
self.assertEqual(FloatRequired.import_data(['float'],
[['1.1']]), 1)
2016-02-06 19:10:35 +01:00
self.assertEqual(FloatRequired.import_data(['float'],
[['-1.1']]), 1)
2016-02-06 19:10:35 +01:00
self.assertEqual(FloatRequired.import_data(['float'],
[['1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, FloatRequired.import_data,
['float'], [['']])
transaction.rollback()
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(FloatRequired.import_data(['float'],
[['1.1'], ['2.2']]), 2)
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(ValueError, FloatRequired.import_data,
['float'], [['foo']])
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(FloatRequired.import_data(['float'],
[['0']]), 1)
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(FloatRequired.import_data(['float'],
[['0.0']]), 1)
@with_transaction()
def test_numeric(self):
2014-01-12 19:58:22 +01:00
'Test numeric'
2016-02-06 19:10:35 +01:00
pool = Pool()
Numeric = pool.get('test.import_data.numeric')
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Numeric.import_data(['numeric'],
[['1.1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Numeric.import_data(['numeric'],
[['-1.1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Numeric.import_data(['numeric'],
[['1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Numeric.import_data(['numeric'],
[['']]), 1)
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Numeric.import_data(['numeric'],
[['1.1'], ['2.2']]), 2)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(InvalidOperation, Numeric.import_data,
['numeric'], [['foo']])
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Numeric.import_data(['numeric'],
[['0']]), 1)
2016-02-06 19:10:35 +01:00
self.assertEqual(Numeric.import_data(['numeric'],
[['0.0']]), 1)
@with_transaction()
def test_numeric_required(self):
2014-01-12 19:58:22 +01:00
'Test required numeric'
2016-02-06 19:10:35 +01:00
pool = Pool()
NumericRequired = pool.get('test.import_data.numeric_required')
transaction = Transaction()
2016-02-06 19:10:35 +01:00
self.assertEqual(NumericRequired.import_data(['numeric'],
[['1.1']]), 1)
2016-02-06 19:10:35 +01:00
self.assertEqual(NumericRequired.import_data(['numeric'],
[['-1.1']]), 1)
2016-02-06 19:10:35 +01:00
self.assertEqual(NumericRequired.import_data(['numeric'],
[['1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, NumericRequired.import_data,
['numeric'], [['']])
transaction.rollback()
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(NumericRequired.import_data(['numeric'],
[['1.1'], ['2.2']]), 2)
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(InvalidOperation,
NumericRequired.import_data, ['numeric'], [['foo']])
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(NumericRequired.import_data(['numeric'],
[['0']]), 1)
2014-03-18 19:49:51 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(NumericRequired.import_data(['numeric'],
[['0.0']]), 1)
@with_transaction()
def test_char(self):
2014-01-12 19:58:22 +01:00
'Test char'
2016-02-06 19:10:35 +01:00
pool = Pool()
Char = pool.get('test.import_data.char')
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Char.import_data(['char'],
[['test']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Char.import_data(['char'],
[['']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Char.import_data(['char'],
[['test'], ['foo'], ['bar']]), 3)
@with_transaction()
def test_text(self):
2014-01-12 19:58:22 +01:00
'Test text'
2016-02-06 19:10:35 +01:00
pool = Pool()
Text = pool.get('test.import_data.text')
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Text.import_data(['text'],
[['test']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Text.import_data(['text'],
[['']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Text.import_data(['text'],
[['test'], ['foo'], ['bar']]), 3)
@with_transaction()
def test_date(self):
2014-01-12 19:58:22 +01:00
'Test date'
2016-02-06 19:10:35 +01:00
pool = Pool()
Date = pool.get('test.import_data.date')
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Date.import_data(['date'],
[['2010-01-01']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Date.import_data(['date'],
[['']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Date.import_data(['date'],
[['2010-01-01'], ['2010-02-01']]), 2)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(ValueError, Date.import_data,
['date'], [['foo']])
@with_transaction()
def test_datetime(self):
2014-01-12 19:58:22 +01:00
'Test datetime'
2016-02-06 19:10:35 +01:00
pool = Pool()
Datetime = pool.get('test.import_data.datetime')
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Datetime.import_data(['datetime'],
[['2010-01-01 12:00:00']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Datetime.import_data(['datetime'],
[['']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Datetime.import_data(['datetime'],
[['2010-01-01 12:00:00'], ['2010-01-01 13:30:00']]), 2)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(ValueError, Datetime.import_data,
['datetime'], [['foo']])
@with_transaction()
def test_selection(self):
2014-01-12 19:58:22 +01:00
'Test selection'
2016-02-06 19:10:35 +01:00
pool = Pool()
Selection = pool.get('test.import_data.selection')
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Selection.import_data(['selection'],
[['select1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Selection.import_data(['selection'],
[['']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Selection.import_data(['selection'],
[['select1'], ['select2']]), 2)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, Selection.import_data,
['selection'], [['foo']])
@with_transaction()
def test_many2one(self):
2014-01-12 19:58:22 +01:00
'Test many2one'
2016-02-06 19:10:35 +01:00
pool = Pool()
Many2one = pool.get('test.import_data.many2one')
transaction = Transaction()
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Many2one.import_data(['many2one'],
[['Test']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Many2one.import_data(['many2one:id'],
[['tests.import_data_many2one_target_test']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Many2one.import_data(['many2one'],
[['']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Many2one.import_data(['many2one'],
[['Test'], ['Test']]), 2)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, Many2one.import_data,
['many2one'], [['foo']])
transaction.rollback()
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, Many2one.import_data,
['many2one'], [['Duplicate']])
transaction.rollback()
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, Many2one.import_data,
['many2one:id'], [['foo']])
transaction.rollback()
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(Exception, Many2one.import_data,
['many2one:id'], [['tests.foo']])
transaction.rollback()
2016-02-06 19:10:35 +01:00
@with_transaction()
def test_many2many(self):
2014-01-12 19:58:22 +01:00
'Test many2many'
2016-02-06 19:10:35 +01:00
pool = Pool()
Many2many = pool.get('test.import_data.many2many')
transaction = Transaction()
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Many2many.import_data(['many2many'],
[['Test 1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Many2many.import_data(['many2many:id'],
[['tests.import_data_many2many_target_test1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Many2many.import_data(['many2many'],
[['Test 1,Test 2']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Many2many.import_data(['many2many:id'],
[['tests.import_data_many2many_target_test1,'
'tests.import_data_many2many_target_test2']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Many2many.import_data(['many2many'],
[['Test\, comma']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Many2many.import_data(['many2many'],
[['Test\, comma,Test 1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Many2many.import_data(['many2many'],
[['']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(Many2many.import_data(['many2many'],
[['Test 1'], ['Test 2']]), 2)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, Many2many.import_data,
['many2many'], [['foo']])
transaction.rollback()
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, Many2many.import_data,
['many2many'], [['Test 1,foo']])
transaction.rollback()
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, Many2many.import_data,
['many2many'], [['Duplicate']])
transaction.rollback()
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, Many2many.import_data,
['many2many'], [['Test 1,Duplicate']])
transaction.rollback()
2016-02-06 19:10:35 +01:00
@with_transaction()
def test_one2many(self):
2014-01-12 19:58:22 +01:00
'Test one2many'
2016-02-06 19:10:35 +01:00
pool = Pool()
One2many = pool.get('test.import_data.one2many')
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(One2many.import_data(
['name', 'one2many/name'], [['Test', 'Test 1']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(One2many.import_data(
['name', 'one2many/name'],
[['Test', 'Test 1'], ['', 'Test 2']]), 1)
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertEqual(One2many.import_data(
['name', 'one2many/name'],
[
['Test 1', 'Test 1'],
['', 'Test 2'],
['Test 2', 'Test 1']]), 2)
@with_transaction()
def test_reference(self):
2014-01-12 19:58:22 +01:00
'Test reference'
2016-02-06 19:10:35 +01:00
pool = Pool()
Reference = pool.get('test.import_data.reference')
transaction = Transaction()
self.assertEqual(Reference.import_data(['reference'],
[['test.import_data.reference.selection,Test']]), 1)
reference, = Reference.search([])
self.assertEqual(reference.reference.__name__,
'test.import_data.reference.selection')
transaction.rollback()
2016-02-06 19:10:35 +01:00
self.assertEqual(Reference.import_data(['reference:id'],
[['test.import_data.reference.selection,'
'tests.import_data_reference_selection_test']]), 1)
reference, = Reference.search([])
self.assertEqual(reference.reference.__name__,
'test.import_data.reference.selection')
transaction.rollback()
2016-02-06 19:10:35 +01:00
self.assertEqual(Reference.import_data(['reference'],
[['']]), 1)
reference, = Reference.search([])
self.assertEqual(reference.reference, None)
transaction.rollback()
2016-02-06 19:10:35 +01:00
self.assertEqual(Reference.import_data(['reference'],
[['test.import_data.reference.selection,Test'],
['test.import_data.reference.selection,Test']]), 2)
for reference in Reference.search([]):
2012-10-09 17:42:02 +02:00
self.assertEqual(reference.reference.__name__,
'test.import_data.reference.selection')
transaction.rollback()
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, Reference.import_data,
['reference'], [['test.import_data.reference.selection,foo']])
transaction.rollback()
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, Reference.import_data,
['reference'],
[['test.import_data.reference.selection,Duplicate']])
transaction.rollback()
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(UserError, Reference.import_data,
['reference:id'],
[['test.import_data.reference.selection,foo']])
transaction.rollback()
2010-03-04 14:02:27 +01:00
2016-02-06 19:10:35 +01:00
self.assertRaises(Exception, Reference.import_data,
['reference:id'],
[['test.import_data.reference.selection,test.foo']])
transaction.rollback()
2010-03-04 14:02:27 +01:00
2012-03-24 09:44:42 +01:00
2010-03-04 14:02:27 +01:00
def suite():
return unittest.TestLoader().loadTestsFromTestCase(ImportDataTestCase)