mirror of
https://github.com/cssgunc/compass.git
synced 2025-04-18 17:50:16 -04:00
Merge pull request #34 from cssgunc/emmafoster-backend-wip-GEN-114-user-services
Implement update and delete service methods and tests
This commit is contained in:
commit
5a4f04dcfc
|
@ -57,3 +57,47 @@ class UserService:
|
||||||
finally:
|
finally:
|
||||||
# return added object
|
# return added object
|
||||||
return user
|
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()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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"
|
|
|
@ -5,9 +5,10 @@ import pytest
|
||||||
|
|
||||||
from ...services import UserService
|
from ...services import UserService
|
||||||
from .fixtures import user_svc
|
from .fixtures import user_svc
|
||||||
|
from ...models.user_model import User
|
||||||
from ...models.enum_for_models import ProgramTypeEnum
|
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
|
from . import user_test_data
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,7 +31,7 @@ def test_create_id_exists(user_svc: UserService):
|
||||||
def test_get_all(user_svc: UserService):
|
def test_get_all(user_svc: UserService):
|
||||||
"""Test that all users can be retrieved."""
|
"""Test that all users can be retrieved."""
|
||||||
users = user_svc.all()
|
users = user_svc.all()
|
||||||
assert len(users) == 3
|
assert len(users) == 4
|
||||||
|
|
||||||
|
|
||||||
def test_get_user_by_id(user_svc: UserService):
|
def test_get_user_by_id(user_svc: UserService):
|
||||||
|
@ -43,4 +44,38 @@ def test_get_user_by_id(user_svc: UserService):
|
||||||
def test_get_user_by_id_nonexistent(user_svc: UserService):
|
def test_get_user_by_id_nonexistent(user_svc: UserService):
|
||||||
"""Test getting a user by id that does not exist"""
|
"""Test getting a user by id that does not exist"""
|
||||||
with pytest.raises(Exception):
|
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)
|
||||||
|
|
|
@ -59,7 +59,18 @@ newUser = User(
|
||||||
role=roles.VOLUNTEER,
|
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 sqlalchemy import text
|
||||||
|
|
Loading…
Reference in New Issue
Block a user