mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-26 18:51:59 +02:00
68 lines
2.7 KiB
Python
68 lines
2.7 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo.exceptions import AccessError
|
|
from odoo.tests import new_test_user
|
|
from odoo.tests.common import TransactionCase, tagged
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestAttendanceManager(TransactionCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
# Create an attendance manager
|
|
cls.luisa = new_test_user(cls.env, login='luisa', groups='hr_attendance.group_hr_attendance_manager')
|
|
|
|
# Create a normal user
|
|
cls.marc = new_test_user(cls.env, login='marc', groups='base.group_user')
|
|
cls.marc_employee = cls.env['hr.employee'].create({
|
|
'name': 'Marc Employee',
|
|
'user_id': cls.marc.id,
|
|
})
|
|
cls.marc_employee.attendance_manager_id = cls.marc
|
|
|
|
# Create another employee
|
|
cls.abigail_employee, cls.ryan_employee = cls.env['hr.employee'].create([
|
|
{
|
|
'name': 'Abigail Employee',
|
|
'attendance_manager_id': cls.marc.id,
|
|
},
|
|
{
|
|
'name': 'Ryan Employee',
|
|
'attendance_manager_id': cls.luisa.id,
|
|
},
|
|
])
|
|
|
|
# Create an attendance for Marc Demo's employee
|
|
cls.attendance = cls.env['hr.attendance'].create({
|
|
'employee_id': cls.marc_employee.id,
|
|
'check_in': '2025-09-09 08:00:00',
|
|
'check_out': '2025-09-09 12:00:00',
|
|
})
|
|
|
|
def test_attendance_officer_rights(self):
|
|
"""Marc Demo should NOT be able to change the employee on his attendance
|
|
if he is not assigned as attendance manager of that employee.
|
|
"""
|
|
attendance_as_marc = self.attendance.with_user(self.marc)
|
|
|
|
# Marc can change the employee to Abigail
|
|
attendance_as_marc.write({'employee_id': self.abigail_employee.id})
|
|
self.assertEqual(self.attendance.employee_id, self.abigail_employee)
|
|
|
|
# Marc cannot change the employee to Ryan
|
|
with self.assertRaises(AccessError):
|
|
attendance_as_marc.write({'employee_id': self.ryan_employee.id})
|
|
|
|
def test_attendance_manager_rights(self):
|
|
"""Luisa should be able to change the employee on attendance without the need
|
|
of being set as attendance_manager since she has the attendance_manager group.
|
|
"""
|
|
attendance_as_luisa = self.attendance.with_user(self.luisa)
|
|
|
|
attendance_as_luisa.write({'employee_id': self.abigail_employee.id})
|
|
self.assertEqual(self.attendance.employee_id, self.abigail_employee)
|
|
|
|
attendance_as_luisa.write({'employee_id': self.ryan_employee.id})
|
|
self.assertEqual(self.attendance.employee_id, self.ryan_employee)
|