Coverage for tests/routes/test_user_route.py: 100%
90 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-05-02 02:49 +0000
« prev ^ index » next coverage.py v7.6.12, created at 2025-05-02 02:49 +0000
1import pytest
2from unittest.mock import patch
3from app import create_app
4from app.models.status_codes import StatusCodes
8def test_get_user_success(client):
9 mock_user = type('User', (), {"to_json": lambda self: {"id": "123", "name": "Test User", "email": "test@example.com"}})()
10 with patch('app.routes.user.get_user_by_id', return_value=mock_user):
11 response = client.get('/users/123')
12 assert response.status_code == 200
13 data = response.get_json()
14 assert data["data"]["id"] == "123"
17def test_get_user_not_found(client):
18 with patch('app.routes.user.get_user_by_id', return_value=None):
19 response = client.get('/users/999')
20 assert response.status_code == 404
21 data = response.get_json()
22 assert "User not found" in data["message"]
25def test_update_user_status_success(client):
26 with patch('app.routes.user.update_user_class_status') as mock_update:
27 response = client.put('/users/123/status', json={"status": "ACTIVE", "userClassId": "class-1"})
28 assert response.status_code == 200
29 mock_update.assert_called_once()
32def test_update_user_status_invalid_status(client):
33 response = client.put('/users/123/status', json={"status": "INVALID", "userClassId": "class-1"})
34 assert response.status_code == 400
37def test_get_user_class_status_success(client):
38 with patch('app.routes.user.get_user_class_status', return_value="ACTIVE"):
39 response = client.get('/users/123/class-status?userClassId=class-1')
40 assert response.status_code == 200
41 data = response.get_json()
42 assert data["data"] == {"user_class_status": "ACTIVE"}
45def test_get_user_class_status_not_found(client):
46 with patch('app.routes.user.get_user_class_status', return_value=None):
47 response = client.get('/users/123/class-status?userClassId=class-999')
48 assert response.status_code == 404
51def test_create_user_section_success(client):
52 with patch('app.routes.user.create_user_section', return_value=True):
53 response = client.post('/users/123/sections', json={"sectionId": "section-1"})
54 assert response.status_code == 201
57def test_get_user_sections_success(client):
58 with patch('app.routes.user.get_user_section', return_value="section-1"):
59 response = client.get('/users/123/sections')
60 assert response.status_code == 200
61 data = response.get_json()
62 assert data["data"]["user_section_id"] == "section-1"
65def test_update_user_section_status_success(client):
66 with patch('app.routes.user.update_user_section') as mock_update:
67 response = client.put('/users/123/sections', json={"status": "COMPLETE", "userSectionId": "section-1"})
68 assert response.status_code == 200
69 mock_update.assert_called_once()
72def test_update_user_section_status_invalid_status(client):
73 response = client.put('/users/123/sections', json={"status": "INVALID", "userSectionId": "section-1"})
74 assert response.status_code == 400
77def test_update_user_section_status_missing_id(client):
78 response = client.put('/users/123/sections', json={"status": "ACTIVE"})
79 assert response.status_code == 400
82def test_update_user_settings_success(client):
83 with patch('app.routes.user.update_user_settings') as mock_update:
84 response = client.put('/users/123/settings', json={"notifications": True})
85 assert response.status_code == 200
86 mock_update.assert_called_once()
89def test_update_user_settings_missing_settings(client):
90 response = client.put('/users/123/settings', json={})
91 assert response.status_code == 400
94def test_get_user_classes_success(client):
95 with patch('app.routes.user.get_classes_by_user_id', return_value=[{"classId": "class-1"}]):
96 response = client.get('/users/123/classes')
97 assert response.status_code == 200
98 data = response.get_json()
99 assert isinstance(data["data"], list)
102def test_get_users_success(client):
103 with patch('app.routes.user.get_all_users', return_value=[{"id": "123", "name": "Test User", "email": "test@example.com"}]):
104 response = client.get('/users')
105 assert response.status_code == 200
106 data = response.get_json()
107 assert isinstance(data["data"], list)
110def test_delete_user_success(client):
111 with patch('app.routes.user.delete_user', return_value=None) as mock_delete:
112 response = client.delete(f'/users/123')
114 assert response.status_code == 200
115 assert response.json['data'] == True
116 mock_delete.assert_called_once_with("123")
119def test_update_user_success(client):
120 with patch('app.routes.user.edit_user') as mock_update:
121 response = client.put('/users/123', json={"name": "Updated User"})
122 assert response.status_code == 200
123 mock_update.assert_called_once()
126def test_update_user_missing_data(client):
127 response = client.put('/users/123', json={})
128 assert response.status_code == 400