110 lines
4.9 KiB
Python
110 lines
4.9 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from odoo.addons.hr_homeworking.tests.common import TestHrHomeworkingCommon
|
||
|
|
||
|
from odoo.tests import tagged
|
||
|
from datetime import datetime
|
||
|
|
||
|
@tagged('post_install', '-at_install', "homeworking_tests")
|
||
|
class TestHrHomeworkingHrEmployeeLocation(TestHrHomeworkingCommon):
|
||
|
@classmethod
|
||
|
def setUpClass(cls):
|
||
|
super(TestHrHomeworkingHrEmployeeLocation, cls).setUpClass()
|
||
|
cls.HrEmployeeLocation = cls.env['hr.employee.location']
|
||
|
|
||
|
def test_set_location_with_weekly_option_changes_employee_location(self):
|
||
|
wizard = self.env['homework.location.wizard'].create({
|
||
|
'work_location_id': self.work_home.id,
|
||
|
'date': datetime(2023, 10, 4), # wednesday
|
||
|
'employee_id': self.employee_emp.id,
|
||
|
'weekly': True
|
||
|
})
|
||
|
wizard.set_employee_location()
|
||
|
self.assertEqual(self.employee_emp.wednesday_location_id.id, self.work_home.id)
|
||
|
created_worklocations = self.HrEmployeeLocation.search([
|
||
|
('employee_id', '=', self.employee_emp.id),
|
||
|
('date', '=', datetime(2023, 10, 4)),
|
||
|
])
|
||
|
self.assertEqual(len(created_worklocations), 0, 'should have created 0 worklocation records')
|
||
|
|
||
|
def test_set_location_without_weekly_option_should_create_an_exception(self):
|
||
|
wizard = self.env['homework.location.wizard'].create({
|
||
|
'work_location_id': self.work_home.id,
|
||
|
'date': datetime(2023, 10, 4), # wednesday
|
||
|
'employee_id': self.employee_emp.id,
|
||
|
'weekly': False
|
||
|
})
|
||
|
wizard.set_employee_location()
|
||
|
created_worklocations = self.HrEmployeeLocation.search([
|
||
|
('employee_id', '=', self.employee_emp.id),
|
||
|
('date', '=', datetime(2023, 10, 4)),
|
||
|
])
|
||
|
self.assertEqual(len(created_worklocations), 1, 'should have created 1 worklocation record')
|
||
|
self.assertEqual(created_worklocations.work_location_id.id, self.work_home.id)
|
||
|
|
||
|
def test_create_exception_on_top_of_exception_keeps_a_single_record(self):
|
||
|
wizard = self.env['homework.location.wizard'].create({
|
||
|
'work_location_id': self.work_home.id,
|
||
|
'date': datetime(2023, 10, 4), # wednesday
|
||
|
'employee_id': self.employee_emp.id,
|
||
|
'weekly': False
|
||
|
})
|
||
|
wizard.set_employee_location()
|
||
|
created_worklocations = self.HrEmployeeLocation.search([
|
||
|
('employee_id', '=', self.employee_emp.id),
|
||
|
('date', '=', datetime(2023, 10, 4)),
|
||
|
])
|
||
|
self.assertEqual(len(created_worklocations), 1, 'should have created 1 worklocation record')
|
||
|
wizard.work_location_id = self.work_office_2
|
||
|
wizard.set_employee_location()
|
||
|
created_worklocations = self.HrEmployeeLocation.search([
|
||
|
('employee_id', '=', self.employee_emp.id),
|
||
|
('date', '=', datetime(2023, 10, 4)),
|
||
|
])
|
||
|
self.assertEqual(len(created_worklocations), 1, 'should have created 1 worklocation record')
|
||
|
self.assertEqual(created_worklocations.work_location_id.id, self.work_office_2.id)
|
||
|
|
||
|
def test_set_same_location_as_default_one_should_not_create_exception(self):
|
||
|
wizard = self.env['homework.location.wizard'].create({
|
||
|
'work_location_id': self.work_office_1.id,
|
||
|
'date': datetime(2023, 10, 4), # wednesday
|
||
|
'employee_id': self.employee_emp.id,
|
||
|
'weekly': False
|
||
|
})
|
||
|
wizard.set_employee_location()
|
||
|
created_worklocations = self.HrEmployeeLocation.search([
|
||
|
('employee_id', '=', self.employee_emp.id),
|
||
|
('date', '=', datetime(2023, 10, 4)),
|
||
|
])
|
||
|
self.assertEqual(len(created_worklocations), 0, 'should have created 0 worklocation records')
|
||
|
|
||
|
def test_set_default_day_location_as_exception_will_delete_exception(self):
|
||
|
# create exception for a certain day
|
||
|
wizard = self.env['homework.location.wizard'].create({
|
||
|
'work_location_id': self.work_home.id,
|
||
|
'date': datetime(2023, 10, 4), # wednesday
|
||
|
'employee_id': self.employee_emp.id,
|
||
|
'weekly': False
|
||
|
})
|
||
|
wizard.set_employee_location()
|
||
|
|
||
|
created_worklocations = self.HrEmployeeLocation.search([
|
||
|
('employee_id', '=', self.employee_emp.id),
|
||
|
('date', '=', datetime(2023, 10, 4)),
|
||
|
])
|
||
|
|
||
|
self.assertEqual(len(created_worklocations), 1, 'should have created 1 worklocation records')
|
||
|
|
||
|
# set default work location on day where an exception exists
|
||
|
wizard.work_location_id = self.work_office_1
|
||
|
wizard.set_employee_location()
|
||
|
|
||
|
created_worklocations = self.HrEmployeeLocation.search([
|
||
|
('employee_id', '=', self.employee_emp.id),
|
||
|
('date', '=', datetime(2023, 10, 4)),
|
||
|
])
|
||
|
|
||
|
# exception should be deleted
|
||
|
self.assertEqual(len(created_worklocations), 0, 'should have deleted the worklocation record')
|