From 66cad20696ddf91e759ffe10ab7233168733cadd Mon Sep 17 00:00:00 2001 From: Maxence Date: Wed, 29 Jan 2025 17:06:23 +0000 Subject: [PATCH 1/2] friend route modify --- app/dto/FriendListDTO.py | 8 -------- app/dto/__init__.py | 1 - app/main.py | 6 +++--- app/models/friend.py | 1 - app/serializers/friend_serializer.py | 14 +++++--------- tests/test_friends.py | 1 - 6 files changed, 8 insertions(+), 23 deletions(-) delete mode 100644 app/dto/FriendListDTO.py diff --git a/app/dto/FriendListDTO.py b/app/dto/FriendListDTO.py deleted file mode 100644 index 7b65d66..0000000 --- a/app/dto/FriendListDTO.py +++ /dev/null @@ -1,8 +0,0 @@ -from pydantic import BaseModel - -from app.models.friend import Friend - - -class FriendListDTO(BaseModel): - friends: list[Friend] - external_friends: list[Friend] \ No newline at end of file diff --git a/app/dto/__init__.py b/app/dto/__init__.py index cb3deeb..8295fe7 100644 --- a/app/dto/__init__.py +++ b/app/dto/__init__.py @@ -1,5 +1,4 @@ from .UserRegisterDTO import UserRegisterDTO from .FriendAddDTO import FriendAddDTO -from .FriendListDTO import FriendListDTO from .UserDTO import UserDTO from .PinDTO import PinDTO \ No newline at end of file diff --git a/app/main.py b/app/main.py index 15fe70d..94c1956 100644 --- a/app/main.py +++ b/app/main.py @@ -17,7 +17,7 @@ import app.serializers as serializers # Import all serializers (detailed in __in from app.models import User, Friend, Token, TokenData, HTTPError # Import all DTOs (detailed in __init__.py) -from app.dto import FriendAddDTO, FriendListDTO, UserDTO, UserRegisterDTO, PinDTO +from app.dto import FriendAddDTO, UserDTO, UserRegisterDTO, PinDTO # Contains all constants import app.config as config @@ -287,11 +287,11 @@ async def deny_friend(id: str, current_user: User = Depends(get_current_user)): @app.get( path="/friends", - response_model=FriendListDTO, + response_model=list[Friend], responses={401: {"model": HTTPError}} ) async def list_friends(current_user: User = Depends(get_current_user)): - return FriendListDTO(**serializers.friends_serialize(friends_collection.find({"user_id": current_user.uid}).to_list(), friends_collection.find({"friend_user_id": current_user.uid}).to_list())) + return serializers.friends_serialize(friends_collection.find({"user_id": current_user.uid}).to_list(), friends_collection.find({"friend_user_id": current_user.uid}).to_list()) @app.get( path="/users", diff --git a/app/models/friend.py b/app/models/friend.py index 371eab0..ac6dbf0 100644 --- a/app/models/friend.py +++ b/app/models/friend.py @@ -4,6 +4,5 @@ from pydantic import BaseModel, Field class Friend(BaseModel): id: Optional[str] - user_id: str friend_user_id: str status: str \ No newline at end of file diff --git a/app/serializers/friend_serializer.py b/app/serializers/friend_serializer.py index 0c2b582..3b55f0f 100644 --- a/app/serializers/friend_serializer.py +++ b/app/serializers/friend_serializer.py @@ -1,25 +1,21 @@ from app.models.friend import Friend -def friend_serialize(friend: list) -> Friend: +def friend_serialize(friend: list, is_external: bool) -> Friend: status = friend['status'] if 'status' in friend else 'pending' return Friend(**{ "id": str(friend["_id"]), - "user_id": friend["user_id"], - "friend_user_id": friend["friend_user_id"], + "friend_user_id": friend["user_id"] if is_external else friend["friend_user_id"], "status": status }) def friends_serialize(friends: list, external_friends: list) -> dict: - serialized_friends: dict = { - 'friends': [], - 'external_friends': [] - } + serialized_friends: list = [] for friend in friends: - serialized_friends["friends"].append(friend_serialize(friend)) + serialized_friends.append(friend_serialize(friend,False)) for external_friend in external_friends: - serialized_friends["external_friends"].append(friend_serialize(external_friend)) + serialized_friends.append(friend_serialize(external_friend,True)) return serialized_friends \ No newline at end of file diff --git a/tests/test_friends.py b/tests/test_friends.py index 146bff2..bc3d75c 100644 --- a/tests/test_friends.py +++ b/tests/test_friends.py @@ -17,7 +17,6 @@ def test_add_friend_myself(token): response = client.post("/friend/add", json=friend_data, headers={"Authorization": f"Bearer {token}"}) assert response.status_code == 409 # Cannot add yourself as a friend - def test_list_friends(token): response = client.get("/friends", headers={"Authorization": f"Bearer {token}"}) assert response.status_code == 200 From a9dd90645f50af0fc878e169f2ad830744edec47 Mon Sep 17 00:00:00 2001 From: Maxence Date: Wed, 29 Jan 2025 17:13:29 +0000 Subject: [PATCH 2/2] fix friend test --- app/main.py | 2 +- tests/test_friends.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/main.py b/app/main.py index 94c1956..895ad96 100644 --- a/app/main.py +++ b/app/main.py @@ -215,7 +215,7 @@ async def get_friend(id: str, current_user: User = Depends(get_current_user)): if friend is None: friend_not_found() - return serializers.friend_serialize(friend) + return serializers.friend_serialize(friend,False if friend['user_id']==current_user._id else True) @app.post( path="/friend/add", diff --git a/tests/test_friends.py b/tests/test_friends.py index bc3d75c..0996fe7 100644 --- a/tests/test_friends.py +++ b/tests/test_friends.py @@ -21,7 +21,7 @@ def test_list_friends(token): response = client.get("/friends", headers={"Authorization": f"Bearer {token}"}) assert response.status_code == 200 data = response.json() - assert isinstance(data, dict) + assert isinstance(data, list) def test_get_friend(token): friend_id = str(db["friends"].find_one({})["_id"]) @@ -29,7 +29,6 @@ def test_get_friend(token): assert response.status_code == 200 data = response.json() assert "id" in data - assert "user_id" in data assert "friend_user_id" in data assert "status" in data