[FIX] base_import_match: importing related o2m records

The original code did improperly handle importing
related one2many records where at best all their
attribute values would get overwritten by last
of them. This was caused by mapping them only by
their first part.
This commit is contained in:
Rad0van
2022-01-18 22:38:27 +01:00
parent 0414dd0b05
commit 79bd879eb4
4 changed files with 68 additions and 21 deletions

View File

@@ -68,3 +68,41 @@ class ImportCase(TransactionCase):
record = self._base_import_record("res.users", "res_users_login")
record.do(["login", "name"], [], OPTIONS)
self.assertEqual(self.env.ref("base.user_demo").name, "Demo User Changed")
def test_res_partner_email_one2many(self):
"""Change function based on email and import one2many record."""
record = self._base_import_record("res.partner", "res_partner_email_one2many")
record.do(
[
"email",
"function",
"child_ids/name",
"child_ids/color",
"child_ids/email",
],
[],
OPTIONS,
)
self.assertEqual(
self.env.ref("base.res_partner_address_4").function, "Bug Fixer"
)
self.assertTrue(self.env.ref("base.res_partner_address_4").child_ids,)
self.assertEqual(
len(self.env.ref("base.res_partner_address_4").child_ids), 3,
)
self.assertEqual(
set(self.env.ref("base.res_partner_address_4").mapped("child_ids.name")),
{"Bart Steward", "Lisa Steward", "Maggie Steward"},
)
self.assertEqual(
set(self.env.ref("base.res_partner_address_4").mapped("child_ids.email")),
{
"bart.steward@example.com",
"lisa.steward@example.com",
"maggie.steward@example.com",
},
)
self.assertEqual(
set(self.env.ref("base.res_partner_address_4").mapped("child_ids.color")),
{666, 777, 555},
)