diff --git a/backend/entities/user_entity.py b/backend/entities/user_entity.py index 435023c..2a0f335 100644 --- a/backend/entities/user_entity.py +++ b/backend/entities/user_entity.py @@ -1,7 +1,7 @@ """ Defines the table for storing users """ # Import our mapped SQL types from SQLAlchemy -from sqlalchemy import Integer, String, DateTime, ARRAY +from sqlalchemy import Integer, String, DateTime, ARRAY, Enum # Import mapping capabilities from the SQLAlchemy ORM @@ -19,6 +19,7 @@ from datetime import datetime # Import enums for Role and Program from .program_enum import ProgramEnum from .user_enum import RoleEnum +from ..models.enum_for_models import UserTypeEnum, ProgramTypeEnum #Import models for User methods from ..models.user_model import User @@ -36,9 +37,9 @@ class UserEntity(EntityBase): id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.now) username: Mapped[str] = mapped_column(String(32), nullable=False, default="", unique=True ) - role: Mapped[RoleEnum] = mapped_column(String, nullable=False) + role: Mapped[UserTypeEnum] = mapped_column(Enum(UserTypeEnum), nullable=False) email: Mapped[str] = mapped_column(String(50), nullable=False, unique=True) - program: Mapped[list[str]] = mapped_column(ARRAY(String), nullable=False) + program: Mapped[list[ProgramTypeEnum]] = mapped_column(ARRAY(Enum(ProgramTypeEnum)), nullable=False) experience: Mapped[int] = mapped_column(Integer, nullable=False) group: Mapped[str] = mapped_column(String(50)) diff --git a/backend/models/user_model.py b/backend/models/user_model.py index 2f227c2..c881d54 100644 --- a/backend/models/user_model.py +++ b/backend/models/user_model.py @@ -12,6 +12,6 @@ class User(BaseModel): email: str = Field(..., description="The e-mail of the user") experience: int = Field(..., description="Years of Experience of the User") group: str - programtype: List[str] - usertype: str + programtype: List[ProgramTypeEnum] + usertype: UserTypeEnum created_at: Optional[datetime] diff --git a/backend/services/user.py b/backend/services/user.py index 87baab5..8065b27 100644 --- a/backend/services/user.py +++ b/backend/services/user.py @@ -52,7 +52,8 @@ class UserService: """ try: - user_entity = self.get_user_by_id(user.id) + user_model = self.get_user_by_id(user.id) + return user_model except: # if does not exist, create new object user_entity = UserEntity.from_model(user) diff --git a/backend/test/services/user_test.py b/backend/test/services/user_test.py index 337ee5f..170569f 100644 --- a/backend/test/services/user_test.py +++ b/backend/test/services/user_test.py @@ -17,9 +17,10 @@ def test_create(user_svc: UserService): assert user1 is not None assert user1.id is not None -def test_create_id_exists(user_svc: UserService): + +def test_create_id_exists(user_svc: UserService): """Test creating a user with id conflict""" - user1 = user_svc.create(volunteer) + user1 = user_svc.create(volunteer) assert user1 is not None assert user1.id is not None @@ -29,19 +30,15 @@ def test_get_all(user_svc: UserService): users = user_svc.all() assert len(users) == 3 + def test_get_user_by_id(user_svc: UserService): """Test getting a user by an id""" user = user_svc.get_user_by_id(volunteer.id) assert user is not None assert user.id is not None + 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) - - - - - - \ No newline at end of file diff --git a/backend/test/services/user_test_data.py b/backend/test/services/user_test_data.py index 119375e..bcd481f 100644 --- a/backend/test/services/user_test_data.py +++ b/backend/test/services/user_test_data.py @@ -17,9 +17,9 @@ volunteer = User( email="volunteer@compass.com", experience=1, group="volunteers", - programtype=[programs.COMMUNITY.value], + programtype=[programs.COMMUNITY], created_at=datetime.now(), - usertype=UserTypeEnum.VOLUNTEER.value + usertype=UserTypeEnum.VOLUNTEER ) employee = User( @@ -28,9 +28,9 @@ employee = User( email="employee@compass.com", experience=5, group="employees", - programtype=[programs.DOMESTIC.value, programs.ECONOMIC.value], + programtype=[programs.DOMESTIC, programs.ECONOMIC], created_at=datetime.now(), - usertype=roles.EMPLOYEE.value, + usertype=roles.EMPLOYEE, ) admin = User( @@ -39,9 +39,9 @@ admin = User( email="admin@compass.com", experience=10, group="admin", - programtype=[programs.ECONOMIC.value, programs.DOMESTIC.value, programs.COMMUNITY.value], + programtype=[programs.ECONOMIC, programs.DOMESTIC, programs.COMMUNITY], created_at=datetime.now(), - usertype=roles.ADMIN.value, + usertype=roles.ADMIN, ) newUser = User( @@ -50,9 +50,9 @@ newUser = User( email="new@compass.com", experience=1, group="volunteer", - programtype=[programs.ECONOMIC.value], + programtype=[programs.ECONOMIC], created_at=datetime.now(), - usertype=roles.VOLUNTEER.value + usertype=roles.VOLUNTEER ) users = [volunteer, employee, admin]