54 lines
1.8 KiB
Python
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
|
|
)
|