From 99fa7b98aa67e240615389a52afffe8ce142da65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bidoul=20=28ACSONE=29?= Date: Sun, 7 Jan 2018 15:23:11 +0100 Subject: [PATCH] [MIG] a clean way to declare test models --- mis_builder/tests/common.py | 44 +++++++----------------------- mis_builder/tests/test_kpi_data.py | 27 +++++++++--------- 2 files changed, 24 insertions(+), 47 deletions(-) diff --git a/mis_builder/tests/common.py b/mis_builder/tests/common.py index 4e4a173c5..c912354d4 100644 --- a/mis_builder/tests/common.py +++ b/mis_builder/tests/common.py @@ -1,43 +1,19 @@ # Copyright 2017 ACSONE SA/NV () # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -import odoo - -def _make_acl(env, model_name): - """ make a dummy acl and commit it - so we don't get warning about missing acl - """ - model_id = env['ir.model'].search([('name', '=', model_name)]).id - acl = env['ir.model.access'].search([('model_id', '=', model_id)]) - if acl: - return - with odoo.api.Environment.manage(): - with odoo.registry(env.cr.dbname).cursor() as new_cr: - new_env = odoo.api.Environment(new_cr, env.uid, env.context) - new_env['ir.model.access'].create(dict( - model_id=model_id, - name='dummy acl for ' + model_name, - )) - new_env.cr.commit() +def setup_test_model(env, model_cls): + model_cls._build_model(env.registry, env.cr) + env.registry.setup_models(env.cr) + env.registry.init_models( + env.cr, [model_cls._name], + dict(env.context, update_custom_fields=True) + ) -def init_test_model(env, model_cls): - model_cls._build_model(env.registry, env.cr) - model = env[model_cls._name].with_context(todo=[]) - model._prepare_setup() - model._setup_base() - model._setup_fields() - model._setup_complete() - model._auto_init() - model.init() - # setup models; this automatically adds model in registry - odoo.registry(env.cr.dbname).setup_models(env.cr) - # update database schema - odoo.registry(env.cr.dbname).init_models( - env.cr, [model._name], dict(env.context, update_custom_fields=True)) - env.cr.commit() - _make_acl(env, model._name) +def teardown_test_model(env, model_cls): + del env.registry.models[model_cls._name] + env.registry.setup_models(env.cr) def _zip(iter1, iter2): diff --git a/mis_builder/tests/test_kpi_data.py b/mis_builder/tests/test_kpi_data.py index 179ae0b06..a73de8a0b 100644 --- a/mis_builder/tests/test_kpi_data.py +++ b/mis_builder/tests/test_kpi_data.py @@ -2,27 +2,23 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo import models -from odoo.tests import common +from odoo.tests.common import SavepointCase from ..models.mis_kpi_data import ACC_SUM, ACC_AVG -from .common import init_test_model +from .common import setup_test_model, teardown_test_model -class TestKpiData(common.SavepointCase): - # pylint: disable=missing-return +class TestKpiData(SavepointCase): + + class MisKpiDataTestItem(models.Model): + + _name = 'mis.kpi.data.test.item' + _inherit = 'mis.kpi.data' @classmethod def setUpClass(cls): super(TestKpiData, cls).setUpClass() - - class MisKpiDataTestItem(models.Model): - - _name = 'mis.kpi.data.test.item' - _inherit = 'mis.kpi.data' - _register = True - _auto = True - - init_test_model(cls.env, MisKpiDataTestItem) + setup_test_model(cls.env, cls.MisKpiDataTestItem) report = cls.env['mis.report'].create(dict( name='test report', @@ -66,6 +62,11 @@ class MisKpiDataTestItem(models.Model): amount=3, )) + @classmethod + def tearDownClass(cls): + teardown_test_model(cls.env, cls.MisKpiDataTestItem) + super(TestKpiData, cls).tearDownClass() + def test_kpi_data_name(self): self.assertEqual(self.kd11.name, 'k1: 2017-05-01 - 2017-05-10') self.assertEqual(self.kd12.name, 'k1: 2017-05-11 - 2017-05-20')