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

58 lines
2.5 KiB
Python
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import time
from datetime import date
from dateutil.relativedelta import relativedelta
from freezegun import freeze_time
from odoo import Command
from odoo.tools import mute_logger
from odoo.addons.hr_holidays.tests.common import TestHrHolidaysCommon
from odoo.addons.mail.tests.common import MailCase
class TestHolidaysMail(TestHrHolidaysCommon, MailCase):
"""Test that mails are correctly sent when a timeoff is taken"""
@mute_logger('odoo.addons.base.models.ir_model', 'odoo.models')
def test_email_sent_when_approved(self):
""" Testing leave request flow: limited type of leave request """
with freeze_time('2022-01-15'):
self.env.ref('hr.employee_admin').tz = "Europe/Brussels"
holiday_status_paid_time_off = self.env['hr.leave.type'].create({
'name': 'Paid Time Off',
'requires_allocation': 'yes',
'employee_requests': 'no',
'allocation_validation_type': 'officer',
'leave_validation_type': 'both',
'responsible_ids': [Command.link(self.env.ref('base.user_admin').id)],
})
self.env['hr.leave.allocation'].create([
{
'name': 'Paid Time off for David',
'holiday_status_id': holiday_status_paid_time_off.id,
'number_of_days': 20,
'employee_id': self.employee_emp_id,
'state': 'confirm',
'date_from': time.strftime('%Y-%m-01'),
}
]).action_validate()
leave_vals = {
'name': 'Sick Time Off',
'holiday_status_id': holiday_status_paid_time_off.id,
'request_date_from': date.today() + relativedelta(day=2),
'request_date_to': date.today() + relativedelta(day=3),
'employee_id': self.ref('hr.employee_admin'),
}
leave = self.env['hr.leave'].create(leave_vals)
leave.action_approve()
with self.mock_mail_gateway():
leave.action_validate()
admin_emails = self._new_mails.filtered(lambda x: x.partner_ids.employee_ids.id == self.ref('hr.employee_admin'))
self.assertEqual(len(admin_emails), 1, "Mitchell Admin should receive an email")
self.assertTrue("has been accepted" in admin_emails.preview)