Spaces:
Sleeping
Sleeping
import unittest | |
from unittest.mock import patch | |
from response import ResponseMySQL as res | |
import sys | |
import os | |
app_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')) | |
sys.path.insert(0, app_path) | |
from entity import Database_Entity | |
from service.MySQLService import edit_chat, delete_chat, render_chat_history, load_chat_history | |
from request.RequestMySQL import RequestEditNameChat, RequestDeleteChat, RequestRenderChatHistory, \ | |
RequestLoadChatHistory | |
from response.ResponseMySQL import ResponseEditChat, ResponseDeleteChat, ReponseError, Message, \ | |
ResponseRenderChatHistory, UserInfoListResponse, ListUserChat, ResponseLoadChatHistory, ChatDetail, ListChatDeTail | |
class TestMySQLService(unittest.TestCase): | |
def test_edit_chat_success(self, mock_support_function, mock_chat_history_repo, mock_user_repo): | |
user_id = "1" | |
email = 'example@example.com' | |
name_old = 'chat123' | |
name_new = 'chat1234' | |
mock_support_function.check_email_service.return_value = email | |
mock_chat_history_repo.getIdChatHistoryByUserIdAndNameChat.return_value = True | |
mock_chat_history_repo.getIdChatHistoryByUserIdAndNameChatNew.return_value = None | |
request = RequestEditNameChat(user_id=user_id, name_old=name_old, name_new=name_new) | |
response = edit_chat(request) | |
self.assertIsInstance(response, ResponseEditChat) | |
self.assertEqual(response.status, 200) | |
def test_edit_chat_server_error(self, mock_support_function, mock_chat_history_repo, mock_user_repo): | |
user_id = "1" | |
email = 'example@example.com' | |
name_old = 'chat123' | |
name_new = 'chat1234' | |
mock_support_function.check_email_service.side_effect = Exception("error") | |
request = RequestEditNameChat(user_id=user_id, name_old=name_old, name_new=name_new) | |
response = edit_chat(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 500) | |
self.assertEqual(response.data.message, "Server Error") | |
def test_edit_chat_id_not_exist(self, mock_support_function, mock_chat_history_repo, mock_user_repo): | |
user_id = "1" | |
name_old = 'chat123' | |
name_new = 'chat1234' | |
mock_support_function.check_email_service.return_value = ReponseError(status=400, data=res.Message( | |
message="Id not exist")) | |
request = RequestEditNameChat(user_id=user_id, name_old=name_old, name_new=name_new) | |
response = edit_chat(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='Id not exist')) | |
def test_edit_chat_email_empty(self, mock_support_function, mock_chat_history_repo, mock_user_repo): | |
user_id = '1' | |
email = None | |
name_old = 'chat123' | |
name_new = 'chat1234' | |
mock_support_function.check_email_service.return_value = res.ReponseError(status=400, data=res.Message( | |
message="Email is empty")) | |
request = RequestEditNameChat(user_id=user_id, name_old=name_old, name_new=name_new) | |
response = edit_chat(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='Email is empty')) | |
def test_edit_chat_email_in_valid(self, mock_support_function, mock_chat_history_repo, mock_user_repo): | |
user_id = "1" | |
email = "20133118" | |
name_old = 'chat123' | |
name_new = 'chat1234' | |
mock_support_function.check_email_service.return_value = res.ReponseError(status=400, data=res.Message( | |
message="Email invalid")) | |
request = RequestEditNameChat(user_id=user_id, name_old=name_old, name_new=name_new) | |
response = edit_chat(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='Email invalid')) | |
def test_edit_chat_name_old_empty(self, mock_support_function, mock_chat_history_repo, mock_user_repo): | |
user_id = "1" | |
email = "20133118@gmail.com" | |
name_old = "" | |
name_new = 'chat1234' | |
mock_user_repo.getEmailUserByIdFix.return_value = (email,) | |
request = RequestEditNameChat(user_id=user_id, name_old=name_old, name_new=name_new) | |
response = edit_chat(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='name_old is empty')) | |
def test_edit_chat_name_new_empty(self, mock_support_function, mock_chat_history_repo, mock_user_repo): | |
user_id = "1" | |
email = "20133118@gmail.com" | |
name_old = 'chat123' | |
name_new = '' | |
mock_user_repo.getEmailUserByIdFix.return_value = (email,) | |
request = RequestEditNameChat(user_id=user_id, name_old=name_old, name_new=name_new) | |
response = edit_chat(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='name_new is empty')) | |
def test_edit_chat_update_error(self, mock_support_function, mock_chat_history_repo, mock_user_repo): | |
user_id = "1" | |
email = "20133118@gmail.com" | |
name_old = 'chat123' | |
name_new = 'chat1234' | |
mock_user_repo.getEmailUserByIdFix.return_value = (email,) | |
mock_chat_history_repo.getIdChatHistoryByUserIdAndNameChat.return_value = False | |
mock_chat_history_repo.getIdChatHistoryByUserIdAndNameChatNew.return_value = None | |
request = RequestEditNameChat(user_id=user_id, name_old=name_old, name_new=name_new) | |
response = edit_chat(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 500) | |
self.assertEqual(response.data, Message(message='Update chat error')) | |
class TestDeleteChat(unittest.TestCase): | |
def test_delete_chat_success(self, mock_support_function, mock_detail_chat_repo, mock_chat_history_repo, | |
mock_user_repo): | |
user_id = "1" | |
email = 'example@example.com' | |
chat_name = 'test' | |
mock_user_repo.getEmailUserByIdFix.return_value = (email,) | |
mock_detail_chat_repo.delete_chat_detail.return_value = True | |
mock_chat_history_repo.deleteChatHistory.return_value = True | |
request = RequestDeleteChat(user_id=user_id, chat_name=chat_name) | |
response = delete_chat(request) | |
self.assertIsInstance(response, ResponseDeleteChat) | |
self.assertEqual(response.status, 200) | |
def test_delete_chat_server_error(self, mock_support_function, mock_detail_chat_repo, mock_chat_history_repo, | |
mock_user_repo): | |
user_id = "1" | |
email = 'example@example.com' | |
chat_name = 'test' | |
mock_detail_chat_repo.delete_chat_detail.return_value = True | |
mock_chat_history_repo.deleteChatHistory.return_value = True | |
request = RequestDeleteChat(user_id=user_id, chat_name=chat_name) | |
response = delete_chat(request) | |
self.assertIsInstance(response, ResponseDeleteChat) | |
self.assertEqual(response.status, 500) | |
def test_delete_chat_id_not_exist(self, mock_support_function, mock_detail_chat_repo, mock_chat_history_repo, | |
mock_user_repo): | |
user_id = "1" | |
email = 'example@example.com' | |
chat_name = 'test' | |
mock_user_repo.getEmailUserByIdFix.return_value = None | |
request = RequestDeleteChat(user_id=user_id, chat_name=chat_name) | |
response = delete_chat(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='Id not exist')) | |
def test_delete_chat_email_empty(self, mock_support_function, mock_detail_chat_repo, mock_chat_history_repo, | |
mock_user_repo): | |
user_id = "1" | |
email = "" | |
chat_name = 'test' | |
mock_user_repo.getEmailUserByIdFix.return_value = (email,) | |
request = RequestDeleteChat(user_id=user_id, chat_name=chat_name) | |
response = delete_chat(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='Email is empty')) | |
def test_delete_chat_email_invalid(self, mock_support_function, mock_detail_chat_repo, mock_chat_history_repo, | |
mock_user_repo): | |
user_id = "1" | |
email = "20133118" | |
chat_name = 'test' | |
mock_user_repo.getEmailUserByIdFix.return_value = (email,) | |
request = RequestDeleteChat(user_id=user_id, chat_name=chat_name) | |
response = delete_chat(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='Email invalid')) | |
def test_delete_chat_chatname_empty(self, mock_support_function, mock_detail_chat_repo, mock_chat_history_repo, | |
mock_user_repo): | |
user_id = "1" | |
email = "20133118@gmail.com" | |
chat_name = "" | |
mock_user_repo.getEmailUserByIdFix.return_value = (email,) | |
request = RequestDeleteChat(user_id=user_id, chat_name=chat_name) | |
response = delete_chat(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='chat_name is empty')) | |
def test_delete_chat_error_1(self, mock_support_function, mock_detail_chat_repo, mock_chat_history_repo, | |
mock_user_repo): | |
user_id = "1" | |
email = "20133118@gmail.com" | |
chat_name = 'test' | |
mock_user_repo.getEmailUserByIdFix.return_value = (email,) | |
mock_chat_history_repo.deleteChatHistory.return_value = False | |
request = RequestDeleteChat(user_id=user_id, chat_name=chat_name) | |
response = delete_chat(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 500) | |
self.assertEqual(response.data, Message(message='Delete conversation chat error')) | |
class TestRenderChatHistory(unittest.TestCase): | |
def test_render_chat_history_success(self, mock_support_function, mock_chat_history_repo, mock_user_repo): | |
user_id = "1" | |
email = 'example@example.com' | |
chat_detail = [Database_Entity.ChatHistory(id=1, email="example@example.com", name_chat="chat1"), | |
Database_Entity.ChatHistory(id=2, email="example@example.com", name_chat="chat2")] | |
mock_user_repo.getEmailUserByIdFix.return_value = (email,) | |
mock_chat_history_repo.getChatHistoryById.return_value = chat_detail | |
request = RequestRenderChatHistory(user_id=user_id) | |
response = render_chat_history(request) | |
self.assertIsInstance(response, ResponseRenderChatHistory) | |
self.assertEqual(response.status, 200) | |
self.assertIsInstance(response.data, UserInfoListResponse) | |
self.assertEqual(len(response.data.chat), 2) # Kiểm tra số lượng chat được trả về | |
self.assertIsInstance(response.data.chat[0], ListUserChat) | |
def test_render_chat_history_server_err(self, mock_support_function, mock_chat_history_repo, mock_user_repo): | |
user_id = "1" | |
email = 'example@example.com' | |
chat_detail = [Database_Entity.ChatHistory(id=1, email="example@example.com", name_chat="chat1"), | |
Database_Entity.ChatHistory(id=2, email="example@example.com", name_chat="chat2")] | |
mock_user_repo.getEmailUserByIdFix.side_effect = Exception("error") | |
request = RequestRenderChatHistory(user_id=user_id) | |
response = render_chat_history(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 500) | |
self.assertEqual(response.data.message, "Server Error") | |
def test_render_chat_history_id_not_exist(self, mock_support_function, mock_chat_history_repo, mock_user_repo): | |
user_id = "1" | |
email = 'example@example.com' | |
chat_detail = [Database_Entity.ChatHistory(id=1, email="example@example.com", name_chat="chat1"), | |
Database_Entity.ChatHistory(id=2, email="example@example.com", name_chat="chat2")] | |
mock_user_repo.getEmailUserByIdFix.return_value = None | |
request = RequestRenderChatHistory(user_id=user_id) | |
response = render_chat_history(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='Id not exist')) | |
class TestLoadChatHistory(unittest.TestCase): | |
def test_load_chat_history_success(self, mock_chat_history_repo, mock_support_functon, mock_detail_chat_repo): | |
chat_id = "1" | |
user_id = "1" | |
chat_detail = [Database_Entity.DetailChat(id=1, chat_id=1, YouMessage="question1", AiMessage="AImessage1", | |
data_relevant="abc", source_file="abcd"), | |
Database_Entity.DetailChat(id=2, chat_id=1, YouMessage="question2", AiMessage="AImessage2", | |
data_relevant="abc", source_file="abcd")] | |
mock_chat_history_repo.getChatHistoryByChatIdAndUserId.return_value = True | |
mock_detail_chat_repo.getListDetailChatByChatId.return_value = chat_detail | |
request = RequestLoadChatHistory(user_id=user_id, chat_id=chat_id) | |
response = load_chat_history(request) | |
self.assertIsInstance(response, ResponseLoadChatHistory) | |
self.assertEqual(response.status, 200) | |
self.assertIsInstance(response.data, ListChatDeTail) | |
self.assertEqual(len(response.data.detail_chat), 2) | |
self.assertIsInstance(response.data.detail_chat[0], ChatDetail) | |
def test_load_chat_history_server_err(self, mock_support_function, mock_chat_history_repo, mock_detail_chat_repo): | |
chat_id = "1" | |
user_id = "1" | |
chat_detail = [Database_Entity.DetailChat(id=1, chat_id=1, YouMessage="question1", AiMessage="AImessage1", | |
data_relevant="abc", source_file="abcd"), | |
Database_Entity.DetailChat(id=2, chat_id=1, YouMessage="question2", AiMessage="AImessage2", | |
data_relevant="abc", source_file="abcd")] | |
mock_chat_history_repo.getChatHistoryByChatIdAndUserId.return_value = True | |
mock_detail_chat_repo.getListDetailChatByChatId.side_effect = Exception("error") | |
request = RequestLoadChatHistory(user_id=user_id, chat_id=chat_id) | |
response = load_chat_history(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 500) | |
self.assertEqual(response.data.message, "Server Error") | |
def test_load_chat_history_error(self, mock_repo1, mock_support_function, mock_detail_chat_repo): | |
chat_id = None | |
user_id = "1" | |
request = RequestLoadChatHistory(user_id=user_id, chat_id=chat_id) | |
mock_repo1.getChatHistoryByChatIdAndUserId.return_value = None | |
response = load_chat_history(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='chat_id is empty')) | |
def test_load_chat_history_not_found_chat(self, mock_repo1, mock_support_function, mock_detail_chat_repo): | |
chat_id = "1" | |
user_id = None | |
mock_repo1.getChatHistoryByChatIdAndUserId.return_value = None | |
request = RequestLoadChatHistory(user_id=user_id, chat_id=chat_id) | |
response = load_chat_history(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='Not found chat width chat_id and user_id')) | |
def test_load_chat_history_user_id_str(self, mock_repo1, mock_support_function, mock_detail_chat_repo): | |
chat_id = "1" | |
user_id = None | |
mock_repo1.getChatHistoryByChatIdAndUserId.return_value = None | |
request = RequestLoadChatHistory(user_id=user_id, chat_id=chat_id) | |
response = load_chat_history(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='user_id must be an integer')) | |
def test_load_chat_history_user_id_str(self, mock_repo1, mock_support_function, mock_detail_chat_repo): | |
chat_id = "1" | |
user_id = None | |
mock_repo1.getChatHistoryByChatIdAndUserId.return_value = None | |
request = RequestLoadChatHistory(user_id=user_id, chat_id=chat_id) | |
response = load_chat_history(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='Id not exist')) | |
def test_load_chat_history_user_id_str(self, mock_repo1, mock_support_function, mock_detail_chat_repo): | |
chat_id = "1" | |
user_id = None | |
mock_repo1.getChatHistoryByChatIdAndUserId.return_value = None | |
request = RequestLoadChatHistory(user_id=user_id, chat_id=chat_id) | |
response = load_chat_history(request) | |
self.assertIsInstance(response, ReponseError) | |
self.assertEqual(response.status, 400) | |
self.assertEqual(response.data, Message(message='Id not exist')) | |
if __name__ == '__main__': | |
unittest.main() |