Coverage for tests/routes/test_log_route.py: 100%

51 statements  

« prev     ^ index     » next       coverage.py v7.6.12, created at 2025-05-02 02:49 +0000

1import pytest 

2from unittest.mock import patch 

3import json 

4 

5 

6def test_health_check(client): 

7 response = client.get('/health') 

8 assert response.status_code == 200 

9 assert response.json['status'] == 'Success' 

10 

11 

12@patch('app.routes.logging.log_event') 

13def test_log_event_success(mock_log_event, client): 

14 mock_log_event.return_value = None 

15 response = client.post('/logs', json={ 

16 'event': 'User logged in', 

17 'metadata': {'userID': 1, 'time_lapse': 1234}, 

18 'time_lapse': 1234 

19 }) 

20 assert response.status_code == 201 

21 assert response.json['status'] == 'Success' 

22 

23 

24def test_log_event_missing_fields(client): 

25 response = client.post('/logs', json={ 

26 'metadata': {'userID': 1} 

27 }) 

28 assert response.status_code == 400 

29 assert 'Missing required fields' in response.json['message'] 

30 

31 

32@patch('app.routes.logging.get_all_logs') 

33def test_get_all_logs_success(mock_get_all_logs, client): 

34 mock_get_all_logs.return_value = [{'event': 'login'}] 

35 response = client.get('/logs') 

36 assert response.status_code == 200 

37 assert response.json['status'] == 'Success' 

38 

39 

40@patch('app.routes.logging.get_logs_by_user') 

41def test_get_logs_by_user_success(mock_get_logs_by_user, client): 

42 mock_get_logs_by_user.return_value = [{'event': 'user_event'}] 

43 response = client.get('/logs/123') 

44 assert response.status_code == 200 

45 assert response.json['status'] == 'Success' 

46 

47 

48@patch('app.routes.logging.get_logs_by_class') 

49def test_get_logs_by_class_success(mock_get_logs_by_class, client): 

50 mock_get_logs_by_class.return_value = [{'event': 'class_event'}] 

51 response = client.get('/logs/class/456') 

52 assert response.status_code == 200 

53 assert response.json['status'] == 'Success' 

54 

55 

56@patch('app.routes.logging.log_suggestion') 

57def test_log_suggestion_success(mock_log_suggestion, client): 

58 mock_log_suggestion.return_value = {'id': 'suggestion_id'} 

59 response = client.post('/logs/suggestion', json={ 

60 'prompt': 'function add(a, b)', 

61 'suggestionArray': [{'text': '{ return a+b; }'}], 

62 'hasBug': False, 

63 'model': 'gemini-2.0-flash-lite', 

64 'userSectionId': '123' 

65 }) 

66 assert response.status_code == 201 

67 assert response.json['status'] == 'Success' 

68 

69 

70def test_log_suggestion_missing_fields(client): 

71 response = client.post('/logs/suggestion', json={ 

72 'prompt': 'function add(a, b)' 

73 }) 

74 assert response.status_code == 400 

75 assert 'Missing required fields' in response.json['message'] 

76 

77 

78@patch('app.routes.logging.get_ai_usage') 

79def test_ai_usage_success(mock_get_ai_usage, client): 

80 mock_get_ai_usage.return_value = {'usage': 123} 

81 response = client.get('/logs/ai') 

82 assert response.status_code == 200 

83 assert response.json['status'] == 'Success'