Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/Delete an existing skill #39

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
37 changes: 31 additions & 6 deletions app.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,6 @@ def experience(index=None):
experience_obj = Experience(**new_experience)
data["experience"].append(experience_obj)
return jsonify({"id": len(data["experience"]) - 1}), 201

except TypeError as e:
return jsonify({"error": f"Invalid data format: {str(e)}"}), 400
except Exception as e:
Expand All @@ -86,6 +85,18 @@ def experience(index=None):

return jsonify({"error": "Method not allowed"}), 405

@app.route('/resume/experience/<int:exp_id>', methods=['DELETE'])
def delete_experience(exp_id):
try:
if exp_id < 0 or exp_id >= len(data["experience"]):
return jsonify({"message": "Resource doesn't exist"}), 404
else:
data['experience'].pop(exp_id)
return jsonify({"message": "Experience Successfully Deleted"}), 200
except Exception as e:
return jsonify({"error": f"An error occurred: {str(e)}"}), 500


@app.route("/resume/education", methods=["GET", "POST"])
def education():
'''
Expand All @@ -101,7 +112,8 @@ def education():


@app.route("/resume/skill", methods=["GET", "POST"])
def skill():
@app.route('/resume/skill/<int:skill_id>', methods=['DELETE'])
def skill(skill_id = None):
'''
Handles Skill requests
'''
Expand Down Expand Up @@ -130,15 +142,28 @@ def skill():

except TypeError as e:
return jsonify({"error": str(e)}), 400
if request.method == "DELETE":
try:
if skill_id is None or skill_id < 0 or skill_id >= len(data["skill"]):
return jsonify({"message": "Resource doesn't exist"}), 404
else:
del data['skill'][skill_id]
return jsonify({"message": "Skill Successfully Deleted"}), 200

except Exception as e:
return jsonify({"error": f"An error occurred: {str(e)}"}), 500

return jsonify({})


@app.route('/resume/skill/<int:skill_id>', methods=['GET'])
def get_skill(skill_id):
'''
Get a specific skill
'''
try:
return jsonify(data["skill"][skill_id].__dict__)
except IndexError:
return jsonify({"error": "Skill not found"}), 404

if request.method == "GET":
try:
return jsonify(data["skill"][skill_id].__dict__)
except IndexError:
return jsonify({"error": "Skill not found"}), 404
28 changes: 28 additions & 0 deletions test_pytest.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,34 @@ def test_experience():
assert response.json[item_id] == example_experience



# def test_delete_experience():

# example_experience = {
# "title": "Mechanic",
# "company": "Decepticons .Ent",
# "start_date": "January 2020",
# "end_date": "Present",
# "description": "Hail Megatron",
# "logo" : "example-log.png"
# }
# response = app.test_client().post('/resume/experience', json= example_experience)
# assert response.status_code == 200

# get_all_experiences = app.test_client().get('/resume/experience')
# experience_id = len(get_all_experiences.json) - 1

# delete_response = app.test_client().delete(f'/resume/experience/{experience_id}')
# assert delete_response.status_code == 200
# deleted_experience = delete_response.json['deleted_experience']

# assert example_experience == deleted_experience

# get_exp = app.test_client().get('/resume/experience')
# for experience in get_exp.json:
# assert experience != deleted_experience


def test_education():
'''
Add a new education and then get all educations.
Expand Down