test: Exit Interview
This commit is contained in:
		
							parent
							
								
									0a937dc050
								
							
						
					
					
						commit
						8db21e065c
					
				| @ -30,7 +30,7 @@ | ||||
|   "reference_document_name", | ||||
|   "interview_summary_section", | ||||
|   "interviewers", | ||||
|   "text_editor_12", | ||||
|   "interview_summary", | ||||
|   "employee_status_section", | ||||
|   "employee_status", | ||||
|   "amended_from" | ||||
| @ -112,11 +112,6 @@ | ||||
|    "fieldtype": "Section Break", | ||||
|    "label": "Interview Details" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "text_editor_12", | ||||
|    "fieldtype": "Text Editor", | ||||
|    "label": "Interview Summary" | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "column_break_10", | ||||
|    "fieldtype": "Column Break" | ||||
| @ -213,12 +208,17 @@ | ||||
|    "options": "Exit Interview", | ||||
|    "print_hide": 1, | ||||
|    "read_only": 1 | ||||
|   }, | ||||
|   { | ||||
|    "fieldname": "interview_summary", | ||||
|    "fieldtype": "Text Editor", | ||||
|    "label": "Interview Summary" | ||||
|   } | ||||
|  ], | ||||
|  "index_web_pages_for_search": 1, | ||||
|  "is_submittable": 1, | ||||
|  "links": [], | ||||
|  "modified": "2021-12-05 18:56:34.856854", | ||||
|  "modified": "2021-12-07 14:08:29.355390", | ||||
|  "modified_by": "Administrator", | ||||
|  "module": "HR", | ||||
|  "name": "Exit Interview", | ||||
|  | ||||
| @ -109,7 +109,7 @@ def validate_questionnaire_settings(): | ||||
| 
 | ||||
| 	if not settings.exit_questionnaire_web_form or not settings.exit_questionnaire_notification_template: | ||||
| 		frappe.throw( | ||||
| 			message=_('Please set {0} and {1} in {2}.').format( | ||||
| 			_('Please set {0} and {1} in {2}.').format( | ||||
| 				frappe.bold('Exit Questionnaire Web Form'), | ||||
| 				frappe.bold('Notification Template'), | ||||
| 				get_link_to_form('HR Settings', 'HR Settings')), | ||||
| @ -122,8 +122,10 @@ def show_email_summary(email_success, email_failure): | ||||
| 	if email_success: | ||||
| 		message += _('{0}: {1}').format( | ||||
| 			frappe.bold('Sent Successfully'), ', '.join(email_success)) | ||||
| 	if message and email_failure: | ||||
| 		message += '<br><br>' | ||||
| 	if email_failure: | ||||
| 		message += '<br><br>' + _('{0} due to missing email information for employee(s): {1}').format( | ||||
| 		message += _('{0} due to missing email information for employee(s): {1}').format( | ||||
| 			frappe.bold('Sending Failed'), ', '.join(email_failure)) | ||||
| 
 | ||||
| 	frappe.msgprint(message, title=_('Exit Questionnaire'), indicator='blue', is_minimizable=True, wide=True) | ||||
| @ -1,9 +1,89 @@ | ||||
| # Copyright (c) 2021, Frappe Technologies Pvt. Ltd. and Contributors | ||||
| # See license.txt | ||||
| 
 | ||||
| # import frappe | ||||
| import unittest | ||||
| 
 | ||||
| import frappe | ||||
| from frappe.core.doctype.user_permission.test_user_permission import create_user | ||||
| from frappe.tests.test_webform import create_custom_doctype, create_webform | ||||
| from frappe.utils import getdate | ||||
| 
 | ||||
| from erpnext.hr.doctype.employee.test_employee import make_employee | ||||
| from erpnext.hr.doctype.exit_interview.exit_interview import send_exit_questionnaire | ||||
| 
 | ||||
| 
 | ||||
| class TestExitInterview(unittest.TestCase): | ||||
| 	pass | ||||
| 	def test_duplicate_interview(self): | ||||
| 		employee = make_employee('employeeexit1@example.com') | ||||
| 		frappe.db.set_value('Employee', employee, 'relieving_date', getdate()) | ||||
| 		interview = create_exit_interview(employee) | ||||
| 
 | ||||
| 		doc = frappe.copy_doc(interview) | ||||
| 		self.assertRaises(frappe.DuplicateEntryError, doc.save) | ||||
| 
 | ||||
| 	def test_relieving_date_validation(self): | ||||
| 		employee = make_employee('employeeexit2@example.com') | ||||
| 
 | ||||
| 		interview = create_exit_interview(employee, save=False) | ||||
| 		self.assertRaises(frappe.ValidationError, interview.save) | ||||
| 
 | ||||
| 		# set relieving date | ||||
| 		frappe.db.set_value('Employee', employee, 'relieving_date', getdate()) | ||||
| 		interview = create_exit_interview(employee) | ||||
| 		self.assertTrue(interview.name) | ||||
| 
 | ||||
| 	def test_interview_date_updated_in_employee_master(self): | ||||
| 		employee = make_employee('employeeexit3@example.com') | ||||
| 		frappe.db.set_value('Employee', employee, 'relieving_date', getdate()) | ||||
| 
 | ||||
| 		interview = create_exit_interview(employee) | ||||
| 		interview.status = 'Completed' | ||||
| 		interview.employee_status = 'Exit Confirmed' | ||||
| 
 | ||||
| 		# exit interview date updated on submit | ||||
| 		interview.submit() | ||||
| 		self.assertEqual(frappe.db.get_value('Employee', employee, 'held_on'), interview.date) | ||||
| 
 | ||||
| 		# exit interview reset on cancel | ||||
| 		interview.reload() | ||||
| 		interview.cancel() | ||||
| 		self.assertEqual(frappe.db.get_value('Employee', employee, 'held_on'), None) | ||||
| 
 | ||||
| 	def test_send_exit_questionnaire(self): | ||||
| 		create_custom_doctype() | ||||
| 		create_webform() | ||||
| 
 | ||||
| 		webform = frappe.db.get_all('Web Form', limit=1) | ||||
| 		frappe.db.set_value('HR Settings', 'HR Settings', 'exit_questionnaire_web_form', webform[0].name) | ||||
| 
 | ||||
| 		employee = make_employee('employeeexit3@example.com') | ||||
| 		frappe.db.set_value('Employee', employee, 'relieving_date', getdate()) | ||||
| 
 | ||||
| 		interview = create_exit_interview(employee) | ||||
| 		send_exit_questionnaire([interview]) | ||||
| 
 | ||||
| 		email_queue = frappe.db.get_all('Email Queue', ['name', 'message'], limit=1) | ||||
| 		self.assertTrue('Subject: Exit Questionnaire Notification' in email_queue[0].message) | ||||
| 
 | ||||
| 	def tearDown(self): | ||||
| 		frappe.db.rollback() | ||||
| 
 | ||||
| 
 | ||||
| def create_exit_interview(employee, save=True): | ||||
| 	interviewer = create_user('test_interviewer1@example.com') | ||||
| 
 | ||||
| 	doc = frappe.get_doc({ | ||||
| 		'doctype': 'Exit Interview', | ||||
| 		'employee': employee, | ||||
| 		'company': '_Test Company', | ||||
| 		'status': 'Pending', | ||||
| 		'date': getdate(), | ||||
| 		'interviewers': [{ | ||||
| 			'interviewer': interviewer.name | ||||
| 		}], | ||||
| 		'interview_summary': 'Test' | ||||
| 	}) | ||||
| 
 | ||||
| 	if save: | ||||
| 		return doc.insert() | ||||
| 	return doc | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user