Odoo18-Base/addons/hr_attendance/tests/test_hr_attendance_domain_translation.py
2025-01-06 10:57:38 +07:00

54 lines
1.8 KiB
Python

import time
from odoo.tests.common import tagged, TransactionCase
@tagged('attendance_searchbar_user_domain')
class TestHrAttendanceDomainTranslation(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.hr_attendance = cls.env['hr.attendance']
cls.hr_employee = cls.env['hr.employee']
cls.employee_musa, employee_tecna = cls.hr_employee.create([{'name': 'Musa'}, {'name': 'Tecna'}])
cls.hr_attendance.create({
'employee_id': employee_tecna.id,
'check_in': time.strftime('%Y-%m-10 10:00'),
})
def test_searchbar_with_user_domain(self):
companies_ids = self.env['res.company'].search([]).ids
# Checks that this domain returns no attendance
self.assertEqual(
self.hr_attendance.search([
'&',
('check_out', "!=", False),
'|',
('employee_id', 'ilike', 'Musa'),
('employee_id', 'ilike', 'Flora')
]),
self.hr_attendance
)
# Ensure that if an employee is searched with the search bar even if he doesn't have any attendance,
# he will be returned.
self.assertEqual(
self.hr_attendance.with_context(
allowed_company_ids=companies_ids,
user_domain=[
'|',
('employee_id', 'ilike', 'Musa'),
('employee_id', 'ilike', 'Flora')
])._read_group_employee_id(self.hr_employee, [
'&',
('check_out', "!=", False),
'|',
('employee_id', 'ilike', 'Musa'),
('employee_id', 'ilike', 'Flora')
]),
self.employee_musa
)