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

1import pytest 

2from unittest.mock import patch, MagicMock 

3 

4def test_create_class_sucess(client): 

5 mock_class = { 

6 "classTitle": "Math 101", 

7 "classCode": "MATH101", 

8 "instructorId": 1, 

9 "classHexColor": "#FF5733" 

10 } 

11 

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) 

14 

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) 

19 

20def test_create_class_missing_fields(client): 

21 mock_class = { 

22 "classTitle": "Math 101", 

23 "classCode": "MATH101", 

24 "instructorId": 1 

25 } 

26 

27 response = client.post('/classes/create', json=mock_class) 

28 

29 assert response.status_code == 400 

30 assert response.json['message'] == "Missing required fields: classHexColor" 

31 

32def test_create_class_unknown_error(client): 

33 mock_class = { 

34 "classTitle": "Math 101", 

35 "classCode": "MATH101", 

36 "instructorId": 1, 

37 "classHexColor": "#FF5733" 

38 } 

39 

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) 

42 

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) 

46 

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 ] 

64 

65 with patch('app.routes.classes.fetch_classes_by_instructor', return_value=mock_classes) as mock_fetch: 

66 response = client.get('/classes/instructor/1') 

67 

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") 

72 

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') 

76 

77 assert response.status_code == 500 

78 assert response.json['message'] == "Error fetching classes: Database error" 

79 mock_fetch.assert_called_once_with("1") 

80 

81def test_register_user_to_class_success(client): 

82 mock_registration = { 

83 "studentId": 1, 

84 "classId": 1 

85 } 

86 

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) 

89 

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) 

94 

95def test_register_user_to_class_missing_fields(client): 

96 mock_registration = { 

97 "studentId": 1 

98 } 

99 

100 response = client.post('/classes/register', json=mock_registration) 

101 

102 assert response.status_code == 400 

103 assert response.json['message'] == "Missing required fields: classId" 

104 

105def test_register_user_to_class_unknown_error(client): 

106 mock_registration = { 

107 "studentId": 1, 

108 "classId": 1 

109 } 

110 

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) 

113 

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)