Beispiel #1
0
 def test_get_applicant_notes_forbidden(self):
     add_applicant_note(self.applicant.id,
                        "A note",
                        current_user=self.recruiter)
     for user in (self.other_recruiter, self.not_applicant):
         with self.assertRaises(ForbiddenException):
             get_applicant_notes(self.applicant.id, current_user=user)
Beispiel #2
0
 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)
Beispiel #3
0
 def test_cannot_modify_others_note(self):
     add_applicant_note(self.applicant.id,
                        'A note',
                        current_user=self.senior_recruiter)
     note_data = get_applicant_notes(
         self.applicant.id, current_user=self.senior_recruiter)['info'][0]
     with self.assertRaises(ForbiddenException):
         edit_applicant_note(note_data['id'],
                             'Edited note',
                             current_user=self.recruiter)
Beispiel #4
0
 def test_get_another_recruiters_note(self):
     add_applicant_note(self.applicant.id,
                        "A note",
                        current_user=self.senior_recruiter)
     notes = get_applicant_notes(self.applicant.id,
                                 current_user=self.senior_recruiter)['info']
     self.assertEqual(notes[0]['can_edit'], True)
     other_view_of_notes = get_applicant_notes(
         self.applicant.id, current_user=self.recruiter)['info']
     self.assertEqual(other_view_of_notes[0]['can_edit'], False)
Beispiel #5
0
 def test_edit_note_forbidden(self):
     add_applicant_note(self.applicant.id,
                        'A note',
                        title='Title',
                        current_user=self.recruiter)
     note_data = get_applicant_notes(self.applicant.id,
                                     current_user=self.recruiter)['info'][0]
     for user in (self.applicant, self.not_applicant, self.other_recruiter):
         with self.assertRaises(ForbiddenException):
             edit_applicant_note(note_data['id'],
                                 'Edited note',
                                 title='New Title',
                                 current_user=user)
Beispiel #6
0
 def test_senior_recruiter_modify_own_note(self):
     add_applicant_note(self.applicant.id,
                        'A note',
                        current_user=self.senior_recruiter)
     note_data = get_applicant_notes(
         self.applicant.id, current_user=self.senior_recruiter)['info'][0]
     edit_applicant_note(note_data['id'],
                         'Edited note',
                         current_user=self.senior_recruiter)
     new_note_data = get_applicant_notes(
         self.applicant.id, current_user=self.senior_recruiter)['info'][0]
     self.assertEqual(note_data['id'], new_note_data['id'])
     self.assertEqual(new_note_data['text'], 'Edited note')
Beispiel #7
0
 def test_get_applicant_notes_without_title(self):
     add_applicant_note(self.applicant.id,
                        "A note",
                        current_user=self.recruiter)
     response = get_applicant_notes(self.applicant.id,
                                    current_user=self.recruiter)
     self.assertIsInstance(response, dict)
     self.assertIn('info', response)
     self.assertEqual(len(response['info']), 1)
     data = response['info'][0]
     for key in ('timestamp', 'author', 'title', 'text', 'id',
                 'is_chat_log'):
         self.assertIn(key, data)
     self.assertEqual(data['title'], None)
     self.assertEqual(data['text'], 'A note')
     self.assertEqual(data['is_chat_log'], False)
Beispiel #8
0
 def test_modify_own_note_title(self):
     add_applicant_note(self.applicant.id,
                        'A note',
                        title='Title',
                        current_user=self.senior_recruiter)
     note_data = get_applicant_notes(
         self.applicant.id, current_user=self.senior_recruiter)['info'][0]
     response = edit_applicant_note(note_data['id'],
                                    'Edited note',
                                    title='New Title',
                                    current_user=self.senior_recruiter)
     self.assertEqual(response, {'status': 'ok'})
     new_note_data = get_applicant_notes(
         self.applicant.id, current_user=self.senior_recruiter)['info'][0]
     self.assertEqual(note_data['id'], new_note_data['id'])
     self.assertEqual(new_note_data['title'], 'New Title')
     self.assertEqual(new_note_data['text'], 'Edited note')
Beispiel #9
0
 def test_add_applicant_note_as_senior_recruiter(self):
     response = add_applicant_note(self.applicant.id,
                                   "A note",
                                   current_user=self.recruiter)
     self.assertDictEqual(response, {'status': 'ok'})
     notes = self.application.notes
     self.assertEqual(len(notes), 1)
     self.assertEqual(notes[0].text, "A note")
     augmented_notes = get_applicant_notes(
         self.applicant.id, current_user=self.recruiter)['info']
     self.assertEqual(augmented_notes[0]['can_edit'], True)
     response = add_applicant_note(self.applicant.id,
                                   "Another note",
                                   current_user=self.senior_recruiter)
     self.assertDictEqual(response, {'status': 'ok'})
     notes = self.application.notes
     self.assertEqual(len(notes), 2)
Beispiel #10
0
 def test_add_chat_log_with_title(self):
     response = add_applicant_note(self.applicant.id,
                                   "A note",
                                   title="A Title",
                                   is_chat_log=True,
                                   current_user=self.recruiter)
     self.assertDictEqual(response, {'status': 'ok'})
     notes = self.application.notes
     self.assertEqual(len(notes), 1)
     self.assertEqual(notes[0].text, "A note")
     self.assertEqual(notes[0].title, "A Title")
     augmented_notes = get_applicant_notes(
         self.applicant.id, current_user=self.recruiter)['info']
     self.assertEqual(augmented_notes[0]['can_edit'], True)
     response = add_applicant_note(self.applicant.id,
                                   "Another note",
                                   current_user=self.recruiter)
     self.assertDictEqual(response, {'status': 'ok'})
     notes = self.application.notes
     self.assertEqual(len(notes), 2)
Beispiel #11
0
 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)
Beispiel #12
0
def api_add_applicant_note(applicant_id):
    """
    Add a note for an applicant

    Args:
        applicant_id (int): User key of applicant
        text (in body): The note

    Returns:
        {'status': 'ok'} if note is successfully added

    Error codes:
        Forbidden (403): If logged in user is not a senior recruiter or a
            recruiter who has claimed this applicant
        Bad request (400): If the given user is not an applicant
    """
    return jsonify(
        add_applicant_note(applicant_id,
                           text=request.get_json().get('text'),
                           current_user=current_user))
Beispiel #13
0
def api_add_applicant_chat(applicant_id):
    """
    Add a partial chat log for an applicant

    Args:
        applicant_id (int): User key of applicant
        text (in body): The chat log
        title (in body): The chat log description

    Returns:
        {'status': 'ok'} if log is successfully added

    Error codes:
        Forbidden (403): If logged in user is not a senior recruiter or a
            recruiter who has claimed this applicant
        Bad request (400): If the given user is not an applicant
    """
    return jsonify(
        add_applicant_note(applicant_id,
                           text=request.get_json()['text'],
                           title=request.get_json()['title'],
                           is_chat_log=True,
                           current_user=current_user))
Beispiel #14
0
 def test_add_not_an_applicant_note_as_senior_recruiter(self):
     with self.assertRaises(BadRequestException):
         add_applicant_note(self.not_applicant.id,
                            "A note",
                            current_user=self.senior_recruiter)
Beispiel #15
0
 def test_add_applicant_note_non_recruiter(self):
     with self.assertRaises(ForbiddenException):
         add_applicant_note(self.applicant.id,
                            "A note",
                            current_user=self.not_applicant)
Beispiel #16
0
 def test_add_applicant_note_as_admin(self):
     with self.assertRaises(ForbiddenException):
         add_applicant_note(self.applicant.id,
                            "A note",
                            current_user=self.admin)