2 In Order to test process of Recruitment,
4 An applicant is interested in the job position. So he sends a resume by email.
6 !python {model: mail.thread}: |
8 request_file = open(addons.get_module_resource('hr_recruitment','test', 'resume.eml'),'rb')
9 request_message = request_file.read()
10 self.message_process(cr, uid, 'hr.applicant', request_message)
12 After getting the mail, I check the details of the new applicant.
14 !python {model: hr.applicant}: |
15 applicant_ids = self.search(cr, uid, [('email_from','=', 'Mr. Richard Anderson <Richard_Anderson@yahoo.com>')])
16 assert applicant_ids, "Applicant is not created after getting the mail"
17 applicant = self.browse(cr, uid, applicant_ids[0], context=context)
18 resume_ids = self.pool.get('ir.attachment').search(cr, uid, [('datas_fname','=','resume.doc'),('res_model','=',self._name),('res_id','=',applicant.id)])
19 assert applicant.name == "Application for the post of Jr.application Programmer.", "Applicant name does not match."
20 assert applicant.stage_id.id == ref('hr_recruitment.stage_job1'), "Stage should be 'Initial qualification' and is '%s'." % (applicant.stage_id.name)
21 assert applicant.state == "draft", "Applicant state should be 'draft'."
22 assert len(resume_ids), "Resume is not attached."
24 I refuse the applicant (hr_case_programmer)
26 !python {model: hr.applicant}: |
27 self.case_cancel(cr, uid, [ref("hr_case_programmer")])
29 I check the details of the refused applicant.
31 !python {model: hr.applicant}: |
32 applicant = self.browse(cr, uid, ref("hr_case_programmer"), context=context)
33 assert applicant.stage_id.id == ref('hr_recruitment.stage_job6'), "Stage should be 'Refused' and is %s." % (applicant.stage_id.name)
34 assert applicant.state == 'cancel', "Applicant is not in 'cancel' state."
36 I reset and re-open the previously refused applicant.
38 !python {model: hr.applicant}: |
39 self.case_reset(cr, uid, [ref("hr_case_programmer")])
40 self.case_open(cr, uid, [ref("hr_case_programmer")])
42 I check the details of the re-opened applicant.
44 !python {model: hr.applicant}: |
45 applicant = self.browse(cr, uid, ref("hr_case_programmer"), context=context)
46 assert applicant.stage_id.id == ref('hr_recruitment.stage_job2'), "Stage should be 'First interview' and is '%s'." % (applicant.stage_id.name)
47 assert applicant.state == "open", "Applicant state should be 'open'."
49 I assign the Job position to the applicant
51 !python {model: hr.applicant}: |
52 self.write(cr, uid, [ref('hr_case_programmer')], {'job_id':ref('hr.job_developer')})
54 I start communication with applicant, first schedule phonecall.
56 !python {model: hr.recruitment.job2phonecall}: |
57 context.update({'active_model': 'hr.applicant', 'active_id': ref("hr_case_programmer"), 'active_ids': [ref("hr_case_programmer")], 'survey_id': ref("survey_job_0")})
58 id = self.create(cr, uid, {}, context=context)
59 self.make_phonecall(cr, uid, [id], context=context)
61 I schedule meeting with applicant for interview.
63 !python {model: hr.applicant}: |
64 self.action_makeMeeting(cr, uid, [ref('hr_case_programmer')])
66 I check Initial Qualification of applicant.
68 !python {model: hr.applicant}: |
69 self.stage_next(cr, uid, [ref('hr_case_programmer')])
71 I schedule First Interview of applicant.
73 !python {model: hr.applicant}: |
74 self.stage_next(cr, uid, [ref('hr_case_programmer')])
76 On a successful First Interview of applicant, I schedule Second Interview.
78 !python {model: hr.applicant}: |
79 self.stage_next(cr, uid, [ref('hr_case_programmer')])
81 Applicant fillup the answer of the interview quetion.
83 !python {model: survey.question.wiz}: |
85 ctx.update({'active_model': 'hr.applicant', 'active_id': ref("hr_case_programmer"), 'active_ids': [ref("hr_case_programmer")], 'survey_id': ref("survey_job_0")})
86 self.fields_view_get(cr, uid, ref("survey.view_survey_question_message"),"form", context=ctx)
87 vals = self.default_get(cr, uid , [], context=ctx)
88 self.create(cr, uid, vals, context=ctx)
89 self.action_new_page(cr, uid, [ref("survey_job_0")], context=ctx)
91 I print Applicant fill up the interview quetion
93 !python {model: hr.applicant}: |
94 self.action_print_survey(cr, uid, [ref('hr_case_programmer')])
96 On a successful Second Interview of applicant Contract is Proposed to applicant.
98 !python {model: hr.applicant}: |
99 self.stage_next(cr, uid, [ref('hr_case_programmer')])
100 self.stage_previous(cr, uid, [ref('hr_case_programmer')])
104 !python {model: hr.applicant}: |
105 self.case_close_with_emp(cr, uid, [ref('hr_case_programmer')])
107 I check that applicant is "Hired".
109 !assert {model: hr.applicant, id: hr_case_programmer, string: Applicant state is done}:
112 I do not give employment to the hired the applicant.
114 !python {model: hired.employee}: |
115 context.update({'active_model': 'hr.applicant', 'active_ids': [ref("hr_recruitment.hr_case_programmer")], 'active_id': ref("hr_recruitment.hr_case_programmer")})
116 emp_id = self.create(cr, uid, {}, context=context)
117 self.case_close(cr, uid, [emp_id], context=context)
119 Now I give employment to hired applicant .
121 !python {model: hr.applicant}: |
122 hired_emp_obj = self.pool.get('hired.employee')
123 self.case_reset(cr, uid, [ref("hr_case_programmer")])
124 self.case_open(cr, uid, [ref("hr_case_programmer")])
125 context.update({'active_model': 'hr.applicant', 'active_ids': [ref("hr_recruitment.hr_case_programmer")], 'active_id': ref("hr_recruitment.hr_case_programmer")})
126 emp_hr_id = hired_emp_obj.create(cr, uid, {}, context=context)
127 hired_emp_obj.case_close_with_emp(cr, uid, [emp_hr_id], context=context)
129 Now hired employee want to be a partner of company.
131 !record {model: hr.recruitment.partner.create, id: hr_recruitment_partner_id1 }:
133 !python {model: hr.recruitment.partner.create}: |
134 context.update({'active_model': 'hr.applicant', 'active_ids': [ref("hr_recruitment.hr_case_programmer")], 'active_id': ref("hr_recruitment.hr_case_programmer")})
135 self.make_order(cr, uid, [ref("hr_recruitment_partner_id1")], context=context)