From a0d4074f44933979226495b249d1f1a2fcd634ae Mon Sep 17 00:00:00 2001 From: emmalynf Date: Mon, 22 Apr 2024 19:51:27 -0400 Subject: [PATCH 1/2] Implement update and delete service methods and tests --- backend/services/user.py | 44 +++++++++++++++++++++++++ backend/test/services/user_test.py | 40 ++++++++++++++++++++-- backend/test/services/user_test_data.py | 13 +++++++- 3 files changed, 94 insertions(+), 3 deletions(-) diff --git a/backend/services/user.py b/backend/services/user.py index 8e0b541..c354215 100644 --- a/backend/services/user.py +++ b/backend/services/user.py @@ -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() + + diff --git a/backend/test/services/user_test.py b/backend/test/services/user_test.py index 34795a5..3f8b9b1 100644 --- a/backend/test/services/user_test.py +++ b/backend/test/services/user_test.py @@ -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) + + + diff --git a/backend/test/services/user_test_data.py b/backend/test/services/user_test_data.py index e050bda..ca72816 100644 --- a/backend/test/services/user_test_data.py +++ b/backend/test/services/user_test_data.py @@ -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 From 682d6b4e26a999018f64b908c95f771f370979b0 Mon Sep 17 00:00:00 2001 From: pmoharana-cmd Date: Mon, 22 Apr 2024 20:50:36 -0400 Subject: [PATCH 2/2] Resolve pytest changes --- backend/test/entities/sample_test.py | 21 --------------------- backend/test/services/user_test.py | 15 +++++++-------- 2 files changed, 7 insertions(+), 29 deletions(-) delete mode 100644 backend/test/entities/sample_test.py diff --git a/backend/test/entities/sample_test.py b/backend/test/entities/sample_test.py deleted file mode 100644 index d0cab09..0000000 --- a/backend/test/entities/sample_test.py +++ /dev/null @@ -1,21 +0,0 @@ -"""Sample Test File""" - -from sqlalchemy import Engine, select - -from ... import entities -from ...entities.sample_entity import SampleEntity - - -def test_entity_count(): - """Checks the number of entities to be inserted""" - print(entities.EntityBase.metadata.tables.keys()) - assert len(entities.EntityBase.metadata.tables.keys()) == 7 - - -def test_add_sample_data(session: Engine): - """Inserts a sample data point and verifies it is in the database""" - entity = SampleEntity(name="Praj", age=19, email="pmoha@unc.edu") - session.add(entity) - session.commit() - data = session.get(SampleEntity, 1) - assert data.name == "Praj" diff --git a/backend/test/services/user_test.py b/backend/test/services/user_test.py index 3f8b9b1..af91294 100644 --- a/backend/test/services/user_test.py +++ b/backend/test/services/user_test.py @@ -31,7 +31,7 @@ def test_create_id_exists(user_svc: UserService): def test_get_all(user_svc: UserService): """Test that all users can be retrieved.""" users = user_svc.all() - assert len(users) == 3 + assert len(users) == 4 def test_get_user_by_id(user_svc: UserService): @@ -56,12 +56,13 @@ def test_delete_user(user_svc: UserService): def test_delete_user_nonexistent(user_svc: UserService): """Test deleting a user that does not exist""" - with pytest.raises(Exception): + with pytest.raises(Exception): user_svc.delete(newUser) -def test_update_user(user_svc: UserService): + +def test_update_user(user_svc: UserService): """Test updating a user - Updating volunteer + Updating volunteer """ user = user_svc.get_user_by_id(volunteer.id) assert user is not None @@ -73,10 +74,8 @@ def test_update_user(user_svc: UserService): 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""" + """Test updated a user that does not exist""" with pytest.raises(Exception): user_svc.update(newUser) - - -