diff --git a/server_environment/tests/common.py b/server_environment/tests/common.py index 7476760..f59d9ff 100644 --- a/server_environment/tests/common.py +++ b/server_environment/tests/common.py @@ -8,8 +8,7 @@ from unittest.mock import patch from odoo.tests import common from odoo.addons.server_environment import server_env -import odoo.addons.server_environment.models.server_env_mixin as \ - server_env_mixin +import odoo.addons.server_environment.models.server_env_mixin as server_env_mixin class ServerEnvironmentCase(common.SavepointCase): @@ -36,14 +35,13 @@ class ServerEnvironmentCase(common.SavepointCase): yield @contextmanager - def load_config(self, public=None, secret=None): - original_serv_config = server_env_mixin.serv_config + def load_config(self, public=None, secret=None, serv_config_class=server_env_mixin): + original_serv_config = serv_config_class.serv_config try: - with self.set_config_dir(None), \ - self.set_env_variables(public, secret): + with self.set_config_dir(None), self.set_env_variables(public, secret): parser = server_env._load_config() - server_env_mixin.serv_config = parser + serv_config_class.serv_config = parser yield finally: - server_env_mixin.serv_config = original_serv_config + serv_config_class.serv_config = original_serv_config diff --git a/server_environment_ir_config_parameter/tests/test_server_environment_ircp.py b/server_environment_ir_config_parameter/tests/test_server_environment_ircp.py index a1c5f47..adb1eef 100644 --- a/server_environment_ir_config_parameter/tests/test_server_environment_ircp.py +++ b/server_environment_ir_config_parameter/tests/test_server_environment_ircp.py @@ -1,17 +1,21 @@ # Copyright 2016-2018 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo.tests import common +from odoo.exceptions import UserError from odoo.tools import convert_file from odoo.modules.module import get_resource_path -from odoo.exceptions import UserError +from odoo.addons.server_environment.tests.common import ServerEnvironmentCase + +from ..models import ir_config_parameter -class TestEnv(common.TransactionCase): - +class TestEnv(ServerEnvironmentCase): def setUp(self): super().setUp() self.ICP = self.env['ir.config_parameter'] + self.env_config = ( + "[ir.config_parameter]\n" "ircp_from_config=config_value\n" "ircp_empty=\n" + ) def _load_xml(self, module, filepath): convert_file( @@ -21,60 +25,75 @@ class TestEnv(common.TransactionCase): def test_get_param(self): """ Get system parameter from config """ - # it's not in db - res = self.ICP.search([('key', '=', 'ircp_from_config')]) - self.assertFalse(res) - # read so it's created in db - value = self.ICP.get_param('ircp_from_config') - self.assertEqual(value, 'config_value') - # now it's in db - res = self.ICP.search([('key', '=', 'ircp_from_config')]) - self.assertEqual(len(res), 1) - self.assertEqual(res.value, 'config_value') + with self.load_config( + public=self.env_config, serv_config_class=ir_config_parameter + ): + # it's not in db + res = self.ICP.search([('key', '=', 'ircp_from_config')]) + self.assertFalse(res) + # read so it's created in db + value = self.ICP.get_param('ircp_from_config') + self.assertEqual(value, 'config_value') + # now it's in db + res = self.ICP.search([('key', '=', 'ircp_from_config')]) + self.assertEqual(len(res), 1) + self.assertEqual(res.value, 'config_value') def test_set_param_1(self): """ We can't set parameters that are in config file """ - # when creating, the value is overridden by config file - self.ICP.set_param('ircp_from_config', 'new_value') - value = self.ICP.get_param('ircp_from_config') - self.assertEqual(value, 'config_value') - # when writing, the value is overridden by config file - res = self.ICP.search([('key', '=', 'ircp_from_config')]) - self.assertEqual(len(res), 1) - res.write({'value': 'new_value'}) - value = self.ICP.get_param('ircp_from_config') - self.assertEqual(value, 'config_value') - # unlink works normally... - res = self.ICP.search([('key', '=', 'ircp_from_config')]) - self.assertEqual(len(res), 1) - res.unlink() - res = self.ICP.search([('key', '=', 'ircp_from_config')]) - self.assertEqual(len(res), 0) - # but the value is recreated when getting param again - value = self.ICP.get_param('ircp_from_config') - self.assertEqual(value, 'config_value') - res = self.ICP.search([('key', '=', 'ircp_from_config')]) - self.assertEqual(len(res), 1) + with self.load_config( + public=self.env_config, serv_config_class=ir_config_parameter + ): + # when creating, the value is overridden by config file + self.ICP.set_param('ircp_from_config', 'new_value') + value = self.ICP.get_param('ircp_from_config') + self.assertEqual(value, 'config_value') + # when writing, the value is overridden by config file + res = self.ICP.search([('key', '=', 'ircp_from_config')]) + self.assertEqual(len(res), 1) + res.write({'value': 'new_value'}) + value = self.ICP.get_param('ircp_from_config') + self.assertEqual(value, 'config_value') + # unlink works normally... + res = self.ICP.search([('key', '=', 'ircp_from_config')]) + self.assertEqual(len(res), 1) + res.unlink() + res = self.ICP.search([('key', '=', 'ircp_from_config')]) + self.assertEqual(len(res), 0) + # but the value is recreated when getting param again + value = self.ICP.get_param('ircp_from_config') + self.assertEqual(value, 'config_value') + res = self.ICP.search([('key', '=', 'ircp_from_config')]) + self.assertEqual(len(res), 1) def test_set_param_2(self): """ We can set parameters that are not in config file """ - self.ICP.set_param('some.param', 'new_value') - self.assertEqual(self.ICP.get_param('some.param'), 'new_value') - res = self.ICP.search([('key', '=', 'some.param')]) - res.unlink() - res = self.ICP.search([('key', '=', 'some.param')]) - self.assertFalse(res) + with self.load_config( + public=self.env_config, serv_config_class=ir_config_parameter + ): + self.ICP.set_param('some.param', 'new_value') + self.assertEqual(self.ICP.get_param('some.param'), 'new_value') + res = self.ICP.search([('key', '=', 'some.param')]) + res.unlink() + res = self.ICP.search([('key', '=', 'some.param')]) + self.assertFalse(res) def test_empty(self): """ Empty config values cause error """ - with self.assertRaises(UserError): - self.ICP.get_param('ircp_empty') - self.assertEqual(self.ICP.get_param('ircp_nonexistant'), False) + with self.load_config( + public=self.env_config, serv_config_class=ir_config_parameter + ): + with self.assertRaises(UserError): + self.ICP.get_param('ircp_empty') + self.assertEqual(self.ICP.get_param('ircp_nonexistant'), False) def test_override_xmldata(self): - self._load_xml( - 'server_environment_ir_config_parameter', - 'tests/config_param_test.xml' - ) - value = self.ICP.get_param('ircp_from_config') - self.assertEqual(value, 'config_value') + with self.load_config( + public=self.env_config, serv_config_class=ir_config_parameter + ): + self._load_xml( + 'server_environment_ir_config_parameter', + 'tests/config_param_test.xml' + ) + value = self.ICP.get_param('ircp_from_config') + self.assertEqual(value, 'config_value')