164 lines
6.9 KiB
Python
164 lines
6.9 KiB
Python
# Copyright 2018 Camptocamp (https://www.camptocamp.com).
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo.addons.server_environment.tests.common import ServerEnvironmentCase
|
|
|
|
|
|
class TestServerEnvMixinSameFieldName(ServerEnvironmentCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.public = (
|
|
# global for all server.env.test records
|
|
"[server_env_test]\n"
|
|
"host=global_value\n"
|
|
# for our server.env.test test record now
|
|
"[server_env_test.foo]\n"
|
|
"host=foo_value\n"
|
|
# for our server.env.test2 test record now
|
|
"[server_env_test2.foo]\n"
|
|
"host=foo2_value\n"
|
|
)
|
|
cls.foo = cls.env['server.env.test'].create({'name': 'foo'})
|
|
cls.foo2 = cls.env['server.env.test2'].create({
|
|
'name': 'foo',
|
|
})
|
|
|
|
def test_env_computed_fields_read(self):
|
|
"""Read values from the config in env-computed fields"""
|
|
with self.load_config(self.public):
|
|
self.assertEqual(self.foo.name, 'foo')
|
|
self.assertEqual(self.foo2.name, 'foo')
|
|
self.assertEqual(self.foo.host, 'foo_value')
|
|
self.assertEqual(self.foo2.host, 'foo2_value')
|
|
|
|
def test_env_computed_fields_not_editable(self):
|
|
"""Env-computed fields without key in config can be written"""
|
|
# we can create the record even if we didn't provide
|
|
# the field host which was required
|
|
with self.load_config(self.public):
|
|
self.assertEqual(self.foo.host, 'foo_value')
|
|
self.assertFalse(self.foo.host_env_is_editable)
|
|
self.assertEqual(self.foo2.host, 'foo2_value')
|
|
self.assertFalse(self.foo2.host_env_is_editable)
|
|
|
|
def test_env_computed_fields_editable(self):
|
|
"""Env-computed fields without key in config can be written"""
|
|
# we can create the record even if we didn't provide
|
|
# the field host which was required
|
|
with self.load_config():
|
|
self.assertFalse(self.foo.host)
|
|
self.assertTrue(self.foo.host_env_is_editable)
|
|
self.assertFalse(self.foo2.host)
|
|
self.assertTrue(self.foo2.host_env_is_editable)
|
|
|
|
self.foo.host_env_default = 'foo_value'
|
|
self.foo.invalidate_cache()
|
|
self.assertEqual(self.foo.host, 'foo_value')
|
|
|
|
self.foo2.host_env_default = 'foo2_value'
|
|
self.foo2.invalidate_cache()
|
|
self.assertEqual(self.foo2.host, 'foo2_value')
|
|
|
|
self.foo.host = 'foo_new_value'
|
|
self.foo.invalidate_cache()
|
|
self.assertEqual(self.foo.host, 'foo_new_value')
|
|
|
|
self.foo2.host = 'foo2_new_value'
|
|
self.foo2.invalidate_cache()
|
|
self.assertEqual(self.foo2.host, 'foo2_new_value')
|
|
|
|
|
|
class TestServerEnvMixinInherits(ServerEnvironmentCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.public = (
|
|
# global for all server.env.test records
|
|
"[server_env_test]\n"
|
|
"host=global_value\n"
|
|
# for our server.env.test test record now
|
|
"[server_env_test.foo]\n"
|
|
"host=foo_value\n"
|
|
# for our server.env.test.inherits1 test record now
|
|
"[server_env_test_inherits1.foo]\n"
|
|
"host=foo_inherits_value\n"
|
|
# for our server.env.test.inherits2 test record now
|
|
"[server_env_test_inherits2.foo]\n"
|
|
"host=foo_inherits_value\n"
|
|
)
|
|
cls.foo = cls.env['server.env.test'].create({'name': 'foo'})
|
|
cls.foo_inh1 = cls.env['server.env.test.inherits1'].create({
|
|
'name': 'foo'
|
|
})
|
|
cls.foo_inh2 = cls.env['server.env.test.inherits2'].create({
|
|
'name': 'foo'
|
|
})
|
|
|
|
def test_env_computed_fields_read(self):
|
|
"""Read values from the config in env-computed fields"""
|
|
with self.load_config(self.public):
|
|
self.assertEqual(self.foo.name, 'foo')
|
|
self.assertEqual(self.foo_inh1.name, 'foo')
|
|
self.assertEqual(self.foo_inh2.name, 'foo')
|
|
self.assertEqual(self.foo.host, 'foo_value')
|
|
# inh1 does not redefine the host field so has the
|
|
# same value than the parent record (delegate)
|
|
self.assertEqual(self.foo_inh1.host, 'foo_value')
|
|
# inh2 redefines self.the host field so has its own value
|
|
self.assertEqual(self.foo_inh2.host, 'foo_inherits_value')
|
|
|
|
def test_env_computed_fields_not_editable(self):
|
|
"""Env-computed fields without key in config can be written"""
|
|
with self.load_config(self.public):
|
|
self.assertEqual(self.foo.host, 'foo_value')
|
|
self.assertFalse(self.foo.host_env_is_editable)
|
|
self.assertEqual(self.foo_inh1.host, 'foo_value')
|
|
self.assertFalse(self.foo_inh1.host_env_is_editable)
|
|
self.assertEqual(self.foo_inh2.host, 'foo_inherits_value')
|
|
self.assertFalse(self.foo_inh2.host_env_is_editable)
|
|
|
|
def test_env_computed_fields_editable(self):
|
|
"""Env-computed fields without key in config can be written"""
|
|
with self.load_config():
|
|
self.assertFalse(self.foo.host)
|
|
self.assertTrue(self.foo.host_env_is_editable)
|
|
self.assertFalse(self.foo_inh1.host)
|
|
self.assertTrue(self.foo_inh1.host_env_is_editable)
|
|
self.assertFalse(self.foo_inh2.host)
|
|
self.assertTrue(self.foo_inh2.host_env_is_editable)
|
|
|
|
self.foo.host_env_default = 'foo_value'
|
|
self.foo.invalidate_cache()
|
|
self.assertEqual(self.foo.host, 'foo_value')
|
|
|
|
self.foo.host = 'foo_new_value'
|
|
self.foo.invalidate_cache()
|
|
self.assertEqual(self.foo.host, 'foo_new_value')
|
|
|
|
self.foo_inh1.host_env_default = 'foo2_value'
|
|
self.foo_inh1.invalidate_cache()
|
|
self.assertEqual(self.foo_inh1.host, 'foo2_value')
|
|
self.assertEqual(self.foo_inh1.base_id.host, 'foo2_value')
|
|
|
|
self.foo_inh1.host = 'foo2_new_value'
|
|
self.foo_inh1.invalidate_cache()
|
|
self.assertEqual(self.foo_inh1.host, 'foo2_new_value')
|
|
self.assertEqual(self.foo_inh1.base_id.host, 'foo2_new_value')
|
|
|
|
self.foo_inh2.host_env_default = 'foo_inherits_value'
|
|
self.foo_inh2.base_id.host_env_default = 'bar_value'
|
|
self.foo_inh2.invalidate_cache()
|
|
self.foo_inh2.base_id.invalidate_cache()
|
|
self.assertEqual(self.foo_inh2.host, 'foo_inherits_value')
|
|
self.assertEqual(self.foo_inh2.base_id.host, 'bar_value')
|
|
|
|
self.foo_inh2.host = 'foo_inherits_new_value'
|
|
self.foo_inh2.base_id.host = 'bar_new_value'
|
|
self.foo_inh2.invalidate_cache()
|
|
self.foo_inh2.base_id.invalidate_cache()
|
|
self.assertEqual(self.foo_inh2.host, 'foo_inherits_new_value')
|
|
self.assertEqual(self.foo_inh2.base_id.host, 'bar_new_value')
|