summaryrefslogtreecommitdiff
path: root/addons/hr_holidays/tests/test_out_of_office.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/hr_holidays/tests/test_out_of_office.py')
-rw-r--r--addons/hr_holidays/tests/test_out_of_office.py100
1 files changed, 100 insertions, 0 deletions
diff --git a/addons/hr_holidays/tests/test_out_of_office.py b/addons/hr_holidays/tests/test_out_of_office.py
new file mode 100644
index 00000000..ad316c7a
--- /dev/null
+++ b/addons/hr_holidays/tests/test_out_of_office.py
@@ -0,0 +1,100 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from datetime import datetime
+from dateutil.relativedelta import relativedelta
+
+from odoo.addons.base.tests.common import TransactionCaseWithUserDemo
+from odoo.tests.common import tagged, users, warmup
+from odoo.addons.hr_holidays.tests.common import TestHrHolidaysCommon
+
+
+@tagged('out_of_office')
+class TestOutOfOffice(TestHrHolidaysCommon):
+
+ def setUp(self):
+ super().setUp()
+ self.leave_type = self.env['hr.leave.type'].create({
+ 'name': 'Legal Leaves',
+ 'time_type': 'leave',
+ 'allocation_type': 'no',
+ 'validity_start': False,
+ })
+
+ def test_leave_ooo(self):
+ self.assertNotEqual(self.employee_hruser.user_id.im_status, 'leave_offline', 'user should not be on leave')
+ self.assertNotEqual(self.employee_hruser.user_id.partner_id.im_status, 'leave_offline', 'user should not be on leave')
+ leave_date_end = (datetime.today() + relativedelta(days=3))
+ leave = self.env['hr.leave'].create({
+ 'name': 'Christmas',
+ 'employee_id': self.employee_hruser.id,
+ 'holiday_status_id': self.leave_type.id,
+ 'date_from': (datetime.today() - relativedelta(days=1)),
+ 'date_to': leave_date_end,
+ 'number_of_days': 4,
+ })
+ leave.action_approve()
+ self.assertEqual(self.employee_hruser.user_id.im_status, 'leave_offline', 'user should be out (leave_offline)')
+ self.assertEqual(self.employee_hruser.user_id.partner_id.im_status, 'leave_offline', 'user should be out (leave_offline)')
+
+ partner = self.employee_hruser.user_id.partner_id
+ partner2 = self.user_employee.partner_id
+
+ channel = self.env['mail.channel'].with_user(self.user_employee).with_context({
+ 'mail_create_nolog': True,
+ 'mail_create_nosubscribe': True,
+ 'mail_channel_noautofollow': True,
+ }).create({
+ 'channel_partner_ids': [(4, partner.id), (4, partner2.id)],
+ 'public': 'private',
+ 'channel_type': 'chat',
+ 'email_send': False,
+ 'name': 'test'
+ })
+ channel_info = channel.channel_info()[0]
+ self.assertFalse(channel_info['members'][0]['out_of_office_date_end'], "current user should not be out of office")
+ self.assertEqual(channel_info['members'][1]['out_of_office_date_end'], leave_date_end, "correspondent should be out of office")
+
+
+@tagged('out_of_office')
+class TestOutOfOfficePerformance(TestHrHolidaysCommon, TransactionCaseWithUserDemo):
+
+ def setUp(self):
+ super(TestOutOfOfficePerformance, self).setUp()
+ self.leave_type = self.env['hr.leave.type'].create({
+ 'name': 'Legal Leaves',
+ 'time_type': 'leave',
+ 'allocation_type': 'no',
+ 'validity_start': False,
+ })
+ self.leave_date_end = (datetime.today() + relativedelta(days=3))
+ self.leave = self.env['hr.leave'].create({
+ 'name': 'Christmas',
+ 'employee_id': self.employee_hruser_id,
+ 'holiday_status_id': self.leave_type.id,
+ 'date_from': (datetime.today() - relativedelta(days=1)),
+ 'date_to': (datetime.today() + relativedelta(days=3)),
+ 'number_of_days': 4,
+ })
+
+ self.hr_user = self.employee_hruser.user_id
+ self.hr_partner = self.employee_hruser.user_id.partner_id
+ self.employer_partner = self.user_employee.partner_id
+
+ @users('__system__', 'demo')
+ @warmup
+ def test_leave_im_status_performance_partner_offline(self):
+ with self.assertQueryCount(__system__=2, demo=2):
+ self.assertEqual(self.employer_partner.im_status, 'offline')
+
+ @users('__system__', 'demo')
+ @warmup
+ def test_leave_im_status_performance_user_leave_offline(self):
+ with self.assertQueryCount(__system__=2, demo=2):
+ self.assertEqual(self.hr_user.im_status, 'leave_offline')
+
+ @users('__system__', 'demo')
+ @warmup
+ def test_leave_im_status_performance_partner_leave_offline(self):
+ with self.assertQueryCount(__system__=2, demo=2):
+ self.assertEqual(self.hr_partner.im_status, 'leave_offline')