diff --git a/trytond/trytond/tests/test_field_many2one.py b/trytond/trytond/tests/test_field_many2one.py index 58e2272704..7993d5e282 100644 --- a/trytond/trytond/tests/test_field_many2one.py +++ b/trytond/trytond/tests/test_field_many2one.py @@ -220,6 +220,46 @@ class FieldMany2OneTestCase(TestCase): ]) self.assertListEqual(result, [record]) + @with_transaction() + def test_set_instance(self): + "Test set instance" + pool = Pool() + Many2One = pool.get('test.many2one') + Target = pool.get('test.many2one_target') + + record = Many2One() + record.many2one = target = Target() + + self.assertIs(record.many2one, target) + + @with_transaction() + def test_set_dict(self): + "Test set dictionary" + pool = Pool() + Many2One = pool.get('test.many2one') + Target = pool.get('test.many2one_target') + + record = Many2One() + record.many2one = {'value': 42} + + self.assertIsInstance(record.many2one, Target) + self.assertEqual(record.many2one.value, 42) + + @with_transaction() + def test_set_integer(self): + "Test set integer" + pool = Pool() + Many2One = pool.get('test.many2one') + Target = pool.get('test.many2one_target') + + target = Target(value=42) + target.save() + record = Many2One() + record.many2one = target.id + + self.assertIsInstance(record.many2one, Target) + self.assertEqual(record.many2one.value, 42) + @with_transaction() def test_context_attribute(self): "Test context on many2one attribute" diff --git a/trytond/trytond/tests/test_field_one2one.py b/trytond/trytond/tests/test_field_one2one.py index 39082527f3..f3409e04e6 100644 --- a/trytond/trytond/tests/test_field_one2one.py +++ b/trytond/trytond/tests/test_field_one2one.py @@ -321,3 +321,43 @@ class FieldOne2OneTestCase(TestCase): One2One.write([one2one2], { 'one2one': target.id, }) + + @with_transaction() + def test_set_instance(self): + "Test set instance" + pool = Pool() + One2One = pool.get('test.one2one') + Target = pool.get('test.one2one.target') + + record = One2One() + record.one2one = target = Target() + + self.assertIs(record.one2one, target) + + @with_transaction() + def test_set_dict(self): + "Test set dictionary" + pool = Pool() + One2One = pool.get('test.one2one') + Target = pool.get('test.one2one.target') + + record = One2One() + record.one2one = {'name': "Test"} + + self.assertIsInstance(record.one2one, Target) + self.assertEqual(record.one2one.name, "Test") + + @with_transaction() + def test_set_integer(self): + "Test set integer" + pool = Pool() + One2One = pool.get('test.one2one') + Target = pool.get('test.one2one.target') + + target = Target(name="Test") + target.save() + record = One2One() + record.one2one = target.id + + self.assertIsInstance(record.one2one, Target) + self.assertEqual(record.one2one.name, "Test")