Add test on ModelStorage.save with records with different context
issue5753 review22201002
This commit is contained in:
1 parent
cca2b961b0
commit
db3ded5b90
3 files changed
+34
-1
No files matched your search
@@ -105,6 +105,7 @@ def register():
|
||||
Singleton,
|
||||
URLObject,
|
||||
ModelStorage,
|
||||
ModelStorageRequired,
|
||||
ModelStorageContext,
|
||||
ModelSQLRequiredField,
|
||||
ModelSQLTimestamp,
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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)
|
||||
Reference in new issue
Block a user