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

1import pytest 

2from unittest.mock import patch 

3from app import create_app 

4from app.models.status_codes import StatusCodes 

5 

6 

7 

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" 

15 

16 

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

23 

24 

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

30 

31 

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 

35 

36 

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

43 

44 

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 

49 

50 

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 

55 

56 

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" 

63 

64 

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

70 

71 

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 

75 

76 

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 

80 

81 

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

87 

88 

89def test_update_user_settings_missing_settings(client): 

90 response = client.put('/users/123/settings', json={}) 

91 assert response.status_code == 400 

92 

93 

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) 

100 

101 

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) 

108 

109 

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

113 

114 assert response.status_code == 200 

115 assert response.json['data'] == True 

116 mock_delete.assert_called_once_with("123") 

117 

118 

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

124 

125 

126def test_update_user_missing_data(client): 

127 response = client.put('/users/123', json={}) 

128 assert response.status_code == 400