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 """
# 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))

View File

@ -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]

View File

@ -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)

View File

@ -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)

View File

@ -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]