Odoo18-Base/addons/hr_contract/tests/test_employee.py
2025-03-10 11:12:23 +07:00

69 lines
2.7 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import datetime
from .common import TestContractCommon
class TestHrEmployee(TestContractCommon):
def create_contract(self, state, kanban_state, start, end=None):
return self.env['hr.contract'].create({
'name': 'Contract',
'employee_id': self.employee.id,
'state': state,
'kanban_state': kanban_state,
'wage': 1,
'date_start': start,
'date_end': end,
})
def test_employee_first_contract_date_base_case(self):
'''
Test if when a contract is attached to an employee, the
first_contract_date is updated accordingly.
'''
start = datetime.strptime('2015-11-01', '%Y-%m-%d').date()
self.create_contract('open', 'normal', start)
self.assertEqual(
self.employee.first_contract_date, start,
'The first_contract_date should be the start date of the contract.'
)
def test_employee_first_contract_date_archived_contract(self):
'''
Test if when a contract is attached to an employee, the
first_contract_date is updated accordingly when archived.
'''
start = datetime.strptime('2015-11-01', '%Y-%m-%d').date()
contract = self.create_contract('open', 'normal', start)
self.assertEqual(
self.employee.first_contract_date, start,
'The first_contract_date should be the start date of the contract.',
)
contract.action_archive()
self.assertEqual(
self.employee.first_contract_date, False,
'The first_contract_date should be False when the contract is archived. '
'Because no active contract is attached to the employee.',
)
def test_employee_first_contract_date_multiple_contracts(self):
'''
Test if when multiple contracts are attached to an employee, the
first_contract_date is updated accordingly.
'''
start1 = datetime.strptime('2015-11-01', '%Y-%m-%d').date()
start2 = datetime.strptime('2016-11-01', '%Y-%m-%d').date()
contract1 = self.create_contract('open', 'normal', start1)
self.create_contract('draft', 'normal', start2)
self.assertEqual(
self.employee.first_contract_date, start1,
'The first_contract_date should be the start date of the first contract.',
)
contract1.action_archive()
self.assertEqual(
self.employee.first_contract_date, start2,
'The first_contract_date should be the start date of the second contract.',
)