Files
tryton/trytond/tests/test_copy.py
T
Cédric Krier a17386e970 Let default value of copy converted for the type of field
The default value of copy is expected to be the same format as for the default
methods. So the value for xxx2Many fields must be converted.

issue6818
review37751002
2017-10-06 11:00:41 +02:00

115 lines
3.8 KiB
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.
import unittest
from trytond.tests.test_tryton import activate_module, with_transaction
from trytond.pool import Pool
class CopyTestCase(unittest.TestCase):
'Test copy'
@classmethod
def setUpClass(cls):
activate_module('tests')
@with_transaction()
def test_one2many(self):
'Test copy one2many'
pool = Pool()
One2many_ = pool.get('test.copy.one2many')
One2manyTarget = pool.get('test.copy.one2many.target')
One2manyReference = pool.get('test.copy.one2many_reference')
One2manyReferenceTarget = \
pool.get('test.copy.one2many_reference.target')
for One2many, Target in (
(One2many_, One2manyTarget),
(One2manyReference, One2manyReferenceTarget),
):
one2many = One2many(name='Test')
one2many.one2many = [
Target(name='Target 1'),
Target(name='Target 2'),
]
one2many.save()
one2many_copy, = One2many.copy([one2many])
self.assertNotEqual(one2many, one2many_copy)
self.assertEqual(len(one2many.one2many),
len(one2many_copy.one2many))
self.assertNotEqual(one2many.one2many, one2many_copy.one2many)
self.assertEqual([x.name for x in one2many.one2many],
[x.name for x in one2many_copy.one2many])
@with_transaction()
def test_one2many_default(self):
"Test copy one2many with default"
pool = Pool()
One2many = pool.get('test.copy.one2many')
Target = pool.get('test.copy.one2many.target')
record = One2many(name="Test")
record.save()
target = Target(name="Target")
target.save()
record_copy, = One2many.copy(
[record], default={'one2many': [target.id]})
self.assertListEqual(
[x.name for x in record_copy.one2many], [target.name])
@with_transaction()
def test_many2many(self):
'Test copy many2many'
pool = Pool()
Many2many_ = pool.get('test.copy.many2many')
Many2manyTarget = pool.get('test.copy.many2many.target')
Many2manyReference = pool.get('test.copy.many2many_reference')
Many2manyReferenceTarget = \
pool.get('test.copy.many2many_reference.target')
for Many2many, Target in (
(Many2many_, Many2manyTarget),
(Many2manyReference, Many2manyReferenceTarget),
):
many2many = Many2many(name='Test')
many2many.many2many = [
Target(name='Target 1'),
Target(name='Target 2'),
]
many2many.save()
many2many_copy, = Many2many.copy([many2many])
self.assertNotEqual(many2many, many2many_copy)
self.assertEqual(len(many2many.many2many),
len(many2many_copy.many2many))
self.assertEqual(many2many.many2many, many2many_copy.many2many)
self.assertEqual([x.name for x in many2many.many2many],
[x.name for x in many2many_copy.many2many])
@with_transaction()
def test_many2many_default(self):
"Test copy many2many with default"
pool = Pool()
Many2many = pool.get('test.copy.many2many')
Target = pool.get('test.copy.many2many.target')
record = Many2many(name="Test")
record.save()
target = Target(name="Target")
target.save()
record_copy, = Many2many.copy(
[record], default={'many2many': [target.id]})
self.assertSequenceEqual(record_copy.many2many, [target])
def suite():
return unittest.TestLoader().loadTestsFromTestCase(CopyTestCase)