Skip to content
Snippets Groups Projects

Fix RelationToMany calling undefined fonction.

Merged Vincent Hatakeyama requested to merge topic/16.0/backport into branch/16.0
4 files
+ 153
57
Compare changes
  • Side-by-side
  • Inline
Files
4
+ 49
0
@@ -17,9 +17,10 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from typing import Any
from odoo import tests
from odoo.addons.converter import (
Field,
Model,
@@ -20,9 +21,10 @@
from odoo import tests
from odoo.addons.converter import (
Field,
Model,
RelationToMany,
RelationToOne,
Skip,
Xref,
@@ -117,3 +119,50 @@
message_to_odoo(self.env, message, self.env["res.users"], converter)
self.assertEqual(user.partner_id, new_partner)
self.assertEqual(new_partner.color, 3)
def test_many2many_to_odoo(self):
"""Ensure multiple sub-objects linked from the main one gets updated
when Odoo receives a message.
"""
# This converter wraps a user and adds info from its related partner.
converter = Model(
None,
{
"users": RelationToMany(
"user_ids",
"res.users",
Model(
"user",
{
"email": Field("email"),
"xref": Xref("base"),
},
),
),
"xref": Xref("base"),
},
)
partner = self.env.ref("base.main_partner")
self.assertFalse(partner.user_ids)
# Run our message reception.
message: dict[str, Any] = {
"users": [
{
"__type__": "user",
"xref": "user_admin",
},
{
"__type__": "user",
"xref": "user_demo",
},
],
"xref": "main_partner",
}
message_to_odoo(self.env, message, self.env["res.partner"], converter)
# Check the partner's users
self.assertTrue(partner.user_ids)
self.assertEqual(len(partner.user_ids), 2)
Loading