def test__apply(test_teardown):
    """
    Verifies that it is possible to apply to a job.

    This test also verifies querying applications by Job & User ID.
    """
    no_applications = get_applications_internal(job_id, 'job')
    assert len(no_applications) == 0

    resume = "/resumes/resume.pdf"
    apply_internal(user_id, job_id, resume, comment)

    new_job_id = "5"
    assert new_job_id != job_id
    apply_internal(user_id, new_job_id, resume, comment)

    applications_by_job = get_applications_internal(new_job_id, 'job')
    applications_by_user = get_applications_internal(user_id, 'user')

    assert len(applications_by_user) == 2
    assert len(applications_by_job) == 1
    assert applications_by_user[0][
        'is_inhouse_posting'] and applications_by_job[0]['is_inhouse_posting']
    assert applications_by_user[0]['resume'] == applications_by_job[0][
        'resume'] == resume
    assert applications_by_user[0]['job_id'] == job_id
    assert applications_by_user[0]['job_id'] != applications_by_job[0]['job_id']
    assert applications_by_user[0]['user_id'] == applications_by_job[0][
        'user_id'] == user_id
    assert applications_by_user[0]['application_id'] >= 0
def test__apply_with_missing_info(test_teardown):
    """
    Failure scenario: Missing information should throw errors.
    """
    resume = ""
    result = apply_internal(user_id, job_id, resume, comment)
    assert result['status'] == "Please enter a resume!"
def test__update_status_empty_string(test_teardown):
    """
    Failure scenario: Empty status should give an error
    """
    user_id = "someid456"

    # We create an application in the DB
    applications = apply_internal(user_id, job_id, resume, comment)

    # We update the status of this application
    new_status = ""
    result = update_status(applications[0]['id'], new_status, user_id)
    assert result['status'] == "You must provide a non-empty new status."
def test__withdraw(test_teardown):
    """
    Basic test for removing applications
    """
    user_id = "someid456"

    # We create an application in the DB
    applications = apply_internal(user_id, job_id, resume, comment)
    applications_by_user = get_applications_internal(user_id, 'user')
    assert len(applications_by_user) == 1

    # We delete the application
    withdraw_application(applications_by_user[0]['application_id'], user_id)
    applications_by_user = get_applications_internal(user_id, 'user')
    assert len(applications_by_user) == 0
def test__update_status(test_teardown):
    """
    Basic test for resetting the status
    """
    user_id = "someid456"
    new_status = "new!"

    # We create an application in the DB
    applications = apply_internal(user_id, job_id, resume, comment)
    updated_applications = update_status(applications[0]['id'], new_status,
                                         user_id)

    assert applications[0]['status'] != new_status
    assert updated_applications[0]['status'] == new_status
    assert updated_applications[0]['id'] == applications[0]['id']
Пример #6
0
def apply_internal_endpoint():
  """
  Enables user to apply to an external job posting.

  Request body:
  - `job_id`: ID of the job the user is applying to
  - `resume`: Handy tool for applying to jobs
  """
  content = request.json
  headers = request.headers

  if not validate_authentication(headers):
    return jsonify({"status": auth_error})

  user_id = query_auth(headers['Authorization'])['_id']
  job_id = content.get('job_id', '')
  resume = content.get('resume', '')
  comment = content.get('comment', '')
  return jsonify(apply_internal(user_id, job_id, resume, comment))