|
|
# Copyright 2020 Creu Blanca # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.exceptions import ValidationError from odoo.tests.common import TransactionCase
class TestFormula(TransactionCase): def setUp(self): super().setUp() self.kpi = self.env["kpi.kpi"].create( {"name": "DEMO KPI", "widget": "number", "computation_method": "code"} )
def test_forbidden_words_01(self): self.kpi.code = """
result = {"value": 0} self.env.cr.commit() """
with self.assertRaises(ValidationError): self.kpi.compute()
def test_forbidden_words_02(self): self.kpi.code = """
result = {"value": 0} self.env.cr.rollback() """
with self.assertRaises(ValidationError): self.kpi.compute()
def test_forbidden_words_03(self): self.kpi.code = """
result = {"value": 0} self.env.cr.execute("CoMMiT") """
with self.assertRaises(ValidationError): self.kpi.compute()
def test_computation(self): self.assertFalse(self.kpi.value) self.kpi.compute() self.assertEqual(self.kpi.value, {}) self.kpi.code = """
result = {{}} result['value'] = len(model.search([('id', '=', {})])) result['previous'] = len(model.search([('id', '!=', {})])) """.format(
self.kpi.id, self.kpi.id, ) self.kpi.compute() value = self.kpi.value self.assertTrue(value.get("value")) self.assertEqual(value.get("value"), 1) self.assertEqual(value.get("previous"), self.kpi.search_count([]) - 1) self.assertFalse(self.kpi.history_ids)
def test_computation_history(self): self.assertFalse(self.kpi.value) self.kpi.store_history = True self.kpi.compute() self.assertTrue(self.kpi.history_ids) self.assertEqual(self.kpi.value, {}) self.kpi.code = """
result = {{}} result['value'] = len(model.search([('id', '=', {})])) result['previous'] = len(model.search([('id', '!=', {})])) """.format(
self.kpi.id, self.kpi.id, ) self.kpi.compute() value = self.kpi.value self.assertTrue(value.get("value")) self.assertEqual(value.get("value"), 1) self.assertEqual(value.get("previous"), self.kpi.search_count([]) - 1) self.assertTrue(self.kpi.history_ids)
|