diff --git a/README.md b/README.md
index d1b47e8..64a2add 100644
--- a/README.md
+++ b/README.md
@@ -28,7 +28,7 @@ New Badges

-
+[](https://github.com/TeamBenign/PackReview_v4/actions)

## Pre-requisites
diff --git a/app/routes.py b/app/routes.py
index 9cba88d..f3397c3 100644
--- a/app/routes.py
+++ b/app/routes.py
@@ -826,11 +826,14 @@ def query_gemini_model(user_message):
job_reviews = get_all_jobs()
dict_to_csv(job_reviews, tmp_csv_file_for_gemini)
- response_text = get_gemini_feedback(tmp_csv_file_for_gemini, user_message)
+ response_text = query_gemini(tmp_csv_file_for_gemini, user_message)
if response_text is None:
return "Error: Couldn't fetch response from Gemini."
else:
return response_text
+
+def query_gemini(tmp_csv_file_for_gemini, user_message):
+ return get_gemini_feedback(tmp_csv_file_for_gemini, user_message)
# Function to chunk large review texts
def chunk_text(text, chunk_size=1500):
diff --git a/tests/test_gemini_query.py b/tests/test_gemini_query.py
new file mode 100644
index 0000000..7f2c9d9
--- /dev/null
+++ b/tests/test_gemini_query.py
@@ -0,0 +1,45 @@
+import unittest
+from unittest.mock import patch, MagicMock
+import os
+from app.routes import query_gemini_model
+
+
+class TestQueryGeminiModel(unittest.TestCase):
+
+ @patch('app.routes.query_gemini') # Mock get_gemini_feedback
+ @patch('app.routes.dict_to_csv') # Mock dict_to_csv
+ @patch('app.routes.get_all_jobs') # Mock get_all_jobs
+ def test_query_gemini_model_success(self, mock_get_all_jobs, mock_dict_to_csv, mock_get_gemini_feedback):
+ """
+ Test query_gemini_model when the response is successfully fetched from Gemini.
+ """
+ # Arrange
+ mock_get_all_jobs.return_value = [{'id': 1, 'title': 'Job 1'}, {'id': 2, 'title': 'Job 2'}]
+ mock_get_gemini_feedback.return_value = "This is the Gemini response."
+
+ # Act
+ result = query_gemini_model("Test user message")
+
+ # Assert
+ mock_get_all_jobs.assert_called_once() # Ensure get_all_jobs was called
+ mock_dict_to_csv.assert_called_once() # Ensure dict_to_csv was called
+ mock_get_gemini_feedback.assert_called_once_with(os.path.join("tmp", "reviews", "tmp_review.txt"), "Test user message")
+
+ @patch('app.routes.query_gemini') # Mock get_gemini_feedback
+ @patch('app.routes.dict_to_csv') # Mock dict_to_csv
+ @patch('app.routes.get_all_jobs') # Mock get_all_jobs
+ def test_query_gemini_model_no_response(self, mock_get_all_jobs, mock_dict_to_csv, mock_get_gemini_feedback):
+ """
+ Test query_gemini_model when the response from Gemini is None.
+ """
+ # Arrange
+ mock_get_all_jobs.return_value = [{'id': 1, 'title': 'Job 1'}, {'id': 2, 'title': 'Job 2'}]
+ mock_get_gemini_feedback.return_value = None
+
+ # Act
+ result = query_gemini_model("Test user message")
+
+ # Assert
+ mock_get_all_jobs.assert_called_once() # Ensure get_all_jobs was called
+ mock_dict_to_csv.assert_called_once() # Ensure dict_to_csv was called
+ mock_get_gemini_feedback.assert_called_once_with(os.path.join("tmp", "reviews", "tmp_review.txt"), "Test user message")