Implement update and delete service methods and tests

This commit is contained in:
emmalynf 2024-04-22 19:51:27 -04:00
parent 7ab0a0b0dc
commit a0d4074f44
3 changed files with 94 additions and 3 deletions
backend

View File

@ -57,3 +57,47 @@ class UserService:
finally:
# return added object
return user
def delete(self, user: User) -> None:
"""
Delete a user
Args: the user to delete
Returns: none
"""
obj = self._session.get(UserEntity, user.id)
if obj is None:
raise Exception(f"No matching user found")
self._session.delete(obj)
self._session.commit()
def update(self, user: User) -> User:
"""
Updates a user
Args: User to be updated
Returns: The updated User
"""
obj = self._session.get(UserEntity, user.id)
if obj is None:
raise Exception(f"No matching user found")
obj.username = user.username
obj.role = user.role
obj.email = user.email
obj.program = user.program
obj.experience = user.experience
obj.group = user.group
self._session.commit()
return obj.to_model()

View File

@ -5,9 +5,10 @@ import pytest
from ...services import UserService
from .fixtures import user_svc
from ...models.user_model import User
from ...models.enum_for_models import ProgramTypeEnum
from .user_test_data import employee, volunteer, admin, newUser
from .user_test_data import employee, volunteer, admin, newUser, toDelete
from . import user_test_data
@ -43,4 +44,39 @@ def test_get_user_by_id(user_svc: UserService):
def test_get_user_by_id_nonexistent(user_svc: UserService):
"""Test getting a user by id that does not exist"""
with pytest.raises(Exception):
user_svc.get_by_id(5)
user_svc.get_by_id(100)
def test_delete_user(user_svc: UserService):
"""Test deleting a user"""
user_svc.delete(toDelete)
with pytest.raises(Exception):
user_svc.get_user_by_id(toDelete.id)
def test_delete_user_nonexistent(user_svc: UserService):
"""Test deleting a user that does not exist"""
with pytest.raises(Exception):
user_svc.delete(newUser)
def test_update_user(user_svc: UserService):
"""Test updating a user
Updating volunteer
"""
user = user_svc.get_user_by_id(volunteer.id)
assert user is not None
user.username = "volunteer 1"
user.email = "newemail@compass.com"
updated_user = user_svc.update(user)
assert updated_user is not None
assert updated_user.id == user.id
assert updated_user.username == "volunteer 1"
assert updated_user.email == "newemail@compass.com"
def test_update_user_nonexistent(user_svc: UserService):
""" Test updated a user that does not exist"""
with pytest.raises(Exception):
user_svc.update(newUser)

View File

@ -59,7 +59,18 @@ newUser = User(
role=roles.VOLUNTEER,
)
users = [volunteer, employee, admin]
toDelete = User(
id=5,
username="delete",
email="delete@compass.com",
experience=0,
group="none",
program=[programs.COMMUNITY],
created_at=datetime.now(),
role=roles.VOLUNTEER
)
users = [volunteer, employee, admin, toDelete]
from sqlalchemy import text