def test_accepted_history_with_note(self): add_applicant_note(self.applicant.id, "A note", title='A Title', is_chat_log=True, current_user=self.recruiter) accept_applicant(self.applicant.id, current_user=self.recruiter) result = application_history(self.applicant.id, current_user=self.admin) self.assertIsInstance(result, dict) self.assertIn('info', result) self.assertIsInstance(result['info'], dict) self.assertEqual(len(result['info']), 1) the_key = list(result['info'].keys())[0] app_data = result['info'][the_key] self.assertEqual(app_data['recruiter_id'], self.recruiter.id) self.assertEqual(app_data['recruiter_name'], self.recruiter.name) self.assertEqual(app_data['status'], 'accepted') self.assertEqual(len(app_data['notes']), 2) note_data = app_data['notes'][0] self.assertEqual(note_data['text'], 'A note') self.assertEqual(note_data['title'], 'A Title') self.assertEqual(note_data['author'], self.recruiter.name) self.assertTrue(note_data['is_chat_log']) for key in ('timestamp', 'author', 'title', 'text', 'id', 'is_chat_log'): self.assertIn(key, note_data)
def test_add_applicant_note_on_accepted(self): accept_applicant(self.applicant.id, current_user=self.recruiter) notes = self.application.notes self.assertEqual(len(notes), 1) response = add_applicant_note(self.applicant.id, "A note", current_user=self.senior_recruiter) self.assertDictEqual(response, {'status': 'ok'}) notes = self.application.notes self.assertEqual(len(notes), 2) self.assertEqual(notes[1].text, "A note") self.assertEqual(notes[1].title, None)
def test_two_applications(self): reject_applicant(self.applicant.id, current_user=self.recruiter) start_application(self.applicant) submit_application(self.applicant) claim_applicant(self.applicant.id, current_user=self.recruiter) accept_applicant(self.applicant.id, current_user=self.recruiter) result = application_history(self.applicant.id, current_user=self.admin) self.assertIsInstance(result, dict) self.assertIn('info', result) self.assertIsInstance(result['info'], dict) self.assertEqual(len(result['info']), 2)
def test_sr_reject_accepted_applicant(self): self.assertEqual(len(self.application.notes), 0) claim_applicant(self.applicant.id, current_user=self.recruiter) self.assertEqual(len(self.application.notes), 1) accept_applicant(self.applicant.id, current_user=self.recruiter) self.assertEqual(len(self.application.notes), 2) response = reject_applicant(self.applicant.id, current_user=self.senior_recruiter) self.assertEqual(len(self.application.notes), 3) self.assertDictEqual(response, {'status': 'ok'}) self.assertFalse(self.application.is_accepted) self.assertTrue(self.application.is_concluded) self.assertFalse(self.application.is_invited)
def test_applicant_list_after_invitation(self): self.application.is_submitted = True db.session.commit() accept_applicant(self.applicant.id, current_user=self.recruiter) self.assertTrue(self.application.is_accepted) self.assertTrue(self.application.is_concluded) invite_applicant(self.applicant.id, current_user=self.senior_recruiter) applicant_list = get_applicant_list(current_user=self.recruiter)[ 'info'] self.assertEqual(len(applicant_list), 0) applicant_list = get_applicant_list(current_user=self.senior_recruiter)['info'] self.assertEqual(len(applicant_list), 0)
def test_accepted_history(self): accept_applicant(self.applicant.id, current_user=self.recruiter) result = application_history(self.applicant.id, current_user=self.admin) self.assertIsInstance(result, dict) self.assertIn('info', result) self.assertIsInstance(result['info'], dict) self.assertEqual(len(result['info']), 1) the_key = list(result['info'].keys())[0] app_data = result['info'][the_key] self.assertEqual(app_data['recruiter_id'], self.recruiter.id) self.assertEqual(app_data['recruiter_name'], self.recruiter.name) self.assertEqual(app_data['status'], 'accepted') self.assertEqual(len(app_data['notes']), 1)
def test_applicant_list_after_acceptance(self): self.application.is_submitted = True db.session.commit() accept_applicant(self.applicant.id, current_user=self.recruiter) applicant_list = get_applicant_list(current_user=self.recruiter)[ 'info'] self.assertEqual(len(applicant_list), 1) self.assertIn(self.application.user_id, applicant_list) self.assertEqual(applicant_list[self.application.user_id]['status'], 'accepted') applicant_list = get_applicant_list(current_user=self.senior_recruiter)['info'] self.assertEqual(len(applicant_list), 1) self.assertIn(self.application.user_id, applicant_list) self.assertEqual(applicant_list[self.application.user_id]['status'], 'accepted')
def test_invited_is_recently_invited(self): response = get_recently_invited_applicants(current_user=self.admin) self.assertEqual(len(response['info']), 0) claim_applicant(self.applicant.id, current_user=self.recruiter) accept_applicant(self.applicant.id, current_user=self.recruiter) response = get_recently_invited_applicants(current_user=self.admin) self.assertEqual(len(response['info']), 0) invite_applicant(self.applicant.id, current_user=self.senior_recruiter) response = get_recently_invited_applicants(current_user=self.admin) self.assertEqual(len(response['info']), 1) self.assertEqual(response['info'][0]['user_id'], self.applicant.id) self.assertEqual(response['info'][0]['user_name'], self.applicant.name) self.assertEqual(response['info'][0]['recruiter_id'], self.recruiter.id) self.assertEqual(response['info'][0]['recruiter_name'], self.recruiter.name) self.assertIsInstance(response['info'][0]['last_note_time'], str)
def test_unaccept_applicant(self): self.assertEqual(len(self.application.notes), 0) response = claim_applicant(self.applicant.id, current_user=self.recruiter) self.assertDictEqual(response, {'status': 'ok'}) self.assertEqual(len(self.application.notes), 1) response = accept_applicant(self.applicant.id, current_user=self.recruiter) self.assertTrue(self.application.is_accepted) response = unaccept_applicant(self.applicant.id, current_user=self.senior_recruiter) self.assertFalse(self.application.is_accepted) self.assertEqual(self.application.recruiter_id, self.recruiter.id) self.assertDictEqual(response, {'status': 'ok'}) self.assertEqual(len(self.application.notes), 3)
def api_accept_applicant(applicant_id): """ Sets a new applicant's status to "accepted". Args: applicant_id (int): User key of applicant Returns: {'status': 'ok'} if applicant is successfully accepted Error codes: Forbidden (403): If logged in user is not a senior recruiter or a recruiter who has claimed this applicant (including if they are not an applicant). """ return jsonify(accept_applicant(applicant_id, current_user=current_user))
def test_invite_accepted_applicant(self): claim_applicant(self.applicant.id, current_user=self.recruiter) accept_applicant(self.applicant.id, current_user=self.recruiter) invite_applicant(self.applicant.id, current_user=self.senior_recruiter) self.assertTrue(self.application.is_accepted) self.assertTrue(self.application.is_invited)
def test_accept_applicant_as_admin(self): claim_applicant(self.applicant.id, current_user=self.recruiter) with self.assertRaises(ForbiddenException): accept_applicant(self.applicant.id, current_user=self.admin)
def test_accept_applicant_as_senior_recruiter(self): claim_applicant(self.applicant.id, current_user=self.recruiter) response = accept_applicant(self.applicant.id, current_user=self.senior_recruiter) self.assertDictEqual(response, {'status': 'ok'}) self.assertTrue(self.application.is_accepted)
def test_accept_not_applicant(self): with self.assertRaises(ForbiddenException): accept_applicant(self.not_applicant.id, current_user=self.recruiter)
def test_sr_reject_invited_applicant_forbidden(self): claim_applicant(self.applicant.id, current_user=self.recruiter) accept_applicant(self.applicant.id, current_user=self.recruiter) invite_applicant(self.applicant.id, current_user=self.senior_recruiter) with self.assertRaises(ForbiddenException): reject_applicant(self.applicant.id, current_user=self.senior_recruiter)
def test_reject_unaccept_applicant_as_not_applicant(self): claim_applicant(self.applicant.id, current_user=self.recruiter) accept_applicant(self.applicant.id, current_user=self.recruiter) with self.assertRaises(ForbiddenException): unaccept_applicant(self.applicant.id, current_user=self.not_applicant)