Coverage for tests/routes/test_classes_route.py: 100%
56 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, MagicMock
4def test_create_class_sucess(client):
5 mock_class = {
6 "classTitle": "Math 101",
7 "classCode": "MATH101",
8 "instructorId": 1,
9 "classHexColor": "#FF5733"
10 }
12 with patch('app.routes.classes.insert_new_class', return_value=mock_class) as mock_insert:
13 response = client.post('/classes/create', json=mock_class)
15 assert response.status_code == 201
16 assert response.json['message'] == "Class created successfully"
17 assert response.json['data'] == mock_class
18 mock_insert.assert_called_once_with(mock_class)
20def test_create_class_missing_fields(client):
21 mock_class = {
22 "classTitle": "Math 101",
23 "classCode": "MATH101",
24 "instructorId": 1
25 }
27 response = client.post('/classes/create', json=mock_class)
29 assert response.status_code == 400
30 assert response.json['message'] == "Missing required fields: classHexColor"
32def test_create_class_unknown_error(client):
33 mock_class = {
34 "classTitle": "Math 101",
35 "classCode": "MATH101",
36 "instructorId": 1,
37 "classHexColor": "#FF5733"
38 }
40 with patch('app.routes.classes.insert_new_class', side_effect=Exception("Database error")) as mock_insert:
41 response = client.post('/classes/create', json=mock_class)
43 assert response.status_code == 500
44 assert response.json['message'] == "Error creating class: Database error"
45 mock_insert.assert_called_once_with(mock_class)
47def test_get_classes_by_intructor_success(client):
48 mock_classes = [
49 {
50 "classId": 1,
51 "classTitle": "Math 101",
52 "classCode": "MATH101",
53 "instructorId": 1,
54 "classHexColor": "#FF5733"
55 },
56 {
57 "classId": 2,
58 "classTitle": "Science 101",
59 "classCode": "SCI101",
60 "instructorId": 1,
61 "classHexColor": "#33FF57"
62 }
63 ]
65 with patch('app.routes.classes.fetch_classes_by_instructor', return_value=mock_classes) as mock_fetch:
66 response = client.get('/classes/instructor/1')
68 assert response.status_code == 200
69 assert response.json['message'] == "Found 2 class(es) for instructor 1"
70 assert response.json['data'] == mock_classes
71 mock_fetch.assert_called_once_with("1")
73def test_get_classes_by_intructor_unknown_error(client):
74 with patch('app.routes.classes.fetch_classes_by_instructor', side_effect=Exception("Database error")) as mock_fetch:
75 response = client.get('/classes/instructor/1')
77 assert response.status_code == 500
78 assert response.json['message'] == "Error fetching classes: Database error"
79 mock_fetch.assert_called_once_with("1")
81def test_register_user_to_class_success(client):
82 mock_registration = {
83 "studentId": 1,
84 "classId": 1
85 }
87 with patch('app.routes.classes.insert_class_user', return_value=mock_registration) as mock_insert:
88 response = client.post('/classes/register', json=mock_registration)
90 assert response.status_code == 201
91 assert response.json['message'] == "Class registration successful"
92 assert response.json['data'] == mock_registration
93 mock_insert.assert_called_once_with(1, 1)
95def test_register_user_to_class_missing_fields(client):
96 mock_registration = {
97 "studentId": 1
98 }
100 response = client.post('/classes/register', json=mock_registration)
102 assert response.status_code == 400
103 assert response.json['message'] == "Missing required fields: classId"
105def test_register_user_to_class_unknown_error(client):
106 mock_registration = {
107 "studentId": 1,
108 "classId": 1
109 }
111 with patch('app.routes.classes.insert_class_user', side_effect=Exception("Database error")) as mock_insert:
112 response = client.post('/classes/register', json=mock_registration)
114 assert response.status_code == 500
115 assert response.json['message'] == "Error registering to class: Database error"
116 mock_insert.assert_called_once_with(1, 1)