Skip to content

Commit 11b94a8

Browse files
committed
refactor
1 parent 8118fa3 commit 11b94a8

File tree

2 files changed

+48
-86
lines changed

2 files changed

+48
-86
lines changed

gs/backend/api/v1/aro/endpoints/user.py

Lines changed: 29 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,7 @@
44

55
from gs.backend.api.v1.aro.models.requests import UserRequest
66
from gs.backend.api.v1.aro.models.responses import AllUsersResponse, UserResponse
7-
from gs.backend.data.data_wrappers.aro_wrapper.aro_user_data_wrapper import (
8-
add_user,
9-
delete_user_by_id,
10-
update_user_by_id,
11-
)
12-
from gs.backend.data.data_wrappers.aro_wrapper.aro_user_data_wrapper import get_all_users as get_all_db_users
7+
from gs.backend.data.data_wrappers.wrappers import AROUsersWrapper
138

149
aro_user_router = APIRouter(tags=["ARO", "User Information"])
1510

@@ -21,10 +16,25 @@ async def get_all_users() -> AllUsersResponse:
2116
2217
:return: all users
2318
"""
24-
users = get_all_db_users()
19+
users = AROUsersWrapper().get_all()
2520
return AllUsersResponse(data=users)
2621

2722

23+
@aro_user_router.get("/get_user/{userid}", response_model=UserResponse)
24+
def get_user(userid: str) -> UserResponse:
25+
"""
26+
Gets a user by ID
27+
28+
:param userid: The unique identifier of the user
29+
:return: the user
30+
"""
31+
try:
32+
user = AROUsersWrapper().get_by_id(UUID(userid))
33+
return UserResponse(data=user)
34+
except ValueError as e:
35+
raise HTTPException(status_code=404, detail=str(e)) from e
36+
37+
2838
@aro_user_router.post("/create_user", response_model=UserResponse)
2939
def create_user(payload: UserRequest) -> UserResponse:
3040
"""
@@ -33,48 +43,30 @@ def create_user(payload: UserRequest) -> UserResponse:
3343
:return: returns the user created
3444
"""
3545

36-
user = add_user(
37-
call_sign=payload.call_sign,
38-
email=payload.email,
39-
f_name=payload.first_name,
40-
l_name=payload.last_name,
41-
phone_number=payload.phone_number,
46+
user = AROUsersWrapper().create(
47+
data={
48+
"call_sign": payload.call_sign,
49+
"email": payload.email,
50+
"first_name": payload.first_name,
51+
"last_name": payload.last_name,
52+
"phone_number": payload.phone_number,
53+
}
4254
)
4355

4456
return UserResponse(data=user)
4557

4658

47-
@aro_user_router.put("/update_user/{userid}", response_model=UserResponse)
48-
def update_user(userid: str, payload: UserRequest) -> UserResponse:
49-
"""
50-
Modifies the user’s info based on the payload
51-
:param userid: The unique identifier of the user to be updated
52-
:param payload: The data used to update a user
53-
:return: returns the user updated
54-
"""
55-
try:
56-
user = update_user_by_id(
57-
userid=UUID(userid),
58-
call_sign=payload.call_sign,
59-
email=payload.email,
60-
f_name=payload.first_name,
61-
l_name=payload.last_name,
62-
phone_number=payload.phone_number,
63-
)
64-
return UserResponse(data=user)
65-
except ValueError as e:
66-
raise HTTPException(status_code=404, detail=str(e)) from e
67-
68-
6959
@aro_user_router.delete("/delete_user/{userid}", response_model=AllUsersResponse)
7060
def delete_user(userid: str) -> AllUsersResponse:
7161
"""
7262
Deletes a user based on the user ID
7363
:param userid: The unique identifier of the user to be deleted
74-
:return: returns the user deleted
64+
:return: returns all remaining users
7565
"""
7666
try:
77-
users = delete_user_by_id(UUID(userid))
67+
wrapper = AROUsersWrapper()
68+
wrapper.delete_by_id(UUID(userid))
69+
users = wrapper.get_all()
7870
return AllUsersResponse(data=users)
7971
except ValueError as e:
8072
raise HTTPException(status_code=404, detail=str(e)) from e

python_test/test_aro_user_api.py

Lines changed: 19 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -68,63 +68,33 @@ def test_user2_creation(client, user2_data):
6868
return user
6969

7070

71-
# Test updating user1 (depends on test_user1_creation)
72-
@pytest.fixture
73-
def test_user1_update(client, test_user1_creation):
71+
# Test getting user1 by ID
72+
def test_get_user1_by_id(client, test_user1_creation):
7473
user_id = test_user1_creation["id"]
75-
update_data = {
76-
"call_sign": "123456",
77-
"email": "bob2@test.com",
78-
"first_name": "Rob",
79-
"last_name": "Smith",
80-
"phone_number": "234567890",
81-
}
82-
res = client.put(
83-
f"/api/v1/aro/user/update_user/{user_id}", json=update_data, headers={"Content-Type": "application/json"}
84-
)
85-
74+
res = client.get(f"/api/v1/aro/user/get_user/{user_id}")
8675
assert res.status_code == 200
87-
updated_user = res.json()["data"]
88-
assert updated_user["email"] == update_data["email"]
89-
assert updated_user["call_sign"] == update_data["call_sign"]
90-
assert updated_user["first_name"] == update_data["first_name"]
91-
assert updated_user["last_name"] == update_data["last_name"]
92-
assert updated_user["phone_number"] == update_data["phone_number"]
76+
assert res.json()["data"]["id"] == user_id
77+
9378

94-
return updated_user
79+
# Test getting user2 by ID
80+
def test_get_user2_by_id(client, test_user2_creation):
81+
user_id = test_user2_creation["id"]
82+
res = client.get(f"/api/v1/aro/user/get_user/{user_id}")
83+
assert res.status_code == 200
84+
assert res.json()["data"]["id"] == user_id
9585

9686

97-
# Test getting all users (after creating user1 and user2, and updating user1 to ensure creation and update work oncorrect user objects)
98-
@pytest.fixture
99-
def test_get_users(client, test_user1_update, test_user2_creation):
87+
# Test getting all users
88+
def test_get_all_users(client, test_user1_creation, test_user2_creation):
10089
res = client.get("/api/v1/aro/user/get_all_users")
101-
10290
assert res.status_code == 200
10391
all_users = res.json()["data"]
104-
assert len(all_users) == 2
105-
106-
# Check user1
107-
user1_id = test_user1_update["id"]
108-
user1_from_response = next(user for user in all_users if user["id"] == user1_id)
109-
assert user1_from_response["call_sign"] == test_user1_update["call_sign"]
110-
assert user1_from_response["email"] == test_user1_update["email"]
111-
assert user1_from_response["first_name"] == test_user1_update["first_name"]
112-
assert user1_from_response["last_name"] == test_user1_update["last_name"]
113-
assert user1_from_response["phone_number"] == test_user1_update["phone_number"]
114-
115-
# Check user2
116-
user2_id = test_user2_creation["id"]
117-
user2_from_response = next(user for user in all_users if user["id"] == user2_id)
118-
assert user2_from_response["email"] == test_user2_creation["email"]
119-
assert user2_from_response["call_sign"] == test_user2_creation["call_sign"]
120-
assert user2_from_response["first_name"] == test_user2_creation["first_name"]
121-
assert user2_from_response["last_name"] == test_user2_creation["last_name"]
122-
assert user2_from_response["phone_number"] == test_user2_creation["phone_number"]
123-
124-
125-
# Test deleting user1 (after test_get_users to ensure both users exist)
126-
def test_user1_deletion(client, test_user1_update, test_user2_creation, test_get_users):
127-
user_id = test_user1_update["id"]
92+
assert len(all_users) >= 2
93+
94+
95+
# Test deleting user1
96+
def test_user1_deletion(client, test_user1_creation, test_user2_creation):
97+
user_id = test_user1_creation["id"]
12898
res = client.delete(f"/api/v1/aro/user/delete_user/{user_id}", headers={"Content-Type": "application/json"})
12999

130100
assert res.status_code == 200

0 commit comments

Comments
 (0)