WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit e961f31

Browse files
authored
Merge pull request #39 from OloyedeTobi/remove-experience-DELETE
Added DELETE /resume/experience/<item_id> to delete an Experience by id and corresponding tests
2 parents f76b0a3 + db6f7fb commit e961f31

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

app.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,27 @@ def update_experience(item_id):
142142

143143
return jsonify({"error": "Experience not found"}), 404
144144

145+
@app.route("/resume/experience/<int:item_id>", methods=["DELETE"])
146+
def delete_experience(item_id):
147+
"""
148+
Delete an experience by index.
149+
150+
Parameters
151+
----------
152+
item_id : int
153+
The index of the experience to delete.
154+
155+
Returns
156+
-------
157+
Response
158+
JSON message indicating success or error.
159+
Returns 404 if experience not found.
160+
Returns 400 if request is invalid.
161+
"""
162+
if item_id < 0 or item_id >= len(data["experience"]):
163+
return jsonify({"error": "Invalid request"}), 400
164+
data["experience"].pop(item_id)
165+
return jsonify({"message": "Experience has been deleted"}), 200
145166

146167
@app.route("/resume/education", methods=["GET", "POST"])
147168
def education():

test_pytest.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,31 @@ def test_update_experience_with_missing_fields():
208208
assert response.status_code == 400
209209
assert "error" in response.json
210210

211+
def test_delete_experience():
212+
"""
213+
add an experience entry
214+
delete that experience entry by index.
215+
Check that it is deleted successfully with correct response.
216+
"""
217+
example_experience = {
218+
"title": "Backend Engineer",
219+
"company": "Google",
220+
"start_date": "March 2023",
221+
"end_date": "Present",
222+
"description": "Working on scalable systems",
223+
"logo": "example-logo.png",
224+
}
225+
226+
post_response = app.test_client().post("/resume/experience", json=example_experience)
227+
assert post_response.status_code == 201
228+
item_id = post_response.json["id"]
229+
delete_response = app.test_client().delete(f"/resume/experience/{item_id}")
230+
assert delete_response.status_code == 200
231+
assert delete_response.json["message"] == "Experience has been deleted"
232+
delete_response = app.test_client().delete(f"/resume/experience/{item_id}")
233+
assert delete_response.status_code == 400
234+
assert delete_response.json["error"] == "Invalid request"
235+
211236

212237
def test_education():
213238
"""

0 commit comments

Comments
 (0)