n8cha commited on
Commit
5bca8f8
·
1 Parent(s): 665c6da

add test cases for logging

Browse files
Files changed (1) hide show
  1. test_app.py +54 -0
test_app.py CHANGED
@@ -57,3 +57,57 @@ class TestGeneratePrompt:
57
 
58
  assert result == "Could not generate a prompt. No fish today."
59
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
 
58
  assert result == "Could not generate a prompt. No fish today."
59
 
60
+ @patch("app.logger")
61
+ @patch("app.OpenAI")
62
+ def test_logging_on_success(self, mock_openai_class, mock_logger):
63
+ """Test that logging works correctly on successful API call."""
64
+ api_total_token_count = 500
65
+
66
+ # Mock the OpenAI client and response
67
+ mock_client = Mock()
68
+ mock_openai_class.return_value = mock_client
69
+
70
+ mock_response = Mock()
71
+ mock_response.choices = [Mock()]
72
+ mock_response.choices[0].message = Mock()
73
+ mock_response.choices[0].message.content = TEST_OPENAI_CHAT_RESPONSE_CONTENT
74
+ mock_response.usage.total_tokens = api_total_token_count
75
+
76
+ mock_client.chat.completions.create.return_value = mock_response
77
+
78
+ # Mock the gradio request
79
+ mock_gradio_request = Mock()
80
+ mock_gradio_request.session_hash = TEST_GRADIO_SESSION_HASH
81
+
82
+ # Call the function
83
+ generate_prompt(mock_gradio_request)
84
+
85
+ mock_logger.info.assert_any_call(
86
+ f"Making OpenAI API request - Session: {TEST_GRADIO_SESSION_HASH}"
87
+ )
88
+ mock_logger.info.assert_any_call(
89
+ f"API request successful - Session: {TEST_GRADIO_SESSION_HASH}"
90
+ f" - tokens used: {api_total_token_count}"
91
+ )
92
+
93
+ @patch("app.logger")
94
+ @patch("app.OpenAI")
95
+ def test_logging_on_failure(self, mock_openai_class, mock_logger):
96
+ """Test that logging works correctly on failed API call."""
97
+ api_error_message = "OpenAI is down."
98
+
99
+ # Mock the OpenAI client and response
100
+ mock_client = Mock()
101
+ mock_openai_class.return_value = mock_client
102
+ mock_client.chat.completions.create.side_effect = Exception(api_error_message)
103
+
104
+ # Mock the gradio request
105
+ mock_gradio_request = Mock()
106
+ mock_gradio_request.session_hash = TEST_GRADIO_SESSION_HASH
107
+
108
+ # Call the function
109
+ generate_prompt(mock_gradio_request)
110
+
111
+ mock_logger.error.assert_any_call(
112
+ f"API request failed - Session: {TEST_GRADIO_SESSION_HASH} - Error: {api_error_message}"
113
+ )