forked from NCSU-SE-2024/PackReview_v3
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' of https://github.com/TeamBenign/PackReview_v4
- Loading branch information
Showing
4 changed files
with
137 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
import unittest | ||
from unittest.mock import patch, MagicMock | ||
from app.gemini_chat import get_gemini_feedback # Replace with the actual module name | ||
|
||
|
||
class TestGeminiFeedback(unittest.TestCase): | ||
|
||
# Test Case 1: Test with valid inputs (csv_path and user_prompt) | ||
@patch("google.generativeai.GenerativeModel") | ||
@patch("google.generativeai.upload_file") | ||
def test_get_gemini_feedback_valid(self, mock_upload_file, mock_GenerativeModel): | ||
# Arrange | ||
csv_path = "valid.txt" | ||
user_prompt = "Tell me about the work culture" | ||
|
||
# Mock the file upload to avoid the need for an actual file | ||
mock_upload_file.return_value = "mocked_file_content" | ||
|
||
# Mock the response from the API call | ||
mock_response = MagicMock() | ||
mock_response.text = "para 1: The work culture is great. para 2: [ID_START] 1, 2, 3 [ID_END]" | ||
|
||
# Setup the mock to return the response | ||
mock_GenerativeModel.return_value.generate_content.return_value = mock_response | ||
|
||
# Act | ||
response_text, ids_string = get_gemini_feedback(csv_path, user_prompt) | ||
|
||
# Assert | ||
self.assertEqual(response_text, "The work culture is great.") | ||
self.assertEqual(ids_string, "1, 2, 3") | ||
|
||
# Test Case 2: Test with missing or invalid CSV path | ||
@patch("google.generativeai.GenerativeModel") | ||
@patch("google.generativeai.upload_file") | ||
def test_get_gemini_feedback_invalid_csv(self, mock_upload_file, mock_GenerativeModel): | ||
# Arrange | ||
csv_path = "" # Invalid path | ||
user_prompt = "Tell me about the work culture" | ||
|
||
# Act | ||
response = get_gemini_feedback(csv_path, user_prompt) | ||
|
||
# Assert | ||
self.assertIsNone(response) | ||
|
||
# Test Case 3: Test with malformed API response (no IDs found) | ||
@patch("google.generativeai.GenerativeModel") | ||
@patch("google.generativeai.upload_file") | ||
def test_get_gemini_feedback_no_ids(self, mock_upload_file, mock_GenerativeModel): | ||
# Arrange | ||
csv_path = "valid_path.csv" | ||
user_prompt = "Tell me about the work culture" | ||
|
||
# Mock the file upload to avoid the need for an actual file | ||
mock_upload_file.return_value = "mocked_file_content" | ||
|
||
# Mock the response from the API call | ||
mock_response = MagicMock() | ||
mock_response.text = "para 1: The work culture is great. para 2: No IDs here." | ||
|
||
# Setup the mock to return the response | ||
mock_GenerativeModel.return_value.generate_content.return_value = mock_response | ||
|
||
# Act | ||
response_text, ids_string = get_gemini_feedback(csv_path, user_prompt) | ||
|
||
# Assert | ||
self.assertEqual(response_text, "The work culture is great.") | ||
self.assertEqual(ids_string, "") | ||
|
||
# Test Case 4: Test when an error occurs in the API call | ||
@patch("google.generativeai.GenerativeModel") | ||
@patch("google.generativeai.upload_file") | ||
def test_get_gemini_feedback_api_error(self, mock_upload_file, mock_GenerativeModel): | ||
# Arrange | ||
csv_path = "valid_path.csv" | ||
user_prompt = "Tell me about the work culture" | ||
|
||
# Simulate an exception in the API call | ||
mock_GenerativeModel.return_value.generate_content.side_effect = Exception("API Error") | ||
|
||
# Act | ||
response = get_gemini_feedback(csv_path, user_prompt) | ||
|
||
# Assert | ||
self.assertIsNone(response) | ||
|
||
# Test Case 5: Test empty user prompt | ||
@patch("google.generativeai.GenerativeModel") | ||
@patch("google.generativeai.upload_file") | ||
def test_get_gemini_feedback_empty_prompt(self, mock_upload_file, mock_GenerativeModel): | ||
# Arrange | ||
csv_path = "valid_path.csv" | ||
user_prompt = "" # Empty user prompt | ||
|
||
# Mock the file upload to avoid the need for an actual file | ||
mock_upload_file.return_value = "mocked_file_content" | ||
|
||
# Mock the response from the API call | ||
mock_response = MagicMock() | ||
mock_response.text = "para 1: The work culture is great. para 2: [ID_START] 1, 2 [ID_END]" | ||
|
||
# Setup the mock to return the response | ||
mock_GenerativeModel.return_value.generate_content.return_value = mock_response | ||
|
||
# Act | ||
response_text, ids_string = get_gemini_feedback(csv_path, user_prompt) | ||
|
||
# Assert | ||
self.assertEqual(response_text, "The work culture is great.") | ||
self.assertEqual(ids_string, "1, 2") | ||
|
||
if __name__ == "__main__": | ||
unittest.main() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
title,company,description,locations,department,hourly_pay,benefits,review,rating,recommendation,author,upvote,id | ||
software engineer intern,Apple,web development,NY,DEV,45,health benefit,great,4,6,user1,1,software engineer intern_Apple_NY_user1_DEV | ||
software intern,Amazon,development,RTP,CS,60,transport,not bad,5,9,12345678,0,software intern_Amazon_RTP_12345678_CS | ||
software engineer,Microsoft,asdf,RTP,software developer,50,fdsfd,dasfdsf,5,8,user1,0,software engineer_Microsoft_RTP_user1_software developer | ||
software intern,Apple,developer,DC,ENG,60,no benefits,not that good,4,8,user1,0,software intern_Apple_DC_user1_ENG | ||
software engineer intern,Tesla,Testing,California,testing,55,incentives,good,4,9,user1,0,software engineer intern_Tesla_California_user1_testing | ||
software engineer intern,Apple,sdf,RTP,software developer,67,sdf,dsf,5,8,user1,0,software engineer intern_Apple_RTP_user1_software developer | ||
software engineer intern,Microsoft,programming,DC,dev,70,money,great,5,10,user1,0,software engineer intern_Microsoft_DC_user1_dev | ||
software intern,Microsoft,fdaf,RTP,fsd,50,afsd,dfadf,5,8,user1,0,software intern_Microsoft_RTP_user1_fsd | ||
software engineer intern,Microsoft,sfasf,RTP,fsa,40,asdsa,asdsa,4,7,user1,0,software engineer intern_Microsoft_RTP_user1_fsa | ||
intern,Apple,df,RTP,df,50,dfs,sff,5,7,user1,0,intern_Apple_RTP_user1_df | ||
software engineer intern,Apple,dfsd,NY,R&D,78,dfsd,fds,5,8,user1,0,software engineer intern_Apple_NY_user1_R&D | ||
software engineer intern,Apple,adsfk,California,adslf,56,dfs,dsf,0,7,user1,0,software engineer intern_Apple_California_user1_adslf | ||
intern,Microsoft,dad,California,ddsf,35,dsf,dfsdf,4,8,user1,0,intern_Microsoft_California_user1_ddsf | ||
software engineer intern,Microsoft,dsaf,California,safds,65,fdsf,dsf,3,6,user1,0,software engineer intern_Microsoft_California_user1_safds | ||
software engineer intern,Microsoft,zcc,NY,dfs,77,fdg,dsfds,5,9,user1,0,software engineer intern_Microsoft_NY_user1_dfs | ||
Web Developer,Oracle,Good,VA,Development,40,HI,Good,5,5,test,0,Web Developer_Oracle_VA | ||
System Admin,Google,"system modification, system analysis, migrations",California,Systems,50,Bonus,"This job pays quite well, vacations are good and you dont have to work in the weekends",2,0,kishan,0,System Admin_Google_California | ||
software engineer,google,"Software Development, Web Development",VA,Development,30,Bonus,No,1,0,kishan,0,software engineer_google_VA | ||
Software Developer,NVidia,Responsible for software development of chip,New York,Development,10,Health Insurance,"Good place, good food",1,0,test,0,Software Developer_NVidia_New York |