diff --git a/hr_holidays_imposed_days/tests/test_holidays_imposed_days.py b/hr_holidays_imposed_days/tests/test_holidays_imposed_days.py index 16dcce6e8be..acef0eb5b5c 100644 --- a/hr_holidays_imposed_days/tests/test_holidays_imposed_days.py +++ b/hr_holidays_imposed_days/tests/test_holidays_imposed_days.py @@ -4,6 +4,7 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo.tests import common +from odoo.exceptions import ValidationError from odoo import fields from dateutil.relativedelta import relativedelta @@ -12,6 +13,7 @@ class TestHolidaysImposedDays(common.TransactionCase): def setUp(self): super(TestHolidaysImposedDays, self).setUp() + # Base models self.employee_model = self.env['hr.employee'] self.holiday_status_model = self.env['hr.holidays.status'] self.holiday_imposed_model = self.env['hr.holidays.imposed'] @@ -37,10 +39,35 @@ def test_imposed_number_of_days_computation(self): relativedelta(days=4)), 'status_id': self.holiday_type.id, } - ) + ) self.imposed.onchange_dates() self.assertEqual(self.imposed.number_of_days, 3.) + def test_imposed_on_specific_employee(self): + # Create employee + self.employee = self.employee_model.create({ + 'name': 'Employee 1', + }) + # define an imposed day + self.imposed = self.holiday_imposed_model.create( + {'name': 'TEST', + 'date_from': fields.Datetime.to_string(self.today + + relativedelta(days=2)), + 'date_to': fields.Datetime.to_string(self.today + + relativedelta(days=4)), + 'status_id': self.holiday_type.id, + 'employee_ids': self.employee, + } + ) + self.imposed.validate() + leaves = self.holiday_model.search( + [('type', '=', 'remove'), + ('employee_id', '=', self.employee.id) + ] + ) + self.assertEqual(len(leaves), 1) + self.assertEqual(leaves[0].state, 'confirm') + def test_imposed_employee_create(self): # Create employee self.employee = self.employee_model.create({ @@ -61,7 +88,7 @@ def test_imposed_employee_create(self): relativedelta(days=4)), 'status_id': self.holiday_type.id, } - ) + ) self.employee2 = self.employee_model.create({ 'name': 'Employee 2', }) @@ -94,7 +121,7 @@ def test_imposed_employee_create_approved(self): 'status_id': self.holiday_type.id, 'auto_confirm': True } - ) + ) self.employee2 = self.employee_model.create({ 'name': 'Employee 2', }) @@ -123,7 +150,7 @@ def test_imposed_employee_create_validate(self): 'status_id': self.holiday_type.id, 'auto_confirm': True } - ) + ) self.imposed.validate() leaves = self.holiday_model.search( [('type', '=', 'remove'), @@ -131,3 +158,18 @@ def test_imposed_employee_create_validate(self): ) self.assertEqual(len(leaves), 2) self.assertEqual(leaves[0].state, 'validate') + + def test_check_dates_constrains(self): + self.assertRaises(ValidationError, self._create_wrong_imposed) + + def _create_wrong_imposed(self): + return self.holiday_imposed_model.create( + {'name': 'TEST', + 'date_from': fields.Datetime.to_string(self.today + + relativedelta(days=4)), + 'date_to': fields.Datetime.to_string(self.today + + relativedelta(days=2)), + 'status_id': self.holiday_type.id, + 'auto_confirm': True + } + )