mirror of
https://github.com/cssgunc/compass.git
synced 2025-04-09 14:00:15 -04:00
Fix bugs regarding service test data insertion
This commit is contained in:
parent
a107337737
commit
f4f816b94c
|
@ -8,20 +8,24 @@ from backend.models.service_model import Service
|
||||||
from backend.models.user_model import User
|
from backend.models.user_model import User
|
||||||
from backend.entities.service_entity import ServiceEntity
|
from backend.entities.service_entity import ServiceEntity
|
||||||
from backend.models.enum_for_models import ProgramTypeEnum, UserTypeEnum
|
from backend.models.enum_for_models import ProgramTypeEnum, UserTypeEnum
|
||||||
from backend.services.exceptions import ServiceNotFoundException, ProgramNotAssignedException
|
from backend.services.exceptions import (
|
||||||
|
ServiceNotFoundException,
|
||||||
|
ProgramNotAssignedException,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ServiceService:
|
class ServiceService:
|
||||||
|
|
||||||
def __init__(self, session: Session = Depends(db_session)):
|
def __init__(self, session: Session = Depends(db_session)):
|
||||||
self._session = session
|
self._session = session
|
||||||
|
|
||||||
def get_service_by_program(self, program: ProgramTypeEnum) -> list[Service]:
|
def get_service_by_program(self, program: ProgramTypeEnum) -> list[Service]:
|
||||||
"""Service method getting services belonging to a particular program."""
|
"""Service method getting services belonging to a particular program."""
|
||||||
query = select(ServiceEntity).filter(ServiceEntity.program == program)
|
query = select(ServiceEntity).filter(ServiceEntity.program == program)
|
||||||
entities = self._session.scalars(query)
|
entities = self._session.scalars(query)
|
||||||
|
|
||||||
return [entity.to_model() for entity in entities]
|
return [entity.to_model() for entity in entities]
|
||||||
|
|
||||||
def get_service_by_id(self, id: int) -> Service:
|
def get_service_by_id(self, id: int) -> Service:
|
||||||
"""Service method getting services by id."""
|
"""Service method getting services by id."""
|
||||||
query = select(ServiceEntity).filter(ServiceEntity.id == id)
|
query = select(ServiceEntity).filter(ServiceEntity.id == id)
|
||||||
|
@ -39,14 +43,15 @@ class ServiceService:
|
||||||
for program in programs:
|
for program in programs:
|
||||||
query = select(ServiceEntity).filter(ServiceEntity.program == program)
|
query = select(ServiceEntity).filter(ServiceEntity.program == program)
|
||||||
entities = self._session.scalars(query)
|
entities = self._session.scalars(query)
|
||||||
all.append(entities)
|
services.append(entities)
|
||||||
return [service.to_model() for service in services]
|
return [service.to_model() for service in services]
|
||||||
|
|
||||||
|
|
||||||
def get_all(self, subject: User) -> list[Service]:
|
def get_all(self, subject: User) -> list[Service]:
|
||||||
"""Service method retrieving all of the services in the table."""
|
"""Service method retrieving all of the services in the table."""
|
||||||
if subject.role != UserTypeEnum.ADMIN:
|
if subject.role != UserTypeEnum.ADMIN:
|
||||||
raise ProgramNotAssignedException(f"User is not {UserTypeEnum.ADMIN}, cannot get all")
|
raise ProgramNotAssignedException(
|
||||||
|
f"User is not {UserTypeEnum.ADMIN}, cannot get all"
|
||||||
|
)
|
||||||
|
|
||||||
query = select(ServiceEntity)
|
query = select(ServiceEntity)
|
||||||
entities = self._session.scalars(query).all()
|
entities = self._session.scalars(query).all()
|
||||||
|
@ -56,23 +61,29 @@ class ServiceService:
|
||||||
def create(self, subject: User, service: Service) -> Service:
|
def create(self, subject: User, service: Service) -> Service:
|
||||||
"""Creates/adds a service to the table."""
|
"""Creates/adds a service to the table."""
|
||||||
if subject.role != UserTypeEnum.ADMIN:
|
if subject.role != UserTypeEnum.ADMIN:
|
||||||
raise ProgramNotAssignedException(f"User is not {UserTypeEnum.ADMIN}, cannot create service")
|
raise ProgramNotAssignedException(
|
||||||
|
f"User is not {UserTypeEnum.ADMIN}, cannot create service"
|
||||||
|
)
|
||||||
|
|
||||||
service_entity = ServiceEntity.from_model(service)
|
service_entity = ServiceEntity.from_model(service)
|
||||||
self._session.add(service_entity)
|
self._session.add(service_entity)
|
||||||
self._session.commit()
|
self._session.commit()
|
||||||
return service_entity.to_model()
|
return service_entity.to_model()
|
||||||
|
|
||||||
def update(self, subject: User, service: Service) -> Service:
|
def update(self, subject: User, service: Service) -> Service:
|
||||||
"""Updates a service if in the table."""
|
"""Updates a service if in the table."""
|
||||||
if subject.role != UserTypeEnum.ADMIN:
|
if subject.role != UserTypeEnum.ADMIN:
|
||||||
raise ProgramNotAssignedException(f"User is not {UserTypeEnum.ADMIN}, cannot update service")
|
raise ProgramNotAssignedException(
|
||||||
|
f"User is not {UserTypeEnum.ADMIN}, cannot update service"
|
||||||
|
)
|
||||||
|
|
||||||
service_entity = self._session.get(ServiceEntity, service.id)
|
service_entity = self._session.get(ServiceEntity, service.id)
|
||||||
|
|
||||||
if service_entity is None:
|
if service_entity is None:
|
||||||
raise ServiceNotFoundException("The service you are searching for does not exist.")
|
raise ServiceNotFoundException(
|
||||||
|
"The service you are searching for does not exist."
|
||||||
|
)
|
||||||
|
|
||||||
service_entity.name = service.name
|
service_entity.name = service.name
|
||||||
service_entity.status = service.status
|
service_entity.status = service.status
|
||||||
service_entity.summary = service.summary
|
service_entity.summary = service.summary
|
||||||
|
@ -90,7 +101,9 @@ class ServiceService:
|
||||||
service_entity = self._session.get(ServiceEntity, service.id)
|
service_entity = self._session.get(ServiceEntity, service.id)
|
||||||
|
|
||||||
if service_entity is None:
|
if service_entity is None:
|
||||||
raise ServiceNotFoundException("The service you are searching for does not exist.")
|
raise ServiceNotFoundException(
|
||||||
|
"The service you are searching for does not exist."
|
||||||
|
)
|
||||||
|
|
||||||
self._session.delete(service_entity)
|
self._session.delete(service_entity)
|
||||||
self._session.commit()
|
self._session.commit()
|
||||||
|
|
|
@ -4,7 +4,7 @@ import pytest
|
||||||
from sqlalchemy import Engine, create_engine, text
|
from sqlalchemy import Engine, create_engine, text
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from sqlalchemy.exc import OperationalError
|
from sqlalchemy.exc import OperationalError
|
||||||
from .services import user_test_data, tag_test_data
|
from .services import user_test_data, tag_test_data, service_test_data
|
||||||
|
|
||||||
from ..database import _engine_str
|
from ..database import _engine_str
|
||||||
from ..env import getenv
|
from ..env import getenv
|
||||||
|
@ -56,5 +56,6 @@ def session(test_engine: Engine):
|
||||||
def setup_insert_data_fixture(session: Session):
|
def setup_insert_data_fixture(session: Session):
|
||||||
user_test_data.insert_fake_data(session)
|
user_test_data.insert_fake_data(session)
|
||||||
tag_test_data.insert_fake_data(session)
|
tag_test_data.insert_fake_data(session)
|
||||||
|
service_test_data.insert_fake_data(session)
|
||||||
session.commit()
|
session.commit()
|
||||||
yield
|
yield
|
||||||
|
|
|
@ -2,19 +2,21 @@ import pytest
|
||||||
|
|
||||||
from ...services import ServiceService
|
from ...services import ServiceService
|
||||||
from .fixtures import service_svc
|
from .fixtures import service_svc
|
||||||
|
from ...models.service_model import Service
|
||||||
from ...models.enum_for_models import ProgramTypeEnum
|
from ...models.enum_for_models import ProgramTypeEnum
|
||||||
|
|
||||||
from . import user_test_data
|
from . import user_test_data
|
||||||
from . import service_test_data
|
from . import service_test_data
|
||||||
from ...services.exceptions import ServiceNotFoundException, ProgramNotAssignedException
|
from ...services.exceptions import ServiceNotFoundException, ProgramNotAssignedException
|
||||||
|
|
||||||
|
|
||||||
def test_get_all(service_svc: ServiceService):
|
def test_get_all(service_svc: ServiceService):
|
||||||
service = service_svc.get_all(user_test_data.admin)
|
service = service_svc.get_all(user_test_data.admin)
|
||||||
assert len(service) == len(service_test_data.services)
|
assert len(service) == len(service_test_data.services)
|
||||||
|
|
||||||
|
|
||||||
def test_get_by_id(service_svc: ServiceService):
|
def test_get_by_id(service_svc: ServiceService):
|
||||||
if service_test_data.service_1.id != None:
|
if service_test_data.service_1.id != None:
|
||||||
service = service_svc.get_service_by_id(service_test_data.service_1.id)
|
service = service_svc.get_service_by_id(service_test_data.service_1.id)
|
||||||
assert service.id == service_test_data.service_1.id
|
assert service.id == service_test_data.service_1.id
|
||||||
|
|
||||||
|
@ -47,7 +49,9 @@ def test_update(service_svc: ServiceService):
|
||||||
|
|
||||||
def test_update_not_found(service_svc: ServiceService):
|
def test_update_not_found(service_svc: ServiceService):
|
||||||
with pytest.raises(ServiceNotFoundException):
|
with pytest.raises(ServiceNotFoundException):
|
||||||
service = service_svc.update(user_test_data.admin, service_test_data.new_service)
|
service = service_svc.update(
|
||||||
|
user_test_data.admin, service_test_data.new_service
|
||||||
|
)
|
||||||
pytest.fail()
|
pytest.fail()
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,4 +64,4 @@ def test_delete(service_svc: ServiceService):
|
||||||
def test_delete_not_found(service_svc: ServiceService):
|
def test_delete_not_found(service_svc: ServiceService):
|
||||||
with pytest.raises(ServiceNotFoundException):
|
with pytest.raises(ServiceNotFoundException):
|
||||||
service_svc.delete(user_test_data.admin, service_test_data.service_7)
|
service_svc.delete(user_test_data.admin, service_test_data.service_7)
|
||||||
pytest.fail()
|
pytest.fail()
|
||||||
|
|
|
@ -1,88 +1,89 @@
|
||||||
import pytest
|
import pytest
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from backend.entities.service_entity import ServiceEntity
|
|
||||||
from backend.models.service_model import Service
|
from ...entities import ServiceEntity
|
||||||
from backend.models.enum_for_models import ProgramTypeEnum
|
from ...models.enum_for_models import ProgramTypeEnum
|
||||||
|
from ...models.service_model import Service
|
||||||
|
|
||||||
service_1 = Service(
|
service_1 = Service(
|
||||||
id = 1,
|
id=1,
|
||||||
name = "service 1",
|
name="service 1",
|
||||||
status= "open",
|
status="open",
|
||||||
summary= "presentation educating community on domestic violence",
|
summary="presentation educating community on domestic violence",
|
||||||
requirements= [""],
|
requirements=[""],
|
||||||
program= ProgramTypeEnum.COMMUNITY
|
program=ProgramTypeEnum.COMMUNITY,
|
||||||
)
|
)
|
||||||
|
|
||||||
service_2 = Service(
|
service_2 = Service(
|
||||||
id = 2,
|
id=2,
|
||||||
name = "service 2",
|
name="service 2",
|
||||||
status= "closed",
|
status="closed",
|
||||||
summary= "service finding safe places to stay",
|
summary="service finding safe places to stay",
|
||||||
requirements= [""],
|
requirements=[""],
|
||||||
program= ProgramTypeEnum.DOMESTIC
|
program=ProgramTypeEnum.DOMESTIC,
|
||||||
)
|
)
|
||||||
|
|
||||||
service_3 = Service(
|
service_3 = Service(
|
||||||
id = 3,
|
id=3,
|
||||||
name = "service 3",
|
name="service 3",
|
||||||
status= "open",
|
status="open",
|
||||||
summary= "",
|
summary="",
|
||||||
requirements= [""],
|
requirements=[""],
|
||||||
program= ProgramTypeEnum.DOMESTIC
|
program=ProgramTypeEnum.DOMESTIC,
|
||||||
)
|
)
|
||||||
|
|
||||||
service_4 = Service(
|
service_4 = Service(
|
||||||
id = 4,
|
id=4,
|
||||||
name = "service 4",
|
name="service 4",
|
||||||
status= "waitlist",
|
status="waitlist",
|
||||||
summary= "community event",
|
summary="community event",
|
||||||
requirements= [""],
|
requirements=[""],
|
||||||
program= ProgramTypeEnum.COMMUNITY
|
program=ProgramTypeEnum.COMMUNITY,
|
||||||
)
|
)
|
||||||
|
|
||||||
service_5 = Service(
|
service_5 = Service(
|
||||||
id = 5,
|
id=5,
|
||||||
name = "service 5",
|
name="service 5",
|
||||||
status= "open",
|
status="open",
|
||||||
summary= "talk circle for victims of domestic violence",
|
summary="talk circle for victims of domestic violence",
|
||||||
requirements= ["18+"],
|
requirements=["18+"],
|
||||||
program= ProgramTypeEnum.COMMUNITY
|
program=ProgramTypeEnum.COMMUNITY,
|
||||||
)
|
)
|
||||||
|
|
||||||
service_6 = Service(
|
service_6 = Service(
|
||||||
id = 6,
|
id=6,
|
||||||
name = "service 6",
|
name="service 6",
|
||||||
status= "waitlist",
|
status="waitlist",
|
||||||
summary= "program offering economic assistance",
|
summary="program offering economic assistance",
|
||||||
requirements= [""],
|
requirements=[""],
|
||||||
program= ProgramTypeEnum.ECONOMIC
|
program=ProgramTypeEnum.ECONOMIC,
|
||||||
)
|
)
|
||||||
|
|
||||||
service_6_edit = Service(
|
service_6_edit = Service(
|
||||||
id = 6,
|
id=6,
|
||||||
name = "service 6",
|
name="service 6",
|
||||||
status= "open",
|
status="open",
|
||||||
summary= "program offering economic assistance",
|
summary="program offering economic assistance",
|
||||||
requirements= ["18+"],
|
requirements=["18+"],
|
||||||
program= ProgramTypeEnum.ECONOMIC
|
program=ProgramTypeEnum.ECONOMIC,
|
||||||
)
|
)
|
||||||
|
|
||||||
service_7 = Service(
|
service_7 = Service(
|
||||||
id = 7,
|
id=7,
|
||||||
name = "service 7",
|
name="service 7",
|
||||||
status= "waitlist",
|
status="waitlist",
|
||||||
summary= "insert generic description",
|
summary="insert generic description",
|
||||||
requirements= [""],
|
requirements=[""],
|
||||||
program= ProgramTypeEnum.ECONOMIC
|
program=ProgramTypeEnum.ECONOMIC,
|
||||||
)
|
)
|
||||||
|
|
||||||
new_service = Service(
|
new_service = Service(
|
||||||
id = 8,
|
id=8,
|
||||||
name = "new service",
|
name="new service",
|
||||||
status= "open",
|
status="open",
|
||||||
summary= "insert other generic description",
|
summary="insert other generic description",
|
||||||
requirements= [""],
|
requirements=[""],
|
||||||
program= ProgramTypeEnum.DOMESTIC
|
program=ProgramTypeEnum.DOMESTIC,
|
||||||
)
|
)
|
||||||
|
|
||||||
services = [service_1, service_2, service_3, service_4, service_5, service_6]
|
services = [service_1, service_2, service_3, service_4, service_5, service_6]
|
||||||
|
@ -115,7 +116,6 @@ def reset_table_id_seq(
|
||||||
|
|
||||||
def insert_fake_data(session: Session):
|
def insert_fake_data(session: Session):
|
||||||
"""Inserts fake organization data into the test session."""
|
"""Inserts fake organization data into the test session."""
|
||||||
|
|
||||||
global services
|
global services
|
||||||
|
|
||||||
# Create entities for test organization data
|
# Create entities for test organization data
|
||||||
|
@ -130,14 +130,3 @@ def insert_fake_data(session: Session):
|
||||||
|
|
||||||
# Commit all changes
|
# Commit all changes
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(autouse=True)
|
|
||||||
def fake_data_fixture(session: Session):
|
|
||||||
"""Insert fake data the session automatically when test is run.
|
|
||||||
Note:
|
|
||||||
This function runs automatically due to the fixture property `autouse=True`.
|
|
||||||
"""
|
|
||||||
insert_fake_data(session)
|
|
||||||
session.commit()
|
|
||||||
yield
|
|
|
@ -71,7 +71,7 @@ toDelete = User(
|
||||||
group="none",
|
group="none",
|
||||||
program=[programs.COMMUNITY],
|
program=[programs.COMMUNITY],
|
||||||
created_at=datetime.now(),
|
created_at=datetime.now(),
|
||||||
role=roles.VOLUNTEER
|
role=roles.VOLUNTEER,
|
||||||
)
|
)
|
||||||
|
|
||||||
users = [volunteer, employee, admin, toDelete]
|
users = [volunteer, employee, admin, toDelete]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user