Fix type errors for enum, Tests passing

This commit is contained in:
emmalynf 2024-04-13 15:53:41 -04:00
parent 012f941da7
commit 4259e26a9c
5 changed files with 21 additions and 22 deletions

View File

@ -1,7 +1,7 @@
""" Defines the table for storing users """ """ Defines the table for storing users """
# Import our mapped SQL types from SQLAlchemy # 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 # Import mapping capabilities from the SQLAlchemy ORM
@ -19,6 +19,7 @@ from datetime import datetime
# Import enums for Role and Program # Import enums for Role and Program
from .program_enum import ProgramEnum from .program_enum import ProgramEnum
from .user_enum import RoleEnum from .user_enum import RoleEnum
from ..models.enum_for_models import UserTypeEnum, ProgramTypeEnum
#Import models for User methods #Import models for User methods
from ..models.user_model import User from ..models.user_model import User
@ -36,9 +37,9 @@ class UserEntity(EntityBase):
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True) id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.now) created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.now)
username: Mapped[str] = mapped_column(String(32), nullable=False, default="", unique=True ) 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) 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) experience: Mapped[int] = mapped_column(Integer, nullable=False)
group: Mapped[str] = mapped_column(String(50)) group: Mapped[str] = mapped_column(String(50))

View File

@ -12,6 +12,6 @@ class User(BaseModel):
email: str = Field(..., description="The e-mail of the user") email: str = Field(..., description="The e-mail of the user")
experience: int = Field(..., description="Years of Experience of the User") experience: int = Field(..., description="Years of Experience of the User")
group: str group: str
programtype: List[str] programtype: List[ProgramTypeEnum]
usertype: str usertype: UserTypeEnum
created_at: Optional[datetime] created_at: Optional[datetime]

View File

@ -52,7 +52,8 @@ class UserService:
""" """
try: try:
user_entity = self.get_user_by_id(user.id) user_model = self.get_user_by_id(user.id)
return user_model
except: except:
# if does not exist, create new object # if does not exist, create new object
user_entity = UserEntity.from_model(user) user_entity = UserEntity.from_model(user)

View File

@ -17,9 +17,10 @@ def test_create(user_svc: UserService):
assert user1 is not None assert user1 is not None
assert user1.id 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""" """Test creating a user with id conflict"""
user1 = user_svc.create(volunteer) user1 = user_svc.create(volunteer)
assert user1 is not None assert user1 is not None
assert user1.id is not None assert user1.id is not None
@ -29,19 +30,15 @@ def test_get_all(user_svc: UserService):
users = user_svc.all() users = user_svc.all()
assert len(users) == 3 assert len(users) == 3
def test_get_user_by_id(user_svc: UserService): def test_get_user_by_id(user_svc: UserService):
"""Test getting a user by an id""" """Test getting a user by an id"""
user = user_svc.get_user_by_id(volunteer.id) user = user_svc.get_user_by_id(volunteer.id)
assert user is not None assert user is not None
assert user.id is not None assert user.id is not None
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(5)

View File

@ -17,9 +17,9 @@ volunteer = User(
email="volunteer@compass.com", email="volunteer@compass.com",
experience=1, experience=1,
group="volunteers", group="volunteers",
programtype=[programs.COMMUNITY.value], programtype=[programs.COMMUNITY],
created_at=datetime.now(), created_at=datetime.now(),
usertype=UserTypeEnum.VOLUNTEER.value usertype=UserTypeEnum.VOLUNTEER
) )
employee = User( employee = User(
@ -28,9 +28,9 @@ employee = User(
email="employee@compass.com", email="employee@compass.com",
experience=5, experience=5,
group="employees", group="employees",
programtype=[programs.DOMESTIC.value, programs.ECONOMIC.value], programtype=[programs.DOMESTIC, programs.ECONOMIC],
created_at=datetime.now(), created_at=datetime.now(),
usertype=roles.EMPLOYEE.value, usertype=roles.EMPLOYEE,
) )
admin = User( admin = User(
@ -39,9 +39,9 @@ admin = User(
email="admin@compass.com", email="admin@compass.com",
experience=10, experience=10,
group="admin", group="admin",
programtype=[programs.ECONOMIC.value, programs.DOMESTIC.value, programs.COMMUNITY.value], programtype=[programs.ECONOMIC, programs.DOMESTIC, programs.COMMUNITY],
created_at=datetime.now(), created_at=datetime.now(),
usertype=roles.ADMIN.value, usertype=roles.ADMIN,
) )
newUser = User( newUser = User(
@ -50,9 +50,9 @@ newUser = User(
email="new@compass.com", email="new@compass.com",
experience=1, experience=1,
group="volunteer", group="volunteer",
programtype=[programs.ECONOMIC.value], programtype=[programs.ECONOMIC],
created_at=datetime.now(), created_at=datetime.now(),
usertype=roles.VOLUNTEER.value usertype=roles.VOLUNTEER
) )
users = [volunteer, employee, admin] users = [volunteer, employee, admin]