Skip to content

Commit 8ce01de

Browse files
Completed Testing
1 parent 384bef3 commit 8ce01de

6 files changed

Lines changed: 85 additions & 0 deletions

File tree

flask_api_server.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,13 @@
2222
except Exception as e:
2323
print(f"❌ Error connecting to MongoDB: {e}")
2424

25+
26+
# ---------- Utility Logic ----------
27+
def validate_task_data(data):
28+
if "title" not in data or not data["title"].strip():
29+
return False, "Title is required"
30+
return True, None
31+
2532
# Helper functions
2633
def serialize_doc(doc):
2734
if doc:

run_tests.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import unittest
2+
import coverage
3+
4+
if __name__ == "__main__":
5+
cov = coverage.Coverage()
6+
cov.start()
7+
8+
tests = unittest.TestLoader().discover("tests")
9+
unittest.TextTestRunner(verbosity=2).run(tests)
10+
11+
cov.stop()
12+
cov.save()
13+
print("\nCoverage Report:\n")
14+
cov.report()
15+
cov.html_report(directory='coverage_html')
16+
print("HTML version: coverage_html/index.html")

tests/__init__.py

Whitespace-only changes.

tests/test_api.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import unittest
2+
from flask_api_server import app
3+
import json
4+
5+
class APITestCase(unittest.TestCase):
6+
def setUp(self):
7+
self.client = app.test_client()
8+
self.headers = {'Content-Type': 'application/json'}
9+
10+
def test_create_task(self):
11+
payload = {
12+
"title": "Test Task",
13+
"description": "Testing task creation",
14+
"status": "pending",
15+
"priority": "low"
16+
}
17+
response = self.client.post("/api/tasks", data=json.dumps(payload), headers=self.headers)
18+
self.assertEqual(response.status_code, 201)
19+
self.assertIn("success", response.get_json())
20+
21+
def test_get_all_tasks(self):
22+
response = self.client.get("/api/tasks")
23+
self.assertEqual(response.status_code, 200)
24+
self.assertIn("success", response.get_json())

tests/test_integration.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import unittest
2+
from pymongo import MongoClient
3+
from flask_api_server import app
4+
5+
class IntegrationTestCase(unittest.TestCase):
6+
def setUp(self):
7+
self.client = MongoClient("mongodb://localhost:27017/")
8+
self.db = self.client["taskmanager"]
9+
self.tasks = self.db["tasks"]
10+
self.api_client = app.test_client()
11+
12+
def tearDown(self):
13+
self.tasks.delete_many({})
14+
15+
def test_create_and_fetch_task(self):
16+
self.api_client.post("/api/tasks", json={
17+
"title": "Integration Task",
18+
"status": "pending",
19+
"priority": "medium"
20+
})
21+
response = self.api_client.get("/api/tasks")
22+
data = response.get_json()
23+
self.assertEqual(response.status_code, 200)
24+
self.assertTrue(len(data['data']) > 0)

tests/test_unit_logic.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import unittest
2+
from flask_api_server import validate_task_data
3+
4+
class LogicUnitTestCase(unittest.TestCase):
5+
def test_valid_task_input(self):
6+
data = {"title": "Read Book"}
7+
valid, message = validate_task_data(data)
8+
self.assertTrue(valid)
9+
10+
def test_missing_title(self):
11+
data = {}
12+
valid, message = validate_task_data(data)
13+
self.assertFalse(valid)
14+
self.assertEqual(message, "Title is required")

0 commit comments

Comments
 (0)