83 lines
3 KiB
Python
83 lines
3 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_company=True)
|
|
self.group1 = self.env['res.partner'].create({
|
|
'name': 'Grupo 1',
|
|
'is_company': True,
|
|
'email': 'grupo1@test.com',
|
|
})
|
|
|
|
self.group2 = self.env['res.partner'].create({
|
|
'name': 'Grupo 2',
|
|
'is_company': 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 (usar campo member_ids)
|
|
partner.member_ids = [(6, 0, [self.group1.id, self.group2.id])]
|
|
|
|
# Verificar que pertenece a ambos grupos
|
|
self.assertIn(self.group1, partner.member_ids)
|
|
self.assertIn(self.group2, partner.member_ids)
|
|
self.assertEqual(len(partner.member_ids), 2)
|
|
|
|
def test_group_can_have_multiple_users(self):
|
|
'''Test que un grupo puede tener múltiples usuarios.'''
|
|
user2 = self.env['res.users'].create({
|
|
'name': 'Test User 2',
|
|
'login': 'testuser2@test.com',
|
|
'email': 'testuser2@test.com',
|
|
})
|
|
|
|
# Agregar usuarios al grupo
|
|
self.group1.user_ids = [(6, 0, [self.user.id, user2.id])]
|
|
|
|
# Verificar que el grupo tiene ambos usuarios
|
|
self.assertIn(self.user, self.group1.user_ids)
|
|
self.assertIn(user2, self.group1.user_ids)
|
|
self.assertEqual(len(self.group1.user_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 usuario/partner)
|
|
partner.member_ids = [(6, 0, [self.group1.id])]
|
|
self.assertIn(self.group1, partner.member_ids)
|
|
|
|
# Opción 2: Agregar usuario al grupo (desde el lado del grupo)
|
|
# Nota: Esto es una relación Many2many independiente
|
|
user2 = self.env['res.users'].create({
|
|
'name': 'Test User 2',
|
|
'login': 'testuser2@test.com',
|
|
'email': 'testuser2@test.com',
|
|
})
|
|
self.group2.user_ids = [(6, 0, [user2.id])]
|
|
self.assertIn(user2, self.group2.user_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.member_ids), 0)
|