119 lines
4.0 KiB
Python
119 lines
4.0 KiB
Python
from odoo import Command
|
|
from odoo.tests.common import TransactionCase
|
|
|
|
|
|
class TestRoleAddUsersWizard(TransactionCase):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.role = cls.env["res.users.role"].create(
|
|
{
|
|
"name": "Test Role",
|
|
}
|
|
)
|
|
cls.user1 = cls.env["res.users"].create(
|
|
{
|
|
"name": "Test User 1",
|
|
"login": "testuser1",
|
|
"email": "testuser1@example.com",
|
|
}
|
|
)
|
|
cls.user2 = cls.env["res.users"].create(
|
|
{
|
|
"name": "Test User 2",
|
|
"login": "testuser2",
|
|
"email": "testuser2@example.com",
|
|
}
|
|
)
|
|
cls.user3 = cls.env["res.users"].create(
|
|
{
|
|
"name": "Test User 3",
|
|
"login": "testuser3",
|
|
"email": "testuser3@example.com",
|
|
}
|
|
)
|
|
|
|
def test_add_new_users_to_role(self):
|
|
"""Test adding new users to a role without existing users"""
|
|
wizard = self.env["role.add.users.wizard"].create(
|
|
{
|
|
"role_id": self.role.id,
|
|
"user_ids": [Command.set([self.user1.id, self.user2.id])],
|
|
"date_from": "2024-01-01",
|
|
"date_to": "2024-12-31",
|
|
}
|
|
)
|
|
|
|
result = wizard.action_add_users()
|
|
self.assertEqual(result["type"], "ir.actions.act_window_close")
|
|
self.assertEqual(len(self.role.line_ids), 2)
|
|
self.assertIn(self.user1, self.role.line_ids.mapped("user_id"))
|
|
self.assertIn(self.user2, self.role.line_ids.mapped("user_id"))
|
|
for line in self.role.line_ids:
|
|
self.assertEqual(str(line.date_from), "2024-01-01")
|
|
self.assertEqual(str(line.date_to), "2024-12-31")
|
|
|
|
def test_add_users_with_existing_users(self):
|
|
"""Test adding users when some already exist in the role"""
|
|
self.env["res.users.role.line"].create(
|
|
{
|
|
"role_id": self.role.id,
|
|
"user_id": self.user1.id,
|
|
}
|
|
)
|
|
|
|
wizard = self.env["role.add.users.wizard"].create(
|
|
{
|
|
"role_id": self.role.id,
|
|
"user_ids": [Command.set([self.user1.id, self.user2.id])],
|
|
}
|
|
)
|
|
|
|
wizard.action_add_users()
|
|
self.assertEqual(len(self.role.line_ids), 2)
|
|
users_in_role = self.role.line_ids.mapped("user_id")
|
|
self.assertIn(self.user1, users_in_role)
|
|
self.assertIn(self.user2, users_in_role)
|
|
|
|
user1_lines = self.role.line_ids.filtered(
|
|
lambda line: line.user_id == self.user1
|
|
)
|
|
self.assertEqual(len(user1_lines), 1)
|
|
|
|
def test_add_users_without_dates(self):
|
|
"""Test adding users without specifying dates"""
|
|
wizard = self.env["role.add.users.wizard"].create(
|
|
{
|
|
"role_id": self.role.id,
|
|
"user_ids": [Command.set([self.user3.id])],
|
|
}
|
|
)
|
|
|
|
wizard.action_add_users()
|
|
self.assertEqual(len(self.role.line_ids), 1)
|
|
line = self.role.line_ids[0]
|
|
self.assertEqual(line.user_id, self.user3)
|
|
self.assertFalse(line.date_from)
|
|
self.assertFalse(line.date_to)
|
|
|
|
def test_add_multiple_new_users(self):
|
|
"""Test adding multiple new users at once"""
|
|
wizard = self.env["role.add.users.wizard"].create(
|
|
{
|
|
"role_id": self.role.id,
|
|
"user_ids": [
|
|
Command.set([self.user1.id, self.user2.id, self.user3.id])
|
|
],
|
|
"date_from": "2024-06-01",
|
|
}
|
|
)
|
|
|
|
wizard.action_add_users()
|
|
self.assertEqual(len(self.role.line_ids), 3)
|
|
users_in_role = self.role.line_ids.mapped("user_id")
|
|
self.assertEqual(
|
|
set(users_in_role.ids), {self.user1.id, self.user2.id, self.user3.id}
|
|
)
|
|
for line in self.role.line_ids:
|
|
self.assertEqual(str(line.date_from), "2024-06-01")
|