Files
tryton/trytond/tests/test_exportdata.py
T
Cédric Krier df1fd283ac New transaction management
Remove cursor, user and context from methods and use Transaction instead
2010-08-19 22:01:12 +02:00

360 lines
12 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
from __future__ import with_statement
import unittest
from decimal import Decimal
import datetime
from trytond.tests.test_tryton import POOL, DB_NAME, USER, CONTEXT, \
install_module
from trytond.transaction import Transaction
class ExportDataTestCase(unittest.TestCase):
'''
Test export_data.
'''
def setUp(self):
install_module('test')
self.export_data = POOL.get('test.export_data')
self.export_data_target = POOL.get('test.export_data.target')
self.export_data_relation = POOL.get('test.export_data.relation')
def test0010boolean(self):
'''
Test boolean.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
export1_id = self.export_data.create({
'boolean': True,
})
self.assert_(self.export_data.export_data([export1_id],
['boolean']) == [[True]])
export2_id = self.export_data.create({
'boolean': False,
})
self.assert_(self.export_data.export_data([export2_id],
['boolean']) == [[False]])
self.assert_(self.export_data.export_data( [export1_id,
export2_id], ['boolean']) == [[True], [False]])
transaction.cursor.rollback()
def test0020integer(self):
'''
Test integer.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
export1_id = self.export_data.create({
'integer': 2,
})
self.assert_(self.export_data.export_data([export1_id],
['integer']) == [[2]])
export2_id = self.export_data.create({
'integer': 0,
})
self.assert_(self.export_data.export_data([export2_id],
['integer']) == [[0]])
self.assert_(self.export_data.export_data([export1_id, export2_id],
['integer']) == [[2], [0]])
transaction.cursor.rollback()
def test0030float(self):
'''
Test float.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
export1_id = self.export_data.create({
'float': 1.1,
})
self.assert_(self.export_data.export_data([export1_id],
['float']) == [[1.1]])
export2_id = self.export_data.create({
'float': 0,
})
self.assert_(self.export_data.export_data([export2_id],
['float']) == [[0]])
self.assert_(self.export_data.export_data([export1_id, export2_id],
['float']) == [[1.1], [0]])
transaction.cursor.rollback()
def test0040numeric(self):
'''
Test numeric.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
export1_id = self.export_data.create({
'numeric': Decimal('1.1'),
})
self.assert_(self.export_data.export_data([export1_id],
['numeric']) == [[Decimal('1.1')]])
export2_id = self.export_data.create({
'numeric': Decimal('0'),
})
self.assert_(self.export_data.export_data([export2_id],
['numeric']) == [[Decimal('0')]])
self.assert_(self.export_data.export_data([export1_id, export2_id],
['numeric']) == [[Decimal('1.1')], [Decimal('0')]])
transaction.cursor.rollback()
def test0050char(self):
'''
Test char.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
export1_id = self.export_data.create({
'char': 'test',
})
self.assert_(self.export_data.export_data([export1_id],
['char']) == [['test']])
export2_id = self.export_data.create({
'char': False,
})
self.assert_(self.export_data.export_data([export2_id],
['char']) == [['']])
self.assert_(self.export_data.export_data([export1_id, export2_id],
['char']) == [['test'], ['']])
transaction.cursor.rollback()
def test0060text(self):
'''
Test text.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
export1_id = self.export_data.create({
'text': 'test',
})
self.assert_(self.export_data.export_data([export1_id],
['text']) == [['test']])
export2_id = self.export_data.create({
'text': False,
})
self.assert_(self.export_data.export_data([export2_id],
['text']) == [['']])
self.assert_(self.export_data.export_data([export1_id, export2_id],
['text']) == [['test'], ['']])
transaction.cursor.rollback()
def test0070sha(self):
'''
Test sha.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
export1_id = self.export_data.create({
'sha': 'Test',
})
self.assert_(self.export_data.export_data([export1_id],
['sha']) == [['640ab2bae07bedc4c163f679a746f7ab7fb5d1fa']])
transaction.cursor.rollback()
def test0080date(self):
'''
Test date.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
export1_id = self.export_data.create({
'date': datetime.date(2010, 1, 1),
})
self.assert_(self.export_data.export_data([export1_id],
['date']) == [[datetime.date(2010, 1, 1)]])
export2_id = self.export_data.create({
'date': False,
})
self.assert_(self.export_data.export_data([export2_id],
['date']) == [['']])
self.assert_(self.export_data.export_data([export1_id, export2_id],
['date']) == [[datetime.date(2010, 1, 1)], ['']])
transaction.cursor.rollback()
def test0090datetime(self):
'''
Test datetime.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
export1_id = self.export_data.create({
'datetime': datetime.datetime(2010, 1, 1, 12, 0, 0),
})
self.assert_(self.export_data.export_data([export1_id],
['datetime']) == [[datetime.datetime(2010, 1, 1, 12, 0, 0)]])
export2_id = self.export_data.create({
'datetime': False,
})
self.assert_(self.export_data.export_data([export2_id],
['datetime']) == [['']])
self.assert_(self.export_data.export_data([export1_id, export2_id],
['datetime']) == [[datetime.datetime(2010, 1, 1, 12, 0, 0)],
['']])
transaction.cursor.rollback()
def test0100selection(self):
'''
Test selection.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
export1_id = self.export_data.create({
'selection': 'select1',
})
self.assert_(self.export_data.export_data([export1_id],
['selection']) == [['select1']])
export2_id = self.export_data.create({
'selection': False,
})
self.assert_(self.export_data.export_data([export2_id],
['selection']) == [['']])
self.assert_(self.export_data.export_data([export1_id, export2_id],
['selection']) == [['select1'], ['']])
transaction.cursor.rollback()
def test0110many2one(self):
'''
Test many2one.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
target_id = self.export_data_target.create({
'name': 'Target Test',
})
export1_id = self.export_data.create({
'many2one': target_id,
})
self.assert_(self.export_data.export_data([export1_id],
['many2one/name']) == [['Target Test']])
export2_id = self.export_data.create({
'many2one': False,
})
self.assert_(self.export_data.export_data([export2_id],
['many2one/name']) == [['']])
self.assert_(self.export_data.export_data([export1_id, export2_id],
['many2one/name']) == [['Target Test'], ['']])
transaction.cursor.rollback()
def test0120many2many(self):
'''
Test many2many.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
target1_id = self.export_data_target.create({
'name': 'Target 1',
})
export1_id = self.export_data.create({
'many2many': [('set', [target1_id])],
})
self.assert_(self.export_data.export_data([export1_id],
['many2many/name']) == [['Target 1']])
target2_id = self.export_data_target.create({
'name': 'Target 2',
})
self.export_data.write(export1_id, {
'many2many': [('set', [target1_id, target2_id])],
})
self.assert_(self.export_data.export_data([export1_id], ['id',
'many2many/name']) == [[export1_id, 'Target 1'],
['', 'Target 2']])
export2_id = self.export_data.create({
'many2many': False,
})
self.assert_(self.export_data.export_data([export2_id],
['many2many/name']) == [['']])
self.assert_(self.export_data.export_data([export1_id, export2_id],
['id', 'many2many/name']) == [[export1_id, 'Target 1'],
['', 'Target 2'], [export2_id, '']])
transaction.cursor.rollback()
def test0130one2many(self):
'''
Test one2many.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
export1_id = self.export_data.create({})
target1_id = self.export_data_target.create({
'name': 'Target 1',
'one2many': export1_id,
})
self.assert_(self.export_data.export_data([export1_id],
['one2many/name']) == [['Target 1']])
target2_id = self.export_data_target.create({
'name': 'Target 2',
'one2many': export1_id,
})
self.assert_(self.export_data.export_data([export1_id],
['id', 'one2many/name']) ==
[[export1_id, 'Target 1'], ['', 'Target 2']])
export2_id = self.export_data.create({})
self.assert_(self.export_data.export_data([export2_id],
['one2many/name']) == [['']])
self.assert_(self.export_data.export_data([export1_id, export2_id],
['id', 'one2many/name']) == [[export1_id, 'Target 1'],
['', 'Target 2'], [export2_id, '']])
transaction.cursor.rollback()
def test0140reference(self):
'''
Test reference.
'''
with Transaction().start(DB_NAME, USER, CONTEXT) as transaction:
target1_id = self.export_data_target.create({})
export1_id = self.export_data.create({
'reference': 'test.export_data.target,%s' % target1_id,
})
self.assert_(self.export_data.export_data([export1_id],
['reference']) ==
[['test.export_data.target,%s' % target1_id]])
export2_id = self.export_data.create({
'reference': False,
})
self.assert_(self.export_data.export_data([export2_id],
['reference']) == [['']])
self.assert_(self.export_data.export_data([export1_id, export2_id],
['reference']) == [['test.export_data.target,%s' % target1_id],
['']])
transaction.cursor.rollback()
def suite():
return unittest.TestLoader().loadTestsFromTestCase(ExportDataTestCase)
if __name__ == '__main__':
suite = suite()
unittest.TextTestRunner(verbosity=2).run(suite)