Add copy test for Many2Many

Thanks to Laurent Defert

issue3506
review3221002
This commit is contained in:
Cédric Krier committed 2014-03-07 20:02:07 +01:00
1 parent f0a4bbcff7
commit fd25cd6434
3 files changed
+92 -2

No files matched your search

+6
View File
@@ -130,6 +130,12 @@ def register():
CopyOne2ManyTarget,
CopyOne2ManyReference,
CopyOne2ManyReferenceTarget,
CopyMany2Many,
CopyMany2ManyTarget,
CopyMany2ManyRelation,
CopyMany2ManyReference,
CopyMany2ManyReferenceTarget,
CopyMany2ManyReferenceRelation,
Many2OneTarget,
Many2OneDomainValidation,
module='tests', type_='model')
+56
View File
@@ -6,6 +6,9 @@ from trytond.model import ModelSQL, fields
__all__ = [
'CopyOne2Many', 'CopyOne2ManyTarget',
'CopyOne2ManyReference', 'CopyOne2ManyReferenceTarget',
'CopyMany2Many', 'CopyMany2ManyTarget', 'CopyMany2ManyRelation',
'CopyMany2ManyReference', 'CopyMany2ManyReferenceTarget',
'CopyMany2ManyReferenceRelation',
]
@@ -40,3 +43,56 @@ class CopyOne2ManyReferenceTarget(ModelSQL):
(None, ''),
('test.copy.one2many_reference', 'One2Many'),
])
class CopyMany2Many(ModelSQL):
"Copy Many2Many"
__name__ = 'test.copy.many2many'
name = fields.Char('Name')
many2many = fields.Many2Many('test.copy.many2many.rel', 'many2many',
'many2many_target', 'Many2Many')
class CopyMany2ManyTarget(ModelSQL):
"Copy Many2Many Target"
__name__ = 'test.copy.many2many.target'
name = fields.Char('Name')
many2one = fields.Many2One('test.copy.many2many.rel', 'many2many_target',
'Many2Many')
class CopyMany2ManyRelation(ModelSQL):
"Copy Many2Many Relation"
__name__ = 'test.copy.many2many.rel'
name = fields.Char('Name')
many2many = fields.Many2One('test.copy.many2many', 'Many2Many')
many2many_target = fields.Many2One('test.copy.many2many.target',
'Many2Many Target')
class CopyMany2ManyReference(ModelSQL):
"Copy Many2ManyReference"
__name__ = 'test.copy.many2many_reference'
name = fields.Char('Name')
many2many = fields.Many2Many('test.copy.many2many_reference.rel',
'many2many', 'many2many_target', 'Many2Many')
class CopyMany2ManyReferenceTarget(ModelSQL):
"Copy Many2ManyReference Target"
__name__ = 'test.copy.many2many_reference.target'
name = fields.Char('Name')
many2many = fields.Many2One('test.copy.many2many_reference.rel',
'many2many_target', 'Many2Many')
class CopyMany2ManyReferenceRelation(ModelSQL):
"Copy Many2ManyReference Relation"
__name__ = 'test.copy.many2many_reference.rel'
name = fields.Char('Name')
many2many = fields.Reference('Many2Many', [
(None, ''),
('test.copy.many2many_reference', 'Many2Many'),
])
many2many_target = fields.Many2One('test.copy.many2many_reference.target',
'Many2ManyReference Target')
+30 -2
View File
@@ -17,11 +17,16 @@ class CopyTestCase(unittest.TestCase):
self.one2many_reference = POOL.get('test.copy.one2many_reference')
self.one2many_reference_target = \
POOL.get('test.copy.one2many_reference.target')
self.many2many = POOL.get('test.copy.many2many')
self.many2many_target = POOL.get('test.copy.many2many.target')
self.many2many_reference = POOL.get('test.copy.many2many_reference')
self.many2many_reference_target = \
POOL.get('test.copy.many2many_reference.target')
def test0130one2many(self):
'Test one2many'
with Transaction().start(DB_NAME, USER,
context=CONTEXT) as transaction:
context=CONTEXT):
for One2many, Target in (
(self.one2many, self.one2many_target),
(self.one2many_reference, self.one2many_reference_target),
@@ -42,7 +47,30 @@ class CopyTestCase(unittest.TestCase):
self.assertEqual([x.name for x in one2many.one2many],
[x.name for x in one2many_copy.one2many])
transaction.cursor.rollback()
def test0140many2many(self):
'Test many2many'
with Transaction().start(DB_NAME, USER,
context=CONTEXT):
for Many2many, Target in (
(self.many2many, self.many2many_target),
(self.many2many_reference,
self.many2many_reference_target),
):
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])
def suite():