From db3ded5b903976ca28dc726474bc6811bc8b347c Mon Sep 17 00:00:00 2001 From: Sergi Almacellas Abellana Date: Fri, 29 Jul 2016 10:31:14 +0200 Subject: [PATCH] Add test on ModelStorage.save with records with different context issue5753 review22201002 --- trytond/tests/__init__.py | 1 + trytond/tests/model.py | 8 +++++++- trytond/tests/test_modelstorage.py | 26 ++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/trytond/tests/__init__.py b/trytond/tests/__init__.py index bdc2d494af..2dd5214d96 100644 --- a/trytond/tests/__init__.py +++ b/trytond/tests/__init__.py @@ -105,6 +105,7 @@ def register(): Singleton, URLObject, ModelStorage, + ModelStorageRequired, ModelStorageContext, ModelSQLRequiredField, ModelSQLTimestamp, diff --git a/trytond/tests/model.py b/trytond/tests/model.py index ee54839a74..b30a672194 100644 --- a/trytond/tests/model.py +++ b/trytond/tests/model.py @@ -6,7 +6,7 @@ from trytond.transaction import Transaction __all__ = [ 'Model', 'Singleton', 'URLObject', - 'ModelStorage', 'ModelStorageContext', + 'ModelStorage', 'ModelStorageRequired', 'ModelStorageContext', 'ModelSQLRequiredField', 'ModelSQLTimestamp', 'ModelSQLFieldSet', 'Model4Union1', 'Model4Union2', 'Model4Union3', 'Model4Union4', 'Union', 'UnionUnion', @@ -42,6 +42,12 @@ class ModelStorage(ModelSQL): name = fields.Char('Name') +class ModelStorageRequired(ModelSQL): + 'Model stored' + __name__ = 'test.modelstorage.required' + name = fields.Char('Name', required=True) + + class ModelStorageContext(ModelSQL): 'Model Storage to test Context' __name__ = 'test.modelstorage.context' diff --git a/trytond/tests/test_modelstorage.py b/trytond/tests/test_modelstorage.py index b006db1412..e7d09d51be 100644 --- a/trytond/tests/test_modelstorage.py +++ b/trytond/tests/test_modelstorage.py @@ -3,6 +3,7 @@ import unittest +from trytond.error import UserError from trytond.pool import Pool from trytond.transaction import Transaction from trytond.tests.test_tryton import install_module, with_transaction @@ -55,6 +56,31 @@ class ModelStorageTestCase(unittest.TestCase): record = ModelStorageContext(record.id) self.assertDictContainsSubset({'foo': 'bar'}, record.context) + @with_transaction() + def test_save_mixed_context(self): + 'Test save with mixed context ' + pool = Pool() + ModelStorage = pool.get('test.modelstorage.required') + + foo = ModelStorage(name='foo') + with Transaction().set_context(bar=True): + bar = ModelStorage(name='bar') + ModelStorage.save([foo, bar]) + self.assertNotEqual(foo._context, bar._context) + + foo.name = None + with self.assertRaises(UserError): + ModelStorage.save([foo, bar]) + self.assertIsNone(foo.name) + self.assertEqual(bar.name, 'bar') + + bar.name = None + foo.name = 'foo' + with self.assertRaises(UserError): + ModelStorage.save([foo, bar]) + self.assertEqual(foo.name, 'foo') + self.assertIsNone(bar.name) + def suite(): return unittest.TestLoader().loadTestsFromTestCase(ModelStorageTestCase)