mirror of
https://github.com/bringout/oca-ocb-hr.git
synced 2026-04-26 19:32:00 +02:00
19.0 vanilla
This commit is contained in:
parent
a1137a1456
commit
e1d89e11e3
2789 changed files with 1093187 additions and 605897 deletions
|
|
@ -1,12 +1,16 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo.exceptions import AccessError
|
||||
from odoo import fields
|
||||
from odoo.exceptions import AccessError, UserError
|
||||
from odoo.tests.common import new_test_user
|
||||
|
||||
from odoo.addons.mail.tests.common import MailCommon
|
||||
from odoo.addons.mail.tests.common import MailCase
|
||||
from odoo.tests import tagged
|
||||
|
||||
class TestRecruitmentInterviewer(MailCommon):
|
||||
|
||||
@tagged('recruitment_interviewer')
|
||||
class TestRecruitmentInterviewer(MailCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super().setUpClass()
|
||||
|
|
@ -34,55 +38,48 @@ class TestRecruitmentInterviewer(MailCommon):
|
|||
"""
|
||||
interviewer_group = self.env.ref('hr_recruitment.group_hr_recruitment_interviewer')
|
||||
|
||||
self.assertFalse(interviewer_group.id in self.simple_user.groups_id.ids, "Simple User should not be interviewer")
|
||||
self.assertFalse(interviewer_group.id in self.simple_user.all_group_ids.ids, "Simple User should not be interviewer")
|
||||
|
||||
self.job.interviewer_ids = self.simple_user.ids
|
||||
self.assertTrue(interviewer_group.id in self.simple_user.groups_id.ids, "Simple User should be added as interviewer")
|
||||
self.assertTrue(interviewer_group.id in self.simple_user.all_group_ids.ids, "Simple User should be added as interviewer")
|
||||
|
||||
self.job.write({'interviewer_ids': [(5, 0, 0)]})
|
||||
self.assertFalse(interviewer_group.id in self.simple_user.groups_id.ids, "Simple User should be removed from interviewer")
|
||||
self.assertFalse(interviewer_group.id in self.simple_user.all_group_ids.ids, "Simple User should be removed from interviewer")
|
||||
|
||||
applicant = self.env['hr.applicant'].create({
|
||||
'name': 'toto',
|
||||
'partner_name': 'toto',
|
||||
'job_id': self.job.id,
|
||||
'interviewer_ids': self.simple_user.ids,
|
||||
})
|
||||
self.assertTrue(interviewer_group.id in self.simple_user.groups_id.ids, "Simple User should be added as interviewer")
|
||||
self.assertTrue(interviewer_group.id in self.simple_user.all_group_ids.ids, "Simple User should be added as interviewer")
|
||||
|
||||
applicant.interviewer_ids = False
|
||||
self.assertFalse(interviewer_group.id in self.simple_user.groups_id.ids, "Simple User should be removed from interviewer")
|
||||
self.assertFalse(interviewer_group.id in self.simple_user.all_group_ids.ids, "Simple User should be removed from interviewer")
|
||||
|
||||
self.job.interviewer_ids = self.simple_user.ids
|
||||
applicant.interviewer_ids = self.simple_user.ids
|
||||
self.assertTrue(interviewer_group.id in self.simple_user.groups_id.ids, "Simple User should be added as interviewer")
|
||||
self.assertTrue(interviewer_group.id in self.simple_user.all_group_ids.ids, "Simple User should be added as interviewer")
|
||||
|
||||
applicant.interviewer_ids = False
|
||||
self.assertTrue(interviewer_group.id in self.simple_user.groups_id.ids, "Simple User should stay interviewer")
|
||||
self.assertTrue(interviewer_group.id in self.simple_user.all_group_ids.ids, "Simple User should stay interviewer")
|
||||
|
||||
self.job.write({'interviewer_ids': [(5, 0, 0)]})
|
||||
applicant.interviewer_ids = self.simple_user.ids
|
||||
self.assertTrue(interviewer_group.id in self.simple_user.groups_id.ids, "Simple User should stay interviewer")
|
||||
self.assertTrue(interviewer_group.id in self.simple_user.all_group_ids.ids, "Simple User should stay interviewer")
|
||||
|
||||
applicant.interviewer_ids = False
|
||||
self.assertFalse(interviewer_group.id in self.simple_user.groups_id.ids, "Simple User should be removed from interviewer")
|
||||
|
||||
# A Manager should not be added to the Interviewer group
|
||||
self.assertFalse(interviewer_group.id in self.manager_user.groups_id.ids, "Manager User should not be interviewer")
|
||||
applicant.interviewer_ids = self.manager_user.ids
|
||||
self.assertFalse(interviewer_group.id in self.manager_user.groups_id.ids, "Manager User should not be added in Interviewer group")
|
||||
self.assertFalse(interviewer_group.id in self.simple_user.all_group_ids.ids, "Simple User should be removed from interviewer")
|
||||
|
||||
def test_interviewer_access_rights(self):
|
||||
applicant = self.env['hr.applicant'].create({
|
||||
'name': 'toto',
|
||||
'partner_name': 'toto',
|
||||
'job_id': self.job.id,
|
||||
})
|
||||
|
||||
with self.assertRaises(AccessError):
|
||||
applicant.with_user(self.interviewer_user).read()
|
||||
|
||||
applicant = self.env['hr.applicant'].create({
|
||||
'name': 'toto',
|
||||
'partner_name': 'toto',
|
||||
'job_id': self.job.id,
|
||||
'interviewer_ids': self.interviewer_user.ids,
|
||||
|
|
@ -91,7 +88,6 @@ class TestRecruitmentInterviewer(MailCommon):
|
|||
|
||||
self.job.interviewer_ids = self.interviewer_user.ids
|
||||
applicant = self.env['hr.applicant'].create({
|
||||
'name': 'toto',
|
||||
'partner_name': 'toto',
|
||||
'job_id': self.job.id,
|
||||
})
|
||||
|
|
@ -101,32 +97,60 @@ class TestRecruitmentInterviewer(MailCommon):
|
|||
applicant.with_user(self.interviewer_user).interviewer_ids = self.simple_user.ids
|
||||
self.assertEqual(self.simple_user, applicant.interviewer_ids)
|
||||
|
||||
with self.assertRaises(AccessError):
|
||||
with self.assertRaises(UserError):
|
||||
applicant.with_user(self.interviewer_user).create_employee_from_applicant()
|
||||
|
||||
def test_interviewer_chatter(self):
|
||||
self.manager_user.notification_type = 'email'
|
||||
self.interviewer_user.notification_type = 'email'
|
||||
def test_update_interviewer_for_multiple_applicants(self):
|
||||
"""
|
||||
Test that assigning interviewer to multiple applicants.
|
||||
"""
|
||||
interviewer_user_1 = new_test_user(self.env, 'sma',
|
||||
groups='base.group_user,hr_recruitment.group_hr_recruitment_interviewer',
|
||||
name='Recruitment Interviewer1', email='sma@example.com')
|
||||
|
||||
interviewer_user_2 = new_test_user(self.env, 'jab',
|
||||
groups='base.group_user,hr_recruitment.group_hr_recruitment_interviewer',
|
||||
name='Recruitment Interviewer2', email='jab@example.com')
|
||||
|
||||
interviewer_user_3 = new_test_user(self.env, 'aad',
|
||||
groups='base.group_user,hr_recruitment.group_hr_recruitment_interviewer',
|
||||
name='Recruitment Interviewer3', email='aad@example.com')
|
||||
|
||||
applicant = self.env['hr.applicant'].create({
|
||||
'name': 'toto',
|
||||
'partner_name': 'toto',
|
||||
'partner_name': 'Applicant',
|
||||
'job_id': self.job.id,
|
||||
'interviewer_ids': self.interviewer_user.ids,
|
||||
'interviewer_ids': [(6, 0, [interviewer_user_1.id])]
|
||||
})
|
||||
applicants = applicant + applicant.copy({'interviewer_ids': [(6, 0, [interviewer_user_2.id])]})
|
||||
|
||||
applicant.message_subscribe(partner_ids=[self.interviewer_user.partner_id.id])
|
||||
# update interviewer to multiple applicants.
|
||||
applicants.write({'interviewer_ids': [(4, interviewer_user_3.id)]})
|
||||
|
||||
with self.mock_mail_gateway():
|
||||
message = applicant.message_post(body='A super secret message', message_type='comment', subtype_xmlid='mail.mt_comment')
|
||||
# Ensure all interviewers are assigned
|
||||
self.assertCountEqual(
|
||||
applicants.interviewer_ids.ids, [interviewer_user_1.id, interviewer_user_2.id, interviewer_user_3.id]
|
||||
)
|
||||
|
||||
with self.assertRaises(AccessError):
|
||||
message.with_user(self.interviewer_user).read()
|
||||
# Checked that notification message is created
|
||||
message = self.env['mail.message'].search([('res_id', '=', applicant.id)], limit=1)
|
||||
self.assertEqual(message.subject, f"You have been assigned as an interviewer for {applicant.display_name}")
|
||||
|
||||
try:
|
||||
self._find_mail_mail_wpartners(self.interviewer_user.partner_id, None)
|
||||
except AssertionError:
|
||||
pass
|
||||
else:
|
||||
raise AssertionError('No mail.mail should be sent to members of Interviewer group')
|
||||
|
||||
self.assertSentEmail(self.env.user.partner_id, [self.manager_user.partner_id])
|
||||
def test_update_recruiter_for_ongoing_application(self):
|
||||
Application = self.env['hr.applicant']
|
||||
new_manager_user = new_test_user(self.env, 'thala',
|
||||
groups='base.group_user,hr_recruitment.group_hr_recruitment_manager',
|
||||
name='New Recruitment Manager', email='thala@example.com')
|
||||
ongoing_application = Application.create({
|
||||
'job_id': self.job.id,
|
||||
'user_id': self.manager_user.id,
|
||||
'application_status': 'ongoing',
|
||||
})
|
||||
hired_application = Application.create({
|
||||
'job_id': self.job.id,
|
||||
'user_id': self.manager_user.id,
|
||||
'date_closed': fields.Datetime.now(),
|
||||
'application_status': 'hired',
|
||||
})
|
||||
self.job.write({'user_id': new_manager_user.id})
|
||||
self.assertEqual(ongoing_application.user_id, new_manager_user)
|
||||
self.assertEqual(hired_application.user_id, self.manager_user)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue