addons-cm/website_sale_aplicoop/tests/test_res_partner.py
snt 80539f3e36 [IMP] website_sale_aplicoop: propagate consumer_group_id directly from group_order
- Add consumer_group_id to sale.order for tracking the consumer group
- Fix stock.picking consumer_group_id to use sale_id.consumer_group_id
- Add group_ids inverse relation in res.partner for bidirectional access
- Remove auto-calculation of consumer_group_id, data comes directly from group_order.group_ids[0]
- Add debug logging for consumer_group propagation
- commitment_date propagates directly from group_order (no recalculation)
2026-03-06 13:49:13 +01:00

101 lines
3.6 KiB
Python

# Copyright 2025 Criptomart
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl)
from odoo.tests.common import TransactionCase
class TestResPartnerExtension(TransactionCase):
"""Test suite para la extensión res.partner (user-group relationship)."""
def setUp(self):
super().setUp()
# Crear grupos (res.partner with is_group=True)
self.group1 = self.env["res.partner"].create(
{
"name": "Grupo 1",
"is_company": True,
"is_group": True,
"email": "grupo1@test.com",
}
)
self.group2 = self.env["res.partner"].create(
{
"name": "Grupo 2",
"is_company": True,
"is_group": True,
"email": "grupo2@test.com",
}
)
# Crear usuario
self.user = self.env["res.users"].create(
{
"name": "Test User",
"login": "testuser@test.com",
"email": "testuser@test.com",
}
)
def test_partner_can_belong_to_groups(self):
"""Test que un partner (usuario) puede pertenecer a múltiples grupos."""
partner = self.user.partner_id
# Agregar partner a grupos usando group_ids (desde el lado del miembro)
partner.group_ids = [(6, 0, [self.group1.id, self.group2.id])]
# Verificar que pertenece a ambos grupos
self.assertIn(self.group1, partner.group_ids)
self.assertIn(self.group2, partner.group_ids)
self.assertEqual(len(partner.group_ids), 2)
def test_group_can_have_multiple_members(self):
"""Test que un grupo puede tener múltiples miembros."""
user2 = self.env["res.users"].create(
{
"name": "Test User 2",
"login": "testuser2@test.com",
"email": "testuser2@test.com",
}
)
# Agregar miembros al grupo usando member_ids (desde el lado del grupo)
self.group1.member_ids = [
(6, 0, [self.user.partner_id.id, user2.partner_id.id])
]
# Verificar que el grupo tiene ambos miembros
self.assertIn(self.user.partner_id, self.group1.member_ids)
self.assertIn(user2.partner_id, self.group1.member_ids)
self.assertEqual(len(self.group1.member_ids), 2)
def test_user_group_relationship_is_bidirectional(self):
"""Test que se puede modificar la relación desde el lado del partner o el grupo."""
partner = self.user.partner_id
# Opción 1: Agregar grupo al usuario (desde el lado del miembro/partner)
partner.group_ids = [(6, 0, [self.group1.id])]
self.assertIn(self.group1, partner.group_ids)
# Verificar que la relación inversa también funciona
self.assertIn(partner, self.group1.member_ids)
# Opción 2: Agregar partner al grupo (desde el lado del grupo)
user2 = self.env["res.users"].create(
{
"name": "Test User 2",
"login": "testuser2@test.com",
"email": "testuser2@test.com",
}
)
self.group2.member_ids = [(4, user2.partner_id.id)]
self.assertIn(user2.partner_id, self.group2.member_ids)
# Verificar relación inversa
self.assertIn(self.group2, user2.partner_id.group_ids)
def test_empty_group_ids(self):
"""Test que un partner sin grupos tiene group_ids vacío."""
partner = self.user.partner_id
# Sin agregar a ningún grupo
self.assertEqual(len(partner.group_ids), 0)