1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/project_enterprise/tests/test_task_group_expand.py
2024-12-10 09:04:09 +07:00

57 lines
2.8 KiB
Python

# -*- coding: utf-8 -*-
from odoo.tests import tagged
from odoo.fields import Command
from datetime import datetime, timedelta
from odoo.addons.project.tests.test_project_base import TestProjectCommon
@tagged('-at_install', 'post_install')
class TestTaskGroupExpand(TestProjectCommon):
def test_task_user_ids_group_expand(self):
def user_in_groups(user_id):
return any(
'user_ids' in group and group['user_ids'][0] == user_id
for group in groups)
# Simulate Gantt view
gantt_domain = [
('planned_date_begin', '>=', datetime.today()),
('date_deadline', '<=', datetime.today() + timedelta(days=7)),
]
Task = self.env['project.task'].with_user(self.user_projectuser).with_context({
'gantt_start_date': datetime.today(),
'gantt_scale': 'week',
})
args = ['name'], ['user_ids']
# 1. Search with no filter on user_ids: Current user should have a group (even if empty)
groups = Task.read_group(gantt_domain + [('id', '=', self.task_2.id)], *args)
self.assertTrue(user_in_groups(self.user_projectuser.id),
"A group should exist for the current user if no filter is applied on user_ids.")
# 2. Search with filter on user_ids: Current user should not have a group if empty
groups = Task.read_group(gantt_domain + [('user_ids', 'in', self.user_projectmanager.id)], *args)
self.assertFalse(user_in_groups(self.user_projectuser.id),
"No empty group should be added for the current user if a filter is applied on user_ids.")
# 3. Corner case: same search as 2 but with a task not displayed in the gantt view assigned to both user
test_task = self.env['project.task'].create([{
'name': 'Shared task test group expand',
'user_ids': [Command.set([self.user_projectuser.id, self.user_projectmanager.id])],
}])
groups = Task.read_group(gantt_domain + [('user_ids', 'in', self.user_projectmanager.id)], *args)
self.assertFalse(user_in_groups(self.user_projectuser.id),
"No empty group should be added for the current user if a filter is applied on user_ids, even if a record not visible in the gantt view match the domain.")
# 4. Corner case: same case as 3, but with the task visible in the gantt view
test_task.write({
'planned_date_begin': datetime.now(),
'date_deadline': datetime.now() + timedelta(days=2),
})
groups = Task.read_group(
gantt_domain + [('user_ids', 'in', self.user_projectmanager.id)], *args)
self.assertTrue(user_in_groups(self.user_projectuser.id),
"Even if a filter is applied on user_ids, all user row containing visible tasks in the gantt view should be displayed")