Spaces:
Sleeping
Sleeping
| import os | |
| import sys | |
| from unittest.mock import patch | |
| from fastapi.testclient import TestClient | |
| app_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')) | |
| sys.path.insert(0, app_path) | |
| from controller import MySQLController | |
| from models import Database_Entity | |
| from response import ResponseMySQL as res | |
| client = TestClient(MySQLController.router) | |
| def test_render_chat_history(): | |
| with patch('repository.UserRepository.getEmailUserByIdFix') as mock_get_email_user_by_id: | |
| mock_get_email_user_by_id.return_value = ("example@example.com",) | |
| with patch('repository.ChatHistoryRepository.getChatHistoryById') as mock_get_chat_history_by_id: | |
| mock_get_chat_history_by_id.return_value = [Database_Entity.ChatHistory(id = 1, | |
| email = "example@example.com", | |
| name_chat = "chat1") ] | |
| response = client.get("/chat_history/1") | |
| assert response.status_code == 200 | |
| assert response.json() == { | |
| "status": 200, | |
| "data": { | |
| "chat": [ | |
| { | |
| "id": 1, | |
| "email": "example@example.com", | |
| "chat_name": "chat1" | |
| } | |
| ] | |
| } | |
| } | |
| def test_load_chat_history(mock3,mokc1,mock_check_exist): | |
| with patch('repository.DetailChatRepository.getListDetailChatByChatId') as mock_get_list_detail_chat_by_chat_id: | |
| mock_get_list_detail_chat_by_chat_id.return_value = [Database_Entity.DetailChat(id=1, chat_id=1, | |
| YouMessage="question1", | |
| AiMessage="AImessage1", | |
| data_relevant="abcd", | |
| source_file="/demo1.pdf")] | |
| response = client.get("/detail_chat/1/1") | |
| assert response.status_code == 200 | |
| assert response.json() == { | |
| "status": 200, | |
| "data": { | |
| "detail_chat": [ | |
| { | |
| "id": 1, | |
| "chat_id": 1, | |
| "question": "question1", | |
| "answer": "AImessage1", | |
| 'data_relevant': 'abcd', | |
| 'source_file': '/demo1.pdf' | |
| } | |
| ] | |
| } | |
| } | |
| def test_load_chat_history_user_id_must_be_integer(): | |
| response = client.get("/detail_chat/aaaa/1") | |
| assert response.json()['status'] == 400 | |
| assert response.json() == { | |
| "status": 400, | |
| "data": { | |
| "message": "user_id must be an integer" | |
| } | |
| } | |
| def test_load_chat_history_user_id_greater_than0(): | |
| response = client.get("/detail_chat/0/1") | |
| assert response.json()['status'] == 400 | |
| assert response.json() == { | |
| "status": 400, | |
| "data": { | |
| "message": "user_id must be greater than 0" | |
| } | |
| } | |
| def test_edit_chat_success(): | |
| with patch('service.MySQLService.edit_chat') as mock_edit_chat: | |
| mock_edit_chat.return_value = res.ResponseEditChat(status=200, data=res.Message(message="Edit chat success")) | |
| response = client.put("/edit_chat/", json={"user_id": 1, "name_old": "old_name", "name_new": "new_name"}) | |
| assert response.status_code == 200 | |
| assert response.json() == { | |
| "status": 200, | |
| "data": { | |
| "message": "Edit chat success" | |
| } | |
| } | |
| def test_edit_chat_invalid_id(mock_edit_chat): | |
| with patch('repository.UserRepository.getEmailUserByIdFix') as mock_get_email_user_by_id: | |
| mock_get_email_user_by_id.return_value = None | |
| mock_edit_chat.return_value = res.ReponseError(status= 400, data=res.Message(message="Id not exist")) | |
| response = client.put("/edit_chat/", json={"user_id": 1, "name_old": "old_name", "name_new": "new_name"}) | |
| assert response.json()['status'] == 400 | |
| assert response.json() == { | |
| "status": 400, | |
| "data": { | |
| "message": "Id not exist" | |
| } | |
| } | |
| def test_edit_chat_email_empty(mock_edit_chat,mock_get_email_user_by_id): | |
| email = "" | |
| mock_get_email_user_by_id.return_value = (email,) | |
| mock_edit_chat.return_value = res.ReponseError(status= 400, data=res.Message(message="Email is empty")) | |
| response = client.put("/edit_chat/", json={"user_id": 1, "name_old": "old_name", "name_new": "new_name"}) | |
| assert response.json()['status'] == 400 | |
| assert response.json() == { | |
| "status": 400, | |
| "data": { | |
| "message": "Email is empty" | |
| } | |
| } | |
| def test_edit_chat_email_invalid(mock_edit_chat,mock_get_email_user_by_id): | |
| email = "20133118" | |
| mock_get_email_user_by_id.return_value = (email,) | |
| mock_edit_chat.return_value = res.ReponseError(status= 400, data=res.Message(message="Email invalid")) | |
| response = client.put("/edit_chat/", json={"user_id": 1, "name_old": "old_name", "name_new": "new_name"}) | |
| assert response.json()['status'] == 400 | |
| assert response.json() == { | |
| "status": 400, | |
| "data": { | |
| "message": "Email invalid" | |
| } | |
| } | |
| def test_edit_chat_name_old(mock_edit_chat,mock_get_email_user_by_id): | |
| email = "20133118@gmail.com" | |
| mock_get_email_user_by_id.return_value = (email,) | |
| mock_edit_chat.return_value = res.ReponseError(status= 400, data=res.Message(message="Name old is empty")) | |
| response = client.put("/edit_chat/", json={"user_id": 1, "name_old": "", "name_new": "new_name"}) | |
| assert response.json()['status'] == 400 | |
| assert response.json() == { | |
| "status": 400, | |
| "data": { | |
| "message": "Name old is empty" | |
| } | |
| } | |
| def test_edit_chat_name_new(mock_edit_chat,mock_get_email_user_by_id): | |
| email = "20133118@gmail.com" | |
| mock_get_email_user_by_id.return_value = (email,) | |
| mock_edit_chat.return_value = res.ReponseError(status= 400, data=res.Message(message="Name new is empty")) | |
| response = client.put("/edit_chat", json={"user_id": 1, "name_old": "123", "name_new": ""}) | |
| assert response.json()['status'] == 400 | |
| assert response.json() == { | |
| "status": 400, | |
| "data": { | |
| "message": "Name new is empty" | |
| } | |
| } | |
| def test_edit_chat1_error(mock_edit_chat,mock_get_email_user_by_id,mock_get_chat_id): | |
| email = "20133118@gmail.com" | |
| mock_get_email_user_by_id.return_value = (email,) | |
| mock_get_chat_id.return_value = False | |
| mock_edit_chat.return_value = res.ReponseError(status=500,data= res.Message(message="Update chat name error")) | |
| response = client.put("/edit_chat/", json={"user_id": 1, "name_old": "123", "name_new": "1234"}) | |
| assert response.json()['status'] == 500 | |
| assert response.json() == { | |
| "status": 500, | |
| "data": { | |
| "message": "Update chat name error" | |
| } | |
| } | |
| def test_delete_chat_success(): | |
| with patch('service.MySQLService.delete_chat') as mock_delete_chat: | |
| mock_delete_chat.return_value = res.ResponseDeleteChat(status=200, data=res.Message(message="Delete chat success")) | |
| response = client.request("DELETE", "/chat_history/delete", json={"user_id": 1, "chat_name": "chat_name"}) | |
| assert response.status_code == 200 | |
| assert response.json() == { | |
| "status": 200, | |
| "data": { | |
| "message": "Delete chat success" | |
| } | |
| } | |
| def test_delete_chat_id_not_exits(mock_delete_chat): | |
| with patch('repository.UserRepository.getEmailUserByIdFix') as mock_get_email_user_by_id: | |
| mock_get_email_user_by_id.return_value = None | |
| mock_delete_chat.return_value = res.ReponseError(status= 400, data=res.Message(message="Id not exist")) | |
| response = client.request("DELETE", "/chat_history/delete", json={"user_id": 1, "chat_name": "chat_name"}) | |
| assert response.json()['status']== 400 | |
| assert response.json() == { | |
| "status": 400, | |
| "data": { | |
| "message": "Id not exist" | |
| } | |
| } | |
| def test_delete_chat_email_empty(mock_delete_chat,mock_get_email_user_by_id): | |
| email = "" | |
| mock_get_email_user_by_id.return_value = (email,) | |
| mock_delete_chat.return_value = res.ResponseDeleteChat(status=400, data=res.Message(message="Email is empty")) | |
| response = client.request("DELETE", "/chat_history/delete", json={"user_id": 1, "chat_name": "chat_name"}) | |
| assert response.json()['status'] == 400 | |
| assert response.json() == { | |
| "status": 400, | |
| "data": { | |
| "message": "Email is empty" | |
| } | |
| } | |
| def test_delete_chat_email_invalid(mock_delete_chat,mock_get_email_user_by_id): | |
| email = "20133118" | |
| mock_get_email_user_by_id.return_value = (email,) | |
| mock_delete_chat.return_value = res.ReponseError(status= 400, data=res.Message(message="Email invalid")) | |
| response = client.request("DELETE", "/chat_history/delete", json={"user_id": 1, "chat_name": "chat_name"}) | |
| assert response.json()['status'] == 400 | |
| assert response.json() == { | |
| "status": 400, | |
| "data": { | |
| "message": "Email invalid" | |
| } | |
| } | |
| def test_delete_chat_name_empty(mock_delete_chat,mock_get_email_user_by_id): | |
| email = "20133118@gmail.com" | |
| mock_get_email_user_by_id.return_value = (email,) | |
| mock_delete_chat.return_value = res.ReponseError(status= 400, data=res.Message(message="Chat name is empty")) | |
| response = client.request("DELETE", "/chat_history/delete", json={"user_id": 1, "chat_name": ""}) | |
| assert response.json()['status'] == 400 | |
| assert response.json() == { | |
| "status": 400, | |
| "data": { | |
| "message": "Chat name is empty" | |
| } | |
| } | |
| def test_delete_chat_name_error_500(mock_delete_chat,mock_chat_history_repo,mock_get_email_user_by_id): | |
| email = "20133118@gmail.com" | |
| mock_get_email_user_by_id.return_value = (email,) | |
| mock_chat_history_repo.return_value = False | |
| mock_delete_chat.return_value = res.ResponseDeleteChat(status=500, data=res.Message(message="Delete chat error")) | |
| response = client.request("DELETE", "/chat_history/delete", json={"user_id": 1, "chat_name": "1234"}) | |
| assert response.json()['status'] == 500 | |
| assert response.json() == { | |
| "status": 500, | |
| "data": { | |
| "message": "Delete chat error" | |
| } | |
| } | |
| def test_render_chat_value_mustbe_interger(): | |
| user_id = "aaaa" | |
| response = client.get(f"/chat_history/{user_id}") | |
| assert response.json()['status'] == 400 | |
| assert response.json()['data']['message'] == "user_id must be an integer" | |
| def test_render_chat_user_id_greater_than_inter(): | |
| user_id = "0" | |
| response = client.get(f"/chat_history/{user_id}") | |
| assert response.json()['status'] == 400 | |
| assert response.json()['data']['message'] == "user_id must be greater than 0" | |
| def test_load_chat_history_chat_id_greater_than_inter(): | |
| chat_id = "0" | |
| user_id = 1 | |
| response = client.get(f"/detail_chat/{user_id}/{chat_id}") | |
| assert response.json()['status'] == 400 | |
| assert response.json()['data']['message'] == "Value must be greater than 0" | |
| def test_load_chat_history_value_mustbe_inter(): | |
| chat_id = "aaaa" | |
| user_id = 1 | |
| response = client.get(f"/detail_chat/{user_id}/{chat_id}") | |
| assert response.json()['status'] == 400 | |
| assert response.json()['data']['message'] == "Value must be an integer" | |
| def test_load_chat_history_user_id_greater_than_inter(): | |
| chat_id = "1" | |
| user_id = 0 | |
| response = client.get(f"/detail_chat/{user_id}/{chat_id}") | |
| assert response.json()['status'] == 400 | |
| assert response.json()['data']['message'] == "user_id must be greater than 0" | |
| def test_load_chat_history_user_id_mustbe_inter(): | |
| chat_id = "1" | |
| user_id = "aaaaa" | |
| response = client.get(f"/detail_chat/{user_id}/{chat_id}") | |
| assert response.json()['status'] == 400 | |
| assert response.json()['data']['message'] == "user_id must be an integer" | |