Odoo18-Base/addons/hr_holidays/tests/test_res_partner.py

69 lines
2.7 KiB
Python
Raw Permalink Normal View History

2025-03-10 10:52:11 +07:00
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import date
from dateutil.relativedelta import relativedelta
from odoo import Command
from odoo.tests.common import tagged, TransactionCase
from odoo.tools.misc import DEFAULT_SERVER_DATE_FORMAT
@tagged('post_install', '-at_install')
class TestPartner(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
# use a single value for today throughout the tests to avoid weird scenarios around midnight
cls.today = date.today()
baseUser = cls.env['res.users'].create({
'email': 'e.e@example.com',
'groups_id': [Command.link(cls.env.ref('base.group_user').id)],
'login': 'emp',
'name': 'Ernest Employee',
'notification_type': 'inbox',
'signature': '--\nErnest',
})
cls.partner = baseUser.partner_id
cls.users = baseUser + cls.env['res.users'].create({
'name': 'test1',
'login': 'test1',
'email': 'test1@example.com',
'partner_id': cls.partner.id,
})
cls.employees = cls.env['hr.employee'].create([{
'user_id': user.id,
} for user in cls.users])
cls.leave_type = cls.env['hr.leave.type'].create({
'requires_allocation': 'no',
'name': 'Legal Leaves',
'time_type': 'leave',
'responsible_ids': cls.users.ids
})
cls.leaves = cls.env['hr.leave'].create([{
'request_date_from': cls.today + relativedelta(days=-2),
'request_date_to': cls.today + relativedelta(days=2),
'employee_id': cls.employees[0].id,
'holiday_status_id': cls.leave_type.id,
}, {
'request_date_from': cls.today + relativedelta(days=-2),
'request_date_to': cls.today + relativedelta(days=3),
'employee_id': cls.employees[1].id,
'holiday_status_id': cls.leave_type.id,
}])
def test_res_partner_mail_partner_format(self):
self.leaves.write({'state': 'validate'})
self.assertEqual(
self.partner.mail_partner_format()[self.partner]['out_of_office_date_end'],
(self.today + relativedelta(days=2)).strftime(DEFAULT_SERVER_DATE_FORMAT),
'Return date is the first return date of all users associated with a partner',
)
self.leaves[1].action_refuse()
self.assertEqual(
self.partner.mail_partner_format()[self.partner]['out_of_office_date_end'],
False,
'Partner is not considered out of office if one of their users is not on holiday',
)