58 lines
2.5 KiB
Python
58 lines
2.5 KiB
Python
|
# 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)
|