diff --git a/examples/rest_api_blog/app.py b/examples/rest_api_blog/app.py index bbdde174..a748a9c2 100644 --- a/examples/rest_api_blog/app.py +++ b/examples/rest_api_blog/app.py @@ -1,40 +1,44 @@ -from flask import Flask, request, jsonify, abort +from flask import abort +from flask import Flask +from flask import jsonify +from flask import request app = Flask(__name__) posts = [] current_id = 1 -def find_post(post_id): - return next((post for post in posts if post['id'] == post_id), None) -@app.route('/api/posts', methods=['GET']) +def find_post(post_id): + return next((post for post in posts if post["id"] == post_id), None) + + +@app.route("/api/posts", methods=["GET"]) def get_posts(): return jsonify(posts), 200 -@app.route('/api/posts/', methods=['GET']) + +@app.route("/api/posts/", methods=["GET"]) def get_post(post_id): post = find_post(post_id) if not post: abort(404, description="Post not found") return jsonify(post), 200 -@app.route('/api/posts', methods=['POST']) + +@app.route("/api/posts", methods=["POST"]) def create_post(): global current_id data = request.get_json() - if not data or 'title' not in data or 'content' not in data: + if not data or "title" not in data or "content" not in data: abort(400, description="Missing title or content") - post = { - 'id': current_id, - 'title': data['title'], - 'content': data['content'] - } + post = {"id": current_id, "title": data["title"], "content": data["content"]} posts.append(post) current_id += 1 return jsonify(post), 201 -@app.route('/api/posts/', methods=['PUT']) + +@app.route("/api/posts/", methods=["PUT"]) def update_post(post_id): post = find_post(post_id) if not post: @@ -42,17 +46,19 @@ def update_post(post_id): data = request.get_json() if not data: abort(400, description="Missing data") - post['title'] = data.get('title', post['title']) - post['content'] = data.get('content', post['content']) + post["title"] = data.get("title", post["title"]) + post["content"] = data.get("content", post["content"]) return jsonify(post), 200 -@app.route('/api/posts/', methods=['DELETE']) + +@app.route("/api/posts/", methods=["DELETE"]) def delete_post(post_id): post = find_post(post_id) if not post: abort(404, description="Post not found") posts.remove(post) - return '', 204 + return "", 204 -if __name__ == '__main__': + +if __name__ == "__main__": app.run(debug=True) diff --git a/examples/rest_api_blog/test_app.py b/examples/rest_api_blog/test_app.py index b48b313c..8f9fbb76 100644 --- a/examples/rest_api_blog/test_app.py +++ b/examples/rest_api_blog/test_app.py @@ -1,53 +1,56 @@ import unittest + from app import app + class BlogPostTestCase(unittest.TestCase): def setUp(self): self.client = app.test_client() self.sample_post = {"title": "Test Post", "content": "This is a test post"} def test_create_post_success(self): - response = self.client.post('/api/posts', json=self.sample_post) + response = self.client.post("/api/posts", json=self.sample_post) self.assertEqual(response.status_code, 201) def test_create_post_missing_field(self): - response = self.client.post('/api/posts', json={"title": "Only title"}) + response = self.client.post("/api/posts", json={"title": "Only title"}) self.assertEqual(response.status_code, 400) def test_get_all_posts(self): - self.client.post('/api/posts', json=self.sample_post) - response = self.client.get('/api/posts') + self.client.post("/api/posts", json=self.sample_post) + response = self.client.get("/api/posts") self.assertEqual(response.status_code, 200) def test_get_single_post_success(self): - post_resp = self.client.post('/api/posts', json=self.sample_post) - post_id = post_resp.get_json()['id'] - response = self.client.get(f'/api/posts/{post_id}') + post_resp = self.client.post("/api/posts", json=self.sample_post) + post_id = post_resp.get_json()["id"] + response = self.client.get(f"/api/posts/{post_id}") self.assertEqual(response.status_code, 200) def test_get_single_post_not_found(self): - response = self.client.get('/api/posts/999') + response = self.client.get("/api/posts/999") self.assertEqual(response.status_code, 404) def test_update_post_success(self): - post_resp = self.client.post('/api/posts', json=self.sample_post) - post_id = post_resp.get_json()['id'] - response = self.client.put(f'/api/posts/{post_id}', json={"title": "Updated"}) + post_resp = self.client.post("/api/posts", json=self.sample_post) + post_id = post_resp.get_json()["id"] + response = self.client.put(f"/api/posts/{post_id}", json={"title": "Updated"}) self.assertEqual(response.status_code, 200) def test_update_post_not_found(self): - response = self.client.put('/api/posts/999', json={"title": "Nothing"}) + response = self.client.put("/api/posts/999", json={"title": "Nothing"}) self.assertEqual(response.status_code, 404) def test_delete_post_success(self): - post_resp = self.client.post('/api/posts', json=self.sample_post) - post_id = post_resp.get_json()['id'] - response = self.client.delete(f'/api/posts/{post_id}') + post_resp = self.client.post("/api/posts", json=self.sample_post) + post_id = post_resp.get_json()["id"] + response = self.client.delete(f"/api/posts/{post_id}") self.assertEqual(response.status_code, 204) def test_delete_post_not_found(self): - response = self.client.delete('/api/posts/999') + response = self.client.delete("/api/posts/999") self.assertEqual(response.status_code, 404) -if __name__ == '__main__': + +if __name__ == "__main__": unittest.main()