mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-23 22:31:59 +02:00
19.0 vanilla
This commit is contained in:
parent
a1137a1456
commit
e1d89e11e3
2789 changed files with 1093187 additions and 605897 deletions
|
|
@ -0,0 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import test_mail_activity_plan
|
||||
from . import test_hr_fleet_driver
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo.tests import common
|
||||
|
||||
|
||||
class TestHrFleetDriver(common.TransactionCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
|
||||
cls.test_employee = cls.env['hr.employee'].create({
|
||||
'name': 'Test Employee'
|
||||
})
|
||||
|
||||
cls.test_user = cls.env['res.users'].create({
|
||||
'login': 'test',
|
||||
'name': 'The King',
|
||||
'email': 'noop@example.com',
|
||||
})
|
||||
|
||||
cls.brand = cls.env["fleet.vehicle.model.brand"].create({
|
||||
"name": "Audi",
|
||||
})
|
||||
|
||||
cls.model = cls.env["fleet.vehicle.model"].create({
|
||||
"brand_id": cls.brand.id,
|
||||
"name": "A3",
|
||||
})
|
||||
|
||||
cls.car = cls.env["fleet.vehicle"].create({
|
||||
"model_id": cls.model.id,
|
||||
"future_driver_id": cls.test_employee.work_contact_id.id,
|
||||
"plan_to_change_car": False,
|
||||
"fuel_type": "diesel"
|
||||
})
|
||||
|
||||
cls.car2 = cls.env["fleet.vehicle"].create({
|
||||
"model_id": cls.model.id,
|
||||
"plan_to_change_car": False,
|
||||
"fuel_type": "diesel"
|
||||
})
|
||||
|
||||
def test_driver_sync_with_employee(self):
|
||||
"""
|
||||
If an employee has a car and their partner has changed, the update should be synced with the fleet
|
||||
"""
|
||||
self.assertEqual(self.car.future_driver_id, self.test_employee.work_contact_id)
|
||||
self.test_employee.user_id = self.test_user
|
||||
self.assertEqual(self.test_employee.work_contact_id, self.test_user.partner_id)
|
||||
self.car.action_accept_driver_change()
|
||||
self.assertEqual(self.car.driver_id, self.test_user.partner_id)
|
||||
|
||||
def test_driver_sync_with_employee_without_contact(self):
|
||||
"""
|
||||
When we create an employee with a user_id, he doesn't have a
|
||||
work_contact_id and we don't want to assign him all unassigned
|
||||
cars.
|
||||
"""
|
||||
self.assertEqual(self.car2.future_driver_id.id, False)
|
||||
self.assertEqual(self.car2.driver_id.id, False)
|
||||
self.env['hr.employee'].create({
|
||||
'name': 'Test Employee 2',
|
||||
'user_id': self.test_user.id,
|
||||
})
|
||||
self.assertEqual(self.car2.future_driver_id.id, False)
|
||||
self.assertEqual(self.car2.driver_id.id, False)
|
||||
|
||||
def test_driver_employee_multi_company(self):
|
||||
other_company = self.env['res.company'].create({
|
||||
'name': 'Other Company'
|
||||
})
|
||||
test_employee2 = self.env['hr.employee'].with_company(other_company).create({
|
||||
'name': 'Test Employee 2',
|
||||
'work_contact_id': self.test_employee.work_contact_id.id
|
||||
})
|
||||
car = self.env['fleet.vehicle'].with_company(other_company).create({
|
||||
'model_id': self.model.id,
|
||||
'driver_id': test_employee2.work_contact_id.id
|
||||
})
|
||||
self.assertEqual(car.driver_employee_id, test_employee2)
|
||||
|
||||
assignation_log = self.env['fleet.vehicle.assignation.log'].search([
|
||||
('vehicle_id', '=', car.id)
|
||||
])
|
||||
self.assertEqual(len(assignation_log), 1)
|
||||
self.assertEqual(assignation_log.driver_employee_id, test_employee2)
|
||||
|
|
@ -0,0 +1,84 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import Command
|
||||
from odoo.addons.hr.tests.test_mail_activity_plan import ActivityScheduleHRCase
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.tests import tagged, users
|
||||
|
||||
|
||||
@tagged('mail_activity', 'mail_activity_plan')
|
||||
class TestActivitySchedule(ActivityScheduleHRCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
cls.plan_fleet = cls.env['mail.activity.plan'].create({
|
||||
'name': 'Car return plan',
|
||||
'res_model': 'hr.employee',
|
||||
'template_ids': [Command.create({
|
||||
'activity_type_id': cls.activity_type_todo.id,
|
||||
'responsible_type': 'fleet_manager',
|
||||
'summary': 'Car return',
|
||||
})]
|
||||
})
|
||||
cls.brand = cls.env["fleet.vehicle.model.brand"].create({"name": "Audi"})
|
||||
for employee in (cls.employee_1, cls.employee_2):
|
||||
car = cls.env["fleet.vehicle"].create({
|
||||
"driver_id": employee.user_id.partner_id.id,
|
||||
"model_id": cls.env["fleet.vehicle.model"].create({
|
||||
"brand_id": cls.brand.id,
|
||||
"name": "A3",
|
||||
}).id,
|
||||
"manager_id": cls.user_manager.id,
|
||||
"plan_to_change_car": False,
|
||||
})
|
||||
employee.car_ids = car
|
||||
|
||||
@users('admin')
|
||||
def test_responsible(self):
|
||||
""" Check that the responsible is correctly configured. """
|
||||
|
||||
for employees in (self.employee_1, self.employee_1 + self.employee_2):
|
||||
employees = employees.with_env(self.env)
|
||||
# Happy case
|
||||
form = self._instantiate_activity_schedule_wizard(employees)
|
||||
form.plan_id = self.plan_fleet
|
||||
|
||||
schedule_lines = form.plan_schedule_line_ids._records
|
||||
self.assertEqual(len(schedule_lines), 1)
|
||||
self.assertEqual(schedule_lines[0]['line_description'], 'Car return')
|
||||
if len(employees) == 1:
|
||||
self.assertEqual(schedule_lines[0]['responsible_user_id'], self.user_manager.id)
|
||||
else:
|
||||
self.assertEqual(schedule_lines[0]['responsible_user_id'], False)
|
||||
|
||||
self.assertFalse(form.has_error)
|
||||
wizard = form.save()
|
||||
wizard.action_schedule_plan()
|
||||
for employee in employees:
|
||||
activities = self.get_last_activities(employee, 1)
|
||||
self.assertEqual(len(activities), 1)
|
||||
self.assertEqual(activities[0].user_id, self.user_manager)
|
||||
|
||||
employees = (self.employee_1 + self.employee_2).with_env(self.env)
|
||||
# Cases with errors
|
||||
self.employee_1.car_ids[0].manager_id = False
|
||||
form = self._instantiate_activity_schedule_wizard(employees)
|
||||
form.plan_id = self.plan_fleet
|
||||
self.assertTrue(form.has_warning)
|
||||
n_warning = form.warning.count('<li>')
|
||||
self.assertEqual(n_warning, 1)
|
||||
self.assertIn(f"The vehicle of employee {self.employee_1.name} is not linked to a fleet manager, assigning to you.", form.warning)
|
||||
# assert form can now be saved without raising an error
|
||||
form.save()
|
||||
|
||||
self.employee_1.car_ids = self.env["fleet.vehicle"]
|
||||
form = self._instantiate_activity_schedule_wizard(employees)
|
||||
form.plan_id = self.plan_fleet
|
||||
self.assertTrue(form.has_error)
|
||||
n_error = form.error.count('<li>')
|
||||
self.assertEqual(n_error, 1)
|
||||
self.assertIn(f"Employee {self.employee_1.name} is not linked to a vehicle.", form.error)
|
||||
with self.assertRaises(ValidationError):
|
||||
form.save()
|
||||
Loading…
Add table
Add a link
Reference in a new issue