mirror of
https://gitlab.com/flectra-community/reporting-engine.git
synced 2024-11-15 10:42:07 +00:00
187 lines
7.2 KiB
Python
187 lines
7.2 KiB
Python
|
# Copyright 2020 NextERP Romania SRL
|
||
|
# Copyright 2021 Tecnativa - Víctor Martínez
|
||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||
|
from flectra import Command
|
||
|
from flectra.exceptions import ValidationError
|
||
|
from flectra.tests import common
|
||
|
from flectra.tools.misc import mute_logger
|
||
|
|
||
|
from .fake_models import ResUsers, setup_test_model, teardown_test_model
|
||
|
|
||
|
|
||
|
class TestCommentTemplate(common.TransactionCase):
|
||
|
@classmethod
|
||
|
def setUpClass(cls):
|
||
|
super().setUpClass()
|
||
|
setup_test_model(cls.env, ResUsers)
|
||
|
cls.user_obj = cls.env.ref("base.model_res_users")
|
||
|
cls.user = cls.env.ref("base.user_demo")
|
||
|
cls.user2 = cls.env.ref("base.demo_user0")
|
||
|
cls.partner_id = cls.env.ref("base.res_partner_12")
|
||
|
cls.partner2_id = cls.env.ref("base.res_partner_10")
|
||
|
cls.ResPartnerTitle = cls.env["res.partner.title"]
|
||
|
cls.main_company = cls.env.ref("base.main_company")
|
||
|
cls.company = cls.env["res.company"].create({"name": "Test company"})
|
||
|
cls.before_template_id = cls.env["base.comment.template"].create(
|
||
|
{
|
||
|
"name": "Top template",
|
||
|
"text": "Text before lines",
|
||
|
"models": cls.user_obj.model,
|
||
|
"company_id": cls.company.id,
|
||
|
}
|
||
|
)
|
||
|
cls.after_template_id = cls.env["base.comment.template"].create(
|
||
|
{
|
||
|
"name": "Bottom template",
|
||
|
"position": "after_lines",
|
||
|
"text": "Text after lines",
|
||
|
"models": cls.user_obj.model,
|
||
|
"company_id": cls.company.id,
|
||
|
}
|
||
|
)
|
||
|
cls.user.partner_id.base_comment_template_ids = [
|
||
|
(4, cls.before_template_id.id),
|
||
|
(4, cls.after_template_id.id),
|
||
|
]
|
||
|
|
||
|
@classmethod
|
||
|
def tearDownClass(cls):
|
||
|
teardown_test_model(cls.env, ResUsers)
|
||
|
return super().tearDownClass()
|
||
|
|
||
|
def test_template_model_ids(self):
|
||
|
self.assertIn(
|
||
|
self.user_obj.model, self.before_template_id.mapped("model_ids.model")
|
||
|
)
|
||
|
self.assertEqual(len(self.before_template_id.model_ids), 1)
|
||
|
self.assertIn(
|
||
|
self.user_obj.model, self.after_template_id.mapped("model_ids.model")
|
||
|
)
|
||
|
self.assertEqual(len(self.after_template_id.model_ids), 1)
|
||
|
|
||
|
def test_template_models_constrains(self):
|
||
|
with self.assertRaises(ValidationError):
|
||
|
self.env["base.comment.template"].create(
|
||
|
{
|
||
|
"name": "Custom template",
|
||
|
"text": "Text",
|
||
|
"models": "incorrect.model",
|
||
|
"company_id": self.company.id,
|
||
|
}
|
||
|
)
|
||
|
|
||
|
def test_template_display_name(self):
|
||
|
self.assertEqual(
|
||
|
self.before_template_id.display_name,
|
||
|
"Top template (Top)",
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.after_template_id.display_name,
|
||
|
"Bottom template (Bottom)",
|
||
|
)
|
||
|
|
||
|
def test_general_template(self):
|
||
|
# Need to force _compute because only trigger when partner_id have changed
|
||
|
self.user._compute_comment_template_ids()
|
||
|
# Check getting default comment template
|
||
|
self.assertTrue(self.before_template_id in self.user.comment_template_ids)
|
||
|
self.assertTrue(self.after_template_id in self.user.comment_template_ids)
|
||
|
|
||
|
def test_partner_template(self):
|
||
|
self.partner2_id.base_comment_template_ids = [
|
||
|
(4, self.before_template_id.id),
|
||
|
(4, self.after_template_id.id),
|
||
|
]
|
||
|
self.assertTrue(
|
||
|
self.before_template_id in self.partner2_id.base_comment_template_ids
|
||
|
)
|
||
|
self.assertTrue(
|
||
|
self.after_template_id in self.partner2_id.base_comment_template_ids
|
||
|
)
|
||
|
|
||
|
def test_partner_template_domain(self):
|
||
|
# Check getting the comment template if domain is set
|
||
|
self.partner2_id.base_comment_template_ids = [
|
||
|
(4, self.before_template_id.id),
|
||
|
(4, self.after_template_id.id),
|
||
|
]
|
||
|
self.before_template_id.domain = "[('id', 'in', %s)]" % self.user.ids
|
||
|
self.assertTrue(
|
||
|
self.before_template_id in self.partner2_id.base_comment_template_ids
|
||
|
)
|
||
|
self.assertTrue(
|
||
|
self.before_template_id not in self.partner_id.base_comment_template_ids
|
||
|
)
|
||
|
|
||
|
def test_render_comment_text(self):
|
||
|
expected_text = "Test comment render %s" % self.user.name
|
||
|
self.before_template_id.text = "Test comment render {{object.name}}"
|
||
|
with self.with_user(self.user.login):
|
||
|
self.assertEqual(
|
||
|
self.user.render_comment(self.before_template_id), expected_text
|
||
|
)
|
||
|
|
||
|
def test_render_comment_text_(self):
|
||
|
ro_RO_lang = (
|
||
|
self.env["res.lang"]
|
||
|
.with_context(active_test=False)
|
||
|
.search([("code", "=", "ro_RO")])
|
||
|
)
|
||
|
with mute_logger("flectra.addons.base.models.ir_translation"):
|
||
|
self.env["base.language.install"].create(
|
||
|
{"overwrite": True, "lang_ids": [(6, 0, [ro_RO_lang.id])]}
|
||
|
).lang_install()
|
||
|
|
||
|
module = self.env.ref("base.module_test_translation_import")
|
||
|
export = self.env["base.language.export"].create(
|
||
|
{"lang": "ro_RO", "format": "po", "modules": [Command.set([module.id])]}
|
||
|
)
|
||
|
export.act_getfile()
|
||
|
po_file = export.data
|
||
|
self.assertIsNotNone(po_file)
|
||
|
|
||
|
partner_title = self.ResPartnerTitle.create(
|
||
|
{"name": "Ambassador", "shortcut": "Amb."}
|
||
|
)
|
||
|
# Adding translated terms
|
||
|
ctx = dict(lang="ro_RO")
|
||
|
partner_title.with_context(**ctx).write(
|
||
|
{"name": "Ambasador", "shortcut": "Amb."}
|
||
|
)
|
||
|
self.user.partner_id.title = partner_title
|
||
|
self.before_template_id.text = "Test comment render {{object.title.name}}"
|
||
|
|
||
|
expected_en_text = "Test comment render Ambassador"
|
||
|
expected_ro_text = "Test comment render Ambasador"
|
||
|
with self.with_user(self.user.login):
|
||
|
self.assertEqual(
|
||
|
self.user.render_comment(self.before_template_id), expected_en_text
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
self.user.with_context(**ctx).render_comment(self.before_template_id),
|
||
|
expected_ro_text,
|
||
|
)
|
||
|
|
||
|
def test_partner_template_wizaard(self):
|
||
|
partner_preview = (
|
||
|
self.env["base.comment.template.preview"]
|
||
|
.with_context(default_base_comment_template_id=self.before_template_id.id)
|
||
|
.create({})
|
||
|
)
|
||
|
self.assertTrue(partner_preview)
|
||
|
default = (
|
||
|
self.env["base.comment.template.preview"]
|
||
|
.with_context(default_base_comment_template_id=self.before_template_id.id)
|
||
|
.default_get(partner_preview._fields)
|
||
|
)
|
||
|
self.assertTrue(default.get("base_comment_template_id"))
|
||
|
resource_ref = partner_preview._selection_target_model()
|
||
|
self.assertTrue(len(resource_ref) >= 2)
|
||
|
partner_preview._compute_no_record()
|
||
|
self.assertTrue(partner_preview.no_record)
|
||
|
|
||
|
def test_partner_commercial_fields(self):
|
||
|
self.assertTrue(
|
||
|
"base_comment_template_ids" in self.env["res.partner"]._commercial_fields()
|
||
|
)
|