social/mail_improved_tracking_value/tests/test_improved_tracking_valu...

185 lines
7.0 KiB
Python

# Copyright 2018 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
import json
from odoo.tests.common import TransactionCase
class TestImproveTrackingValue(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.model = cls.env["mail.tracking.value"]
cls.msg = cls.env["mail.message"].create({"message_type": "email"})
cls.mr = cls.env.ref("base.res_partner_title_mister")
cls.dr = cls.env.ref("base.res_partner_title_doctor")
cls.mm = cls.env.ref("base.res_partner_title_madam")
cls.pf = cls.env.ref("base.res_partner_title_prof")
def test_change_one2many(self):
"""Test tracking one2many changes"""
tracking = self.model.create_tracking_values(
self.mr,
self.dr,
"title",
{"string": "TestingField", "type": "one2many"},
tracking_sequence=100,
model_name="res.partner",
)
self.assertEqual(tracking["old_value_char"], self.mr.display_name)
self.assertEqual(tracking["new_value_char"], self.dr.display_name)
self.assertEqual(tracking["old_value_text"], json.dumps([self.mr.id]))
self.assertEqual(tracking["new_value_text"], json.dumps([self.dr.id]))
def test_change_one2many_empty(self):
"""Test tracking one2many changes emtpy"""
tracking = self.model.create_tracking_values(
self.mr,
None,
"title",
{"string": "TestingField", "type": "one2many"},
tracking_sequence=100,
model_name="res.partner",
)
self.assertEqual(tracking["old_value_char"], self.mr.display_name)
self.assertEqual(tracking["new_value_char"], "")
self.assertEqual(tracking["old_value_text"], json.dumps([self.mr.id]))
self.assertEqual(tracking["new_value_text"], json.dumps([]))
def test_change_many2many(self):
"""Test tracking many2many changes"""
oldvalue = self.env["res.partner.title"].browse([self.mr.id, self.dr.id])
newvalue = self.env["res.partner.title"].browse([self.mm.id, self.pf.id])
tracking = self.model.create_tracking_values(
oldvalue,
newvalue,
"title",
{"string": "TestingField", "type": "many2many"},
tracking_sequence=100,
model_name="res.partner",
)
self.assertEqual(
tracking["old_value_char"],
self.mr.display_name + ", " + self.dr.display_name,
)
self.assertEqual(
tracking["new_value_char"],
self.mm.display_name + ", " + self.pf.display_name,
)
self.assertEqual(tracking["old_value_text"], json.dumps(oldvalue.ids))
self.assertEqual(tracking["new_value_text"], json.dumps(newvalue.ids))
def test_char_tracking_value(self):
r = self.model.create(
{
"mail_message_id": self.msg.id,
"field_type": "char",
"old_value_char": "weakness",
"new_value_char": "strength",
"field": self.env["ir.model.fields"]._get("res.partner", "name").id,
"field_desc": "desc",
}
)
self.assertEqual(r.old_value_formatted, "weakness")
self.assertEqual(r.new_value_formatted, "strength")
def test_many2many_tracking_value(self):
r = self.model.create(
{
"mail_message_id": self.msg.id,
"field_type": "many2many",
"old_value_char": "123",
"new_value_char": "456",
"field": self.env["ir.model.fields"]._get("res.partner", "name").id,
"field_desc": "desc",
}
)
self.assertEqual(r.old_value_formatted, "123")
self.assertEqual(r.new_value_formatted, "456")
def test_one2many_tracking_value(self):
r = self.model.create(
{
"mail_message_id": self.msg.id,
"field_type": "one2many",
"old_value_char": "123",
"new_value_char": "456",
"field": self.env["ir.model.fields"]._get("res.partner", "name").id,
"field_desc": "desc",
}
)
self.assertEqual(r.old_value_formatted, "123")
self.assertEqual(r.new_value_formatted, "456")
def test_integer_tracking_value(self):
r = self.model.create(
{
"mail_message_id": self.msg.id,
"field_type": "integer",
"old_value_integer": 1,
"new_value_integer": 3,
"field": self.env["ir.model.fields"]._get("res.partner", "name").id,
"field_desc": "desc",
}
)
self.assertEqual(r.old_value_formatted, str(1))
self.assertEqual(r.new_value_formatted, str(3))
def test_float_tracking_value(self):
r = self.model.create(
{
"mail_message_id": self.msg.id,
"field_type": "float",
"old_value_float": 1.1,
"new_value_float": 3.14159,
"field": self.env["ir.model.fields"]._get("res.partner", "name").id,
"field_desc": "desc",
}
)
self.assertEqual(r.old_value_formatted, str(1.1))
self.assertEqual(r.new_value_formatted, str(3.14159))
def test_monetary_tracking_value(self):
r = self.model.create(
{
"mail_message_id": self.msg.id,
"field_type": "monetary",
"old_value_monetary": 3.45,
"new_value_monetary": 5.45,
"field": self.env["ir.model.fields"]._get("res.partner", "name").id,
"field_desc": "desc",
}
)
self.assertEqual(r.old_value_formatted, str(3.45))
self.assertEqual(r.new_value_formatted, str(5.45))
def test_datetime_tracking_value(self):
r = self.model.create(
{
"mail_message_id": self.msg.id,
"field_type": "datetime",
"old_value_datetime": "2018-01-01",
"new_value_datetime": "2018-01-04",
"field": self.env["ir.model.fields"]._get("res.partner", "name").id,
"field_desc": "desc",
}
)
self.assertEqual(r.old_value_formatted, "2018-01-01 00:00:00")
self.assertEqual(r.new_value_formatted, "2018-01-04 00:00:00")
def test_text_tracking_value(self):
r = self.model.create(
{
"mail_message_id": self.msg.id,
"field_type": "text",
"old_value_text": "previous",
"new_value_text": "next",
"field": self.env["ir.model.fields"]._get("res.partner", "name").id,
"field_desc": "desc",
}
)
self.assertEqual(r.old_value_formatted, "previous")
self.assertEqual(r.new_value_formatted, "next")