From b1e50bfaf0477dfc5e38c22bf0f2b4a3589a987e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 18 May 2013 19:13:56 +0200 Subject: [PATCH] Add unittest for domain validation of One2One fields review852003 --- trytond/test/__init__.py | 2 ++ trytond/test/test.py | 28 +++++++++++++++++++++++++++- trytond/tests/test_fields.py | 18 ++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/trytond/test/__init__.py b/trytond/test/__init__.py index 8e3d8ab9e9..eb06454038 100644 --- a/trytond/test/__init__.py +++ b/trytond/test/__init__.py @@ -57,6 +57,8 @@ def register(): One2OneRelation, One2OneRequired, One2OneRequiredRelation, + One2OneDomain, + One2OneDomainRelation, One2Many, One2ManyTarget, One2ManyRequired, diff --git a/trytond/test/test.py b/trytond/test/test.py index 66de8298ea..69d6c275cd 100644 --- a/trytond/test/test.py +++ b/trytond/test/test.py @@ -18,7 +18,7 @@ __all__ = [ 'DateTime', 'DateTimeDefault', 'DateTimeRequired', 'DateTimeFormat', 'Time', 'TimeDefault', 'TimeRequired', 'TimeFormat', 'One2One', 'One2OneTarget', 'One2OneRelation', 'One2OneRequired', - 'One2OneRequiredRelation', + 'One2OneRequiredRelation', 'One2OneDomain', 'One2OneDomainRelation', 'One2Many', 'One2ManyTarget', 'One2ManyRequired', 'One2ManyRequiredTarget', 'One2ManyReference', 'One2ManyReferenceTarget', @@ -389,6 +389,32 @@ class One2OneRequiredRelation(ModelSQL): ] +class One2OneDomain(ModelSQL): + 'One2One' + __name__ = 'test.one2one_domain' + name = fields.Char('Name', required=True) + one2one = fields.One2One('test.one2one_domain.relation', 'origin', + 'target', string='One2One', help='Test one2one', + domain=[('name', '=', 'domain')]) + + +class One2OneDomainRelation(ModelSQL): + 'One2One Relation' + __name__ = 'test.one2one_domain.relation' + origin = fields.Many2One('test.one2one_domain', 'Origin') + target = fields.Many2One('test.one2one.target', 'Target') + + @classmethod + def __setup__(cls): + super(One2OneDomainRelation, cls).__setup__() + cls._sql_constraints += [ + ('origin_unique', 'UNIQUE(origin)', + 'Origin must be unique'), + ('target_unique', 'UNIQUE(target)', + 'Target must be unique'), + ] + + class One2Many(ModelSQL): 'One2Many Relation' __name__ = 'test.one2many' diff --git a/trytond/tests/test_fields.py b/trytond/tests/test_fields.py index 8f5b779554..0969bed665 100644 --- a/trytond/tests/test_fields.py +++ b/trytond/tests/test_fields.py @@ -75,6 +75,7 @@ class FieldsTestCase(unittest.TestCase): self.one2one = POOL.get('test.one2one') self.one2one_target = POOL.get('test.one2one.target') self.one2one_required = POOL.get('test.one2one_required') + self.one2one_domain = POOL.get('test.one2one_domain') self.one2many = POOL.get('test.one2many') self.one2many_target = POOL.get('test.one2many.target') @@ -2372,6 +2373,23 @@ class FieldsTestCase(unittest.TestCase): }]) self.assert_(one2one3) + target4, = self.one2one_target.create([{ + 'name': 'target4', + }]) + self.assertRaises(Exception, self.one2one_domain.create, [{ + 'name': 'one2one4', + 'one2one': target4.id, + }]) + transaction.cursor.rollback() + + target5, = self.one2one_target.create([{ + 'name': 'domain', + }]) + one2one5, = self.one2one_domain.create([{ + 'name': 'one2one5', + 'one2one': target5.id, + }]) + transaction.cursor.rollback() def test0120one2many(self):