Beispiel #1
0
 def test_accept_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)
     response = accept_applicant(self.applicant.id, current_user=self.recruiter)
     self.assertDictEqual(response, {'status': 'ok'})
     self.assertEqual(len(self.application.notes), 2)
     self.assertTrue(self.application.is_accepted)
     self.assertTrue(self.application.is_concluded)
     self.assertFalse(self.application.is_invited)
Beispiel #2
0
 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)
Beispiel #3
0
 def test_applicant_listed_after_claiming(self):
     self.application.is_submitted = True
     self.application.recruiter_id = None
     db.session.commit()
     claim_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'], 'claimed')
     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'], 'claimed')
Beispiel #4
0
 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)
Beispiel #5
0
 def test_release_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 = release_applicant(self.applicant.id, current_user=self.recruiter)
     self.assertDictEqual(response, {'status': 'ok'})
     self.assertEqual(len(self.application.notes), 2)
Beispiel #6
0
 def test_claim_applicant(self):
     application = Application.get_for_user(self.applicant.id)
     self.assertEqual(len(application.notes), 0)
     response = claim_applicant(self.applicant.id, current_user=self.other_recruiter)
     self.assertEqual(len(application.notes), 1)
     self.assertDictEqual(response, {'status': 'ok'})
     self.assertEqual(application.recruiter_id, self.other_recruiter.id)
     self.assertFalse(application.is_concluded)
     self.assertFalse(application.is_accepted)
     self.assertFalse(application.is_invited)
Beispiel #7
0
 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)
Beispiel #8
0
def api_claim_applicant(applicant_id):
    """
    Assigns recruiter as the recruiter for a given unclaimed applicant.

    Args:
        applicant_id (int): User key of applicant

    Returns:
        {'status': 'ok'} if applicant is successfully claimed

    Error codes:
        Forbidden (403): If recruiter_id is not a recruiter, or logged in user
            is not an admin, senior recruiter, or this particular recruiter
        Bad Request (400): If applicant_id is not an unclaimed applicant
    """
    return jsonify(claim_applicant(applicant_id, current_user=current_user))
Beispiel #9
0
 def test_claim_unsubmitted_applicant(self):
     self.application.is_submitted = False
     db.session.commit()
     with self.assertRaises(BadRequestException):
         claim_applicant(self.applicant.id, current_user=self.recruiter)
Beispiel #10
0
 def test_reject_unaccept_applicant_as_other_recruiter(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.other_recruiter)
Beispiel #11
0
 def test_claim_taken_applicant(self):
     claim_applicant(self.applicant.id, current_user=self.recruiter)
     with self.assertRaises(BadRequestException):
         claim_applicant(self.applicant.id, current_user=self.other_recruiter)
Beispiel #12
0
 def test_invite_unclaimed_applicant(self):
     claim_applicant(self.applicant.id, current_user=self.recruiter)
     release_applicant(self.applicant.id, current_user=self.recruiter)
     with self.assertRaises(BadRequestException):
         invite_applicant(self.applicant.id, current_user=self.senior_recruiter)
Beispiel #13
0
 def test_reject_applicant_as_admin(self):
     claim_applicant(self.applicant.id, current_user=self.recruiter)
     with self.assertRaises(ForbiddenException):
         reject_applicant(self.applicant.id, current_user=self.admin)
Beispiel #14
0
 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)
Beispiel #15
0
 def test_accept_applicant_as_non_recruiter(self):
     claim_applicant(self.applicant.id, current_user=self.recruiter)
     with self.assertRaises(ForbiddenException):
         accept_applicant(self.applicant.id, current_user=self.not_applicant)
Beispiel #16
0
 def test_reject_applicant_as_senior_recruiter(self):
     claim_applicant(self.applicant.id, current_user=self.recruiter)
     response = reject_applicant(self.applicant.id, current_user=self.recruiter)
     self.assertDictEqual(response, {'status': 'ok'})
     self.assertFalse(self.application.is_accepted)
     self.assertTrue(self.application.is_concluded)
Beispiel #17
0
 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)
Beispiel #18
0
 def test_not_recruiter_claim_applicant(self):
     with self.assertRaises(ForbiddenException):
         claim_applicant(self.applicant.id, current_user=self.not_applicant)
Beispiel #19
0
 def test_claim_not_applicant(self):
     with self.assertRaises(BadRequestException):
         claim_applicant(self.not_applicant.id, current_user=self.recruiter)
Beispiel #20
0
 def test_unaccept_before_accept(self):
     claim_applicant(self.applicant.id, current_user=self.recruiter)
     with self.assertRaises(ForbiddenException):
         unaccept_applicant(self.applicant.id, current_user=self.senior_recruiter)
Beispiel #21
0
 def test_release_applicant_as_senior_recruiter(self):
     claim_applicant(self.applicant.id, current_user=self.recruiter)
     response = release_applicant(self.applicant.id, current_user=self.senior_recruiter)
     self.assertDictEqual(response, {'status': 'ok'})