67 lines
2.7 KiB
Python
67 lines
2.7 KiB
Python
# Copyright 2026 Ecocentral, Criptomart
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
|
|
|
from odoo.tests.common import TransactionCase
|
|
from odoo.tests.common import tagged
|
|
|
|
from odoo.addons.l10n_es_partner_ccpae.models.res_partner import DEFAULT_CCPAE_ORGANISMO
|
|
|
|
|
|
@tagged("post_install", "-at_install")
|
|
class TestResPartnerCcpae(TransactionCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.partner = cls.env["res.partner"].create(
|
|
{
|
|
"name": "Productor Ecològic Test",
|
|
"is_company": True,
|
|
}
|
|
)
|
|
# `create` crida `_track_discard()`, que apunta `None` com a valors
|
|
# inicials del registre per no traçar la pròpia creació. Mentre aquest
|
|
# `None` hi sigui, cap `write` posterior deixa rastre. Buidant el
|
|
# precommit aquí es descarta i els tests ja poden traçar.
|
|
cls._flush_tracking(cls.env)
|
|
|
|
@staticmethod
|
|
def _flush_tracking(env):
|
|
env.flush_all()
|
|
env.cr.precommit.run()
|
|
|
|
def _tracked_fields(self):
|
|
"""Camps amb rastre al xatter del contacte, després d'un `write`.
|
|
|
|
`mail.thread.write()` no crea el `mail.message` de seguiment al moment:
|
|
el deixa encuat com a callback de precommit (és el que desencalla
|
|
`MailCommon.flush_tracking` del core). I un cop creat cal invalidar el
|
|
contacte, perquè `message_ids` ja s'havia llegit i el one2many es queda
|
|
amb el valor antic a la memòria cau.
|
|
"""
|
|
self._flush_tracking(self.env)
|
|
self.partner.invalidate_recordset()
|
|
return self.partner.message_ids.tracking_value_ids.mapped("field_id.name")
|
|
|
|
def test_organismo_default(self):
|
|
"""Un contacte nou porta el codi del CCPAE per defecte."""
|
|
self.assertEqual(self.partner.ccpae_organismo, DEFAULT_CCPAE_ORGANISMO)
|
|
self.assertFalse(self.partner.ccpae_operador)
|
|
|
|
def test_campos_con_seguimiento(self):
|
|
"""Escriure als camps CCPAE deixa rastre al xatter."""
|
|
self.partner.write({"ccpae_operador": "CT-12345"})
|
|
self.assertIn(
|
|
"ccpae_operador",
|
|
self._tracked_fields(),
|
|
"El canvi de ccpae_operador ha de quedar registrat al xatter",
|
|
)
|
|
|
|
self.partner.write({"ccpae_organismo": "ES-ECO-020-CT"})
|
|
self.assertIn("ccpae_organismo", self._tracked_fields())
|
|
|
|
def test_vista_heredada_valida(self):
|
|
"""La vista heretada s'ancora bé al formulari de `base` de la 18.0."""
|
|
view = self.env.ref("l10n_es_partner_ccpae.res_partner_view_form_ccpae")
|
|
arch = self.env["res.partner"].get_view(view.id, "form")["arch"]
|
|
self.assertIn("ccpae_operador", arch)
|
|
self.assertIn("ccpae_organismo", arch)
|