Skip to content

Commit

Permalink
[MIG] a clean way to declare test models
Browse files Browse the repository at this point in the history
  • Loading branch information
sbidoul committed Jan 7, 2018
1 parent c90976e commit 99fa7b9
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 47 deletions.
44 changes: 10 additions & 34 deletions mis_builder/tests/common.py
Original file line number Diff line number Diff line change
@@ -1,43 +1,19 @@
# Copyright 2017 ACSONE SA/NV (<http://acsone.eu>)
# 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):
Expand Down
27 changes: 14 additions & 13 deletions mis_builder/tests/test_kpi_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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')
Expand Down

0 comments on commit 99fa7b9

Please sign in to comment.