diff --git a/flask-mongo/app.py b/flask-mongo/app.py index 6f7172f..8a6418b 100644 --- a/flask-mongo/app.py +++ b/flask-mongo/app.py @@ -40,4 +40,4 @@ def delete_student(student_id): return jsonify({'message': 'Student deleted successfully'}) if __name__ == '__main__': - app.run(host='0.0.0.0', port=6000, debug=True) \ No newline at end of file + app.run(host='0.0.0.0', port=6000, debug=True) diff --git a/flask-mongo/test_app.py b/flask-mongo/test_app.py index 30cf13f..f07148a 100644 --- a/flask-mongo/test_app.py +++ b/flask-mongo/test_app.py @@ -1,45 +1,32 @@ -import unittest -from app import app -from unittest.mock import patch, MagicMock -import json -from bson import ObjectId +import pytest +from flask import Flask, json +from pymongo import MongoClient +from app import app as flask_app # Assuming your Flask app is saved as app.py + +@pytest.fixture +def client(): + with flask_app.test_client() as client: + yield client + + +def test_get_nonexistent_student(client): + student_id = '999' + response = client.get(f'/students/{student_id}') + assert response.status_code == 200 + data = json.loads(response.data) + assert data is None + + +def test_update_nonexistent_student(client): + student_id = '999' + updated_student = { + "name": "Nonexistent Student", + "age": 30, + "major": "Physics" + } + response = client.put(f'/students/{student_id}', json=updated_student) + assert response.status_code == 200 + data = json.loads(response.data) + assert data["message"] == "Student updated successfully" -class TestTaskManager(unittest.TestCase): - def setUp(self): - self.app = app.test_client() - self.app.testing = True - - self.collection_mock = MagicMock() - self.patcher = patch('app.collection', self.collection_mock) - self.patcher.start() - - def tearDown(self): - self.patcher.stop() - - def test_create_task(self): - data = {'title': 'Test Task', 'description': 'This is a test task'} - response = self.app.post('/api/tasks', json=data) - self.assertEqual(response.status_code, 201) - self.assertIn(b'Task created successfully', response.data) - - def test_get_all_tasks(self): - self.collection_mock.find.return_value = [] - response = self.app.get('/api/tasks') - self.assertEqual(response.status_code, 200) - self.assertEqual(json.loads(response.data)['tasks'], []) - - def test_update_task(self): - with patch('app.ObjectId', return_value='mocked_id'): - response = self.app.put('/api/tasks/mock_id', json={'title': 'Updated Task', 'description': 'This is an updated task'}) - self.assertEqual(response.status_code, 200) - self.assertIn(b'Task updated successfully', response.data) - - def test_delete_task(self): - with patch('app.ObjectId', return_value=ObjectId()): - response = self.app.delete('/api/tasks/mock_id') - self.assertEqual(response.status_code, 200) - self.assertIn(b'Task deleted successfully', response.data) - -if __name__ == '__main__': - unittest.main()