From 456832c15be26cbc0e69251d80589c8d0d860b0e Mon Sep 17 00:00:00 2001 From: Akim Juillerat Date: Thu, 13 Feb 2020 11:03:36 +0100 Subject: [PATCH] server_environment_ircp: Fix tests using contextmanager Before, the values used in the tests were coming from server_environment_files_sample that were made available using a symbolic link in .travis.yml. Now, it's loaded dynamically at test execution. --- .../tests/test_server_environment_ircp.py | 115 +++++++++++------- 1 file changed, 68 insertions(+), 47 deletions(-) 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 7f5b519..b8a0337 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 @@ -3,14 +3,20 @@ from odoo.exceptions import UserError from odoo.modules.module import get_resource_path -from odoo.tests import common from odoo.tools import convert_file +from odoo.addons.server_environment.tests.common import ServerEnvironmentCase -class TestEnv(common.TransactionCase): +from ..models import ir_config_parameter + + +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( @@ -25,59 +31,74 @@ 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")